TIL 18 | Home Server

ElenaPark·2021년 3월 8일
0

WEB

목록 보기
2/2

Router (공유기)

휴대폰으로 서로 통신하기 위해서는 전화번호가 필요한 것처럼, 컴퓨터끼리 통신하기 위해서는 IP주소가 필요하다.

많이 사용되고있는 IPv4 주소는 약 42억개의 IP 주소 표현이 가능하지만, 이미 많이 부족해진 상황이다.
새로 등장한 IPv6 주소 체계에서는 IPv4보다 훨씬 많은 주소를 표현할 수 있지만, 주소를 바꾸는 것은 쉽지 않은 일이므로 기존의 주소체계인 IPv4를 아껴서 써야한다는 의견이 나왔다.

바로 그 노력 중 하나가 공유기(라우터)의 등장이다.

공유기를 사용하면 하나의 IP주소를 여러 대의 컴퓨터가 나누어쓸 수 있다.

  • 즉, 부족한 IP주소를 아껴쓸 수 있고,
  • 개인의 통신요금 또한 절약이 가능하다.

하지만 공유기에 연결된 컴퓨터에 서버를 설치해서 운영하는 것은 쉽지 않은 일이다.

일반적인 인터넷 이용:
인터넷 통신사와 계약, 회선을 받아서 - 케이블 또는 와이파이를 연결한다. 이 때 연결된 컴퓨터에는 자동으로 IP주소가 부여된다.

노트북이나 휴대폰 등 다른 컴퓨터 기기가 늘어난다면?:
통신사와 회선 추가 계약? NO
통신사와는 하나의 회선 그대로 사용하고, 공유기를 구매하여 연결한다.

  • WAN - 통신사에서 받은 케이블 연결
    이렇게 공유기에 회선을 연결하게되면 사용자가 기존에 통신사로부터 받은 IP주소는 공유기의 주소가 된다.
  • LAN - 모든 기기 연결 (휴대폰의 경우 안테나를 통해 와이파이 접속이 가능, 본질적으로 동일하다.)
  • 광역 네트워크 (WAN:Wide Area Network의 약자) : 공유기 자체는 전세계의 인터넷이라는 광역 네트워크에 묶여있다.
  • 지역 네트워크 (LAN:Local Area Network의 약자): 공유기를 중심으로 모든 기기가 같은 지역 네트워크에 묶여있다.

즉, 공유기는 WAN 네트워크와 LAN 네트워크의 일종의 중개자 역할을 담당하며 Router라고 불린다.

노트북이나 휴대폰 등 기기들이 공유기에 연결되는 순간 각 기기들은 IP주소를 부여받는다. 기기들 뿐만 아니라 공유기 자체에도 IP주소가 부여된다.

여기서 공유기에 부여되는 IP주소는 Gateway address or Router addres라는 이름을 가지는 특수한 IP주소이다.

  • 공용 IP주소(Public IP Address): WAN 네트워크에는 공유기로 접속할 수 있게 해주는 IP를 가지고 있는데 전세계 누구나 접근 가능하다는 의미에서 공용 IP(public IP address)라고 한다.
  • 사설 IP주소(Private IP Address) : 공유기 내 IP주소들은 사설 IP라고 한다.

NAT (Network Address Translation)

이 기술 덕분에 사설 IP를 쓰는 각 컴퓨터들이 외부의 인터넷에 접속할 수 있게 된다.

위의 예시처럼 공용 IP가 아닌, 사설 IP를 쓰는 기기인 192.168.0.4가 위키피디아를 접속하게 되면 어떻게 될까?

우선 사용자가 이용하는 컴퓨터는 무조건 Gateway address(또는 Router address)에 해당되는 IP의 기기인 공유기에게 신호를 보낸다. 이렇게 공유기는 신호를 받고나서 만약 그 요청이 지역네트워크 내부로의 요청이라면 바로 내부 네트워크의 다른 기기로 요청을 보내지만, 여기서는 WAN을 통해 외부로 요청을 넘긴다.

이렇게 외부로 보내기 전 공유기는 2가지 작업을 한다.

  • 위키피디아에 접속하려는 요청은 192.168.0.4라는 IP를 가진 기기의 요청이라는 것을 기록해 둔다.
  • 요청을 한 기기의 IP는 사설 IP로 외부에서 접근할 수 없으므로 192.168.0.4라는 IP를 59.6.66.238이라는 공용 IP주소로 변환한다.

위키피디아는 그렇게 받은 요청으로 특정 작업을 처리하고 59.6.66.238의 IP주소에 응답을 해준다. 이 공유기는 그렇게 응답받은 정보를 보고 192.168.0.4가 요청했었던 정보라는 것을 파악한 후 응답을 전달해준다.

위의 일련의 내용들은, 우리가 사설 IP주소를 가진 컴퓨터를 '클라이언트'로 사용했을 때 NAT 동작 방법을 알아본 것이다. 그렇다면, 동일한 컴퓨터를 '서버'로 사용하는 경우에는 NAT를 어떻게 동작할까?

PORT

외부의 불특정한 사용자가 접속하여 내 사설 IP를 가지는 기기를 서버로서 이용하기 위해 접근하려면 어떻게 해야 할까?

현재 상태로는 공용 IP로 접속을 한다 하더라도, 지역 네트워크 기기들 중 구체적으로 어떤 사설 IP 기기에 접근을 원하는지 알 수 없으므로 접근이 불가하다.

따라서 외부에서 접근을 하게되면 어떤 서버를 응답하게 할 것인지 공유기가 연결해주는 방법을 알아야 한다.

단어 PORT의 뜻은 항구로서, 항구의 배들은 모두 각자의 번호를 가지고 질서를 지키며 정박해있다. 비슷하게 컴퓨터에도 PORT의 개념이 있다.

하나의 컴퓨터에는 여러가지 형태의 서버가 많이 설치되어있을 수 있다.

이렇듯, 우리가 특정 컴퓨터에 접속했을 때, 그 컴퓨터에는 여러 서버가 있는데, 그 서버를 어떻게 식별할까?

이 때 포트 번호를 이용하여 우리가 여러개의 서버 중에서 누구와 상호작용할 것인지를 컴퓨터에게 알려줘야 한다.

  • 포트는 약 6만 5천개가 있다.
  • 포트 중 0번~1023번까지는 예약된 포트(Well-known port)로서 사용자가 마음대로 사용할 수 없다.
  • 만약 우리가 웹 서버를 설치하면 80번 포트에 연결되도록 약속되어있다.
  • 웹 서버를 두개를 설치한다면?
    이미 80번 포트가 차지되어져있기 때문에 다른 포트를 써야하는데, 관습적으로 8000번이나 8080포트에 설치한다.
  • 이외에는 1023번~65535번 포트 내에서 비어있는 포트와 연결하면 된다.

이렇게 두 개의 웹서버가 설치되어있는 상황에서 만약 http://opentutorials.org 사이트에 접속하고 싶다면 이 사이트는 80번 포트에 연결이 된다. 이유는 http로 통신하겠다고 하면 컴퓨터는 이 접속을 80번 포트에 연결시키기 때문이다.
이 상황에서 만약 8080번 포트를 리스닝하고있는 서버에 접속하고 싶다면, 주소창에 주소를http://opentutorials.org:8080의 형태로 적어야 한다.

PORT FORWARDING

포트포워딩?
외부에서 접근하는 사용자에게는 공용 IP주소를 알려주면서, 사용자들이 그 주소로 접속했을 때에는 웹 서버를 설치한 사설 IP주소 기기로 바로 접속되게 하는 것을 의미

예시에서의 공용 IP : 59.6.66.236
웹 서버가 설치된 사설 IP : 192.168.0.4

위 예시는, 외부 사용자가 공용 IP인 59.6.66.236에 8081번 포트로 들어오게 될 경우, 공유기가 내부 사설 IP주소를 가진 기기인 192.168.0.4의 80번 포트로 보내버리는 과정을 의미한다. 이 작업은 공유기 환경을 설정함으로써 가능하다.

Dynamic VS Static IP Address

Dynamic IP Address

부족한 IP주소 문제를 보완하기 위해 도입된 여러 방법 중 하나의 방법인 유동적 IP주소 체계(Dynamic IP Address).
유동 IP: 우리에게 주어진 IP가 계속 변경됨.

이러한 Dynamic IP주소 체계에서 ISP(Internet Service Provider) 즉, 인터넷 통신사들은, 사용자가 오랫동안 인터넷을 이용하지 않을 경우 새로운 가입자에게 기존 사용자의 IP주소를 부여한다.

이때 만약 기존 사용자가 다시 인터넷을 사용한다면
ISP는 기존 사용자에게 다시금 새로운 IP 주소를 부여한다.
이렇게 IP 주소를 임대하면서 수많은 가입자들에게 돌려막기(?) 식으로 IP주소를 제공하는 것과 동일하다고 볼 수 있다.

유동 IP주소 체계의 문제점
만약 기존 사용자가 자신의 컴퓨터를 웹 서버와 같이 서버를 설치한 상황이라면, 이미 외부에 전달했던 공용 IP주소를 이용하는 소비자가 엉뚱한 곳에 접속될 수 있다는 문제점이 발생한다.

Static IP Address

반대로 우리의 컴퓨터가 IP주소를 독점적으로 사용할 수 있도록 고정시키는 주소 체계를 의미한다.

DHCP (Dynamic Host Configuration Protocol)

인터넷과 연결하였을 때, 사용자는 자신의 IP주소를 직접 지정할 수도 있으나, 현실에서 직접 지정하는 일은 잘 없다.

컴퓨터를 공유기와 연결하면, 그 순간에 각 기기에는 동적으로 IP주소와 DNS, 서브넷, Gateway Address와 같은 것들이 자동으로 설정된다.

그것을 가능하게 하는 것이 바로 DHCP 서버라는 것인데, 보통 공유기는 DHCP 서버를 내장하고 있다. 동시에, 각 기기에는 DHCP 클라이언트라는 프로그램이 깔려진다.

  • 위와 같이 DHCP 클라이언트가 DHCP 서버에게 MAC 식별자를 전달하면서, IP주소를 할당해줄 것을 요청한다.
  • DHCP 서버가 DHCP 클라이언트에게 IP주소를 특정시간동안 할당하는 것으로 응답한다.
  • DHCP 클라이언트가 해당 IP주소를 이용하기로 한다면, DHCP 서버는 라우터 내부에 그것을 기록해둔다.

=> 이러한 메커니즘을 통해 공유기에 연결한 후 IP가 각 기기들에 자동으로 부여되는 것이다.

MAC 식별자 (MAC Address) : 우리가 사용하는 통신 부품들은 각각 공장에서 기록된 고유한 식별자를 가지고 있다. ex) 8c:85:90:0c:e3:cc 등의 형태

참고자료

생활코딩 WEB2 - Home Server

profile
Front-end 개발자입니다.

0개의 댓글