이미지 출처: 생활코딩 유튜브, WEB2-Home server-2.공유기
서버와 클라이언트가 있을 때 클라이언트가 서버에 요청을 하면, 서버가 요청한 정보를 응답해야하는데 그러기 위해서는 당연히 IP를 알아야한다.
이 IP 정보는 요청할 때 전달이 된다.
즉, 인터넷에 연결되어있는 컴퓨터들은 서로 정보를 주고 받아야하기 때문에 양쪽다 IP address를 필요로 하게 된다
이미지출처: 생활코딩 유튜브, WEB2-Home server-2.공유기
스마트폰이나 컴퓨터가 와이파이에 연결하는 순간에 자동으로 그 컴퓨터에는 ip주소가 부여되게 돼있다.
과거에는 컴퓨터가 한 대씩밖에 없어서 크게 문제가 되지 않았지만, 요즘은 스마트폰, 노트북 등 여러대가 접속해야한다.
이럴 경우 한 기기에 하나의 ip를 부여하기 위해 통신사와 각각 한 개씩의 회선을 계약하게 되면 비용이 크게 증가한다.
이런 문제를 해결하기 위해 통신사와는 하나의 회선을 계약하게 된다.
WAN(Wide Area Network) 선: 통신사와 계약하여 발급받은 ip주소는 공유기의 것이 된다.
WAN에 부여된 ip는 전세계 누구나 접속 가능하다는 의미에서 public ip address라고 한다.
LAN(Local Area Network) 선: 각각의 디바이스들이 연결된다. (wifi도 같은 맥락이다.)
연결되는 그 순간에 디바이스들은 ip를 부여받는다.
LAN안에서만 사용할 수 있는 ip를 일종의 회사의 내선번호같은 의미로, private ip address라고 한다.
WAN과 LAN사이에서 중계자같은 역할을 하는 것이 바로 공유기이다.
이 기술 덕분에 private ip를 사용하고 있는 각각의 컴퓨터들이 외부의 인터넷에 접속할 수 있게 된다.
어떤 디바이스에서 네이버에 접속한다고 하면, 디바이스는 게이트웨이 어드레스에 해댱하는 ip의 공유기에 신호를 보낸다.
그런데 네이버는 내부 네트워크안에 있는 요청이 아니다.
그렇기 때문에 공유기는 WAN을 통해서 외부로 보내야한다.
이를 위해 두 가지 작업을 한다.
이때 네이버는 다시 public IP address에 응답하게 된다.
그리고 1.에서 기록한 정보를 가지고 해당 디바이스에 응답한다.
이 과정을 통해서 private IP address를 가지고 있는 디바이스가 외부 세계와 통신할 수 있게 된다.
Port:
하나의 컴퓨터에는 여러 개의 서버가 있을 수 있다.
그 서버를 식별하기 위해서 사용하는 것이 포트이다.
Well-known-port:
예약된 포트로, 0번부터 65535번의 포트 중 0번부터 1023번까지의 포트를 말한다.
22: SSH, 80: http 등이 그 예다.
Port Forwarding:
포트 포워딩(port forwarding)은 컴퓨터 네트워크에서 패킷이 라우터와 같은 네트워크 게이트웨이를 가로지르는 동안 하나의 IP 주소와 포트 번호 결합의 통신 요청을 다른 곳으로 넘겨주는 네트워크 주소 변환(NAT)의 응용이다.