Posts 내 컴퓨터와 인터넷은 어떻게 연결되는 것일까?
Post
Cancel

내 컴퓨터와 인터넷은 어떻게 연결되는 것일까?

본 포스팅은 생활코딩의 영상내용을 참고하여 작성하였습니다.

공유기 (router)

집집마다 있는 공유기를 전문 용어로 라우터라고 합니다.

우리가 인터넷을 사용하기 위해서는 통신사를 통해 배선을 계약합니다. 이 때 이 선을 컴퓨터나 기타 장치에 꽂게 되면 59.6.66.238과 같은 IP 주소가 자동으로 할당되게 됩니다. 이 컴퓨터말고 다른 장치에서 인터넷을 사용하기 위해서는 서로 다른 배선을 계약을 해야 하는데 비용 문제가 발생합니다.

따라서 우리는 공유기를 사용하게 되는데 방금 꽂은 그 선을 컴퓨터가 아닌 공유기의 WAN 포트에 꽂게 됩니다. 그렇게 되면 59.6.66.238은 공유기의 IP 주소가 됩니다. 이제 다른 장치를 공유기의 LAN 포트에 연결하면 공유기는 각 장치에 192.168.0.2와 같은 형식의 IP주소를 할당해줍니다.

동시에 공유기 또한 네트워크를 사용하는 장치이기 때문에 앞서 할당받은 IP외에 192.168.0.1 IP 주소를 추가로 자신에게 할당합니다. 이 때 이 주소를 Gateway address 또는 Router address라고 합니다. 여기서 59.6.66.238은 공인(public) IP이고 192.168.0.2는 사설(private) IP입니다.

즉, 공인 IP를 사용하여 WAN으로 전 세계와 통신하고 지역 내에서는 사설 IP를 사용하여 LAN으로 통신합니다.

image

아래는 사설 IP로 사용할 수 있는 IP의 범위를 나타낸 표 입니다. 각 주소 영역별로 할당할 수 있는 주소의 개수가 다르기 때문에 목적에 알맞는 주소를 선택합니다.

IP Class 구분사설 IP 대역할당 가능한 수
A class10.0.0.0 - 10.255.255.25516,777,216
B class172.16.0.0 - 172.31.255.2551,048,576
C class192.168.0.0 - 192.168.255.25565536

NAT (Network address translation)

내부 클라이언트 -> 외부 서버

공유기는 내부 클라이언트로부터 요청을 받아서 그 요청을 외부에 존재하는 서버에 전달합니다. 이를 위해서 공유기는 크게 두 가지 작업을 처리합니다.

첫 번째는 바로 외부 서버에 정보를 요청하고자 하는 클라이언트의 사설 IP 주소를 공유기가 내부적으로 기억하는 것입니다. 쉽게 말해서 누가 요청을 보냈는지 기록해두는 것입니다.

두 번째는 공인 IP를 사용하여 외부에 정보를 요청해 받아오는 것입니다. 사설 IP는 전세계적으로 동일한 대역을 사용하기 때문에 중복이 가능합니다. 때문에 사설 IP로 WAN에 직접 접근해버리면 돌아오는 길을 찾을 수 없기 때문에 응답을 제대로 받을 수 없습니다. 따라서 공유기가 갖고 있는 공인 IP를 사용하여 외부 서버와 통신해 공유기가 응답을 받아옵니다. 그리고 미리 기록해 두었던 클라이언트의 사설 IP로 받아온 응답을 클라이언트에 전달합니다.

정리하자면 NAT는 클라이언트의 사설 IP를 공유기가 갖고 있는 공인 IP로 바꾸어 외부와 통신하는 것입니다.

image

포트(port)

TCP/IP 네트워크에서 포트 번호는 들어오는 트래픽을 컴퓨터 내에서 실행되고 있는 적절한 프로그램에 분배시키기 위해 할당되는 숫자를 말합니다. 이것은 물리적인 플러그나 소켓이 아니며 논리적인 할당일 뿐입니다.

두 개의 컴퓨터간 네트워크를 이용한 통신시 발신지 컴퓨터에서 출발한 사용자 데이터(패킷)는 TCP/IP의 각 계층을 거치면서 최종적으로 목적지 주소(IP)를 가지고 있는 컴퓨터에 도착하게 됩니다. 패킷을 수신한 컴퓨터는 전송시에 사용되었던 주소필드를 제거하고, 패킷 안에 있는 데이터만을 응용프로그램에 넘겨줍니다. 수신측 컴퓨터에는 FTP, Mail, Telnet, SSH, Web 등 다양한 종류의 응용프로그램이 기동하고 있을 것입니다.

수신측 컴퓨터가 인터넷 계층에서 패킷을 수신한 후 응용층으로 데이터를 전달하려고 할 때, 컴퓨터내에 기동중인 많은 응용프로그램들 중 누구에게 데이터를 넘겨줄지 결정해야합니다. 이 때 운영체제는 응용프로그램의 논리적인 주소인 Port 번호라는 것을 이용합니다. 즉, 각각의 응용프로그램(서비스)에 유일한 논리적 주소인 Port 번호를 할당하여서, 전송계층에서 응용프로그램을 구분할 수 있도록 하고 있습니다.

  • 포트번호는 0~65536
  • 0~1024번은 특정 서비스에 사용될 수 있도록 미리 예약되어 있음. 이들을 Well-Known Port라고 한다.
    • ex) http: 80, https: 443, ssh: 22
    • 이러한 Well-Known 포트를 각 운영체제별로 services라는 파일로 저장함
  • 컴퓨터에 있는 웹 서버는 기본적으로 80번 포트와 연결되어 있음
    • 만약 웹 서버를 하나 더 사용하고 싶은 경우 Well-Known Port가 아닌 다른 포트에 연결해서 사용해야 함
    • 보통 관습적으로 8080 포트를 사용함

참고: ![https://memoweb.tistory.com/entry/포트의-개념과-본질-port]

포트 포워딩

외부 클라이언트 -> 내부 서버 서버로 사용하고 싶은 장치가 사설 IP주소를 사용하고 있다면 외부에서 바로 접근이 불가능합니다. 따라서 서버가 연결되어 있는 공유기의 공인 IP 주소를 통해 접근해야 하는데 문제는 공유기에 한 개의 장치만 연결되어 있지 않다는 것입니다. 한 개의 공인 IP주소를 통해 특정 서버에 접근하기 위해 공유기에서는 포트 포워딩이라는 기능을 제공합니다.

외부 클라이언트가 서버에 접근할 때 해당 서버의 공인 IP와 함께 특정 포트번호를 같이 넣어서 요청을 보냅니다. 그럼 해당 공인 IP를 사용하는 공유기는 요청을 받아 이를 내부에 존재하는 알맞은 서버에 전달해주어야 합니다. 때문에 요청받은 각 포트에 알맞는 규칙들을 미리 저장해두어야 하고 이를 포트 포워딩이라고 합니다.

image

예를 들면 59.6.66.238 공인 IP주소를 사용하는 공유기에 192.168.0.4 사설 IP주소를 갖고 있는 서버가 연결되어 있습니다. 외부 클라이언트는 이 서버에 접근하기 위해서 우선 59.6.66.238에 요청을 보내야 하는데 그 중에서도 192.168.0.4에 요청을 보내야 합니다. 그럼 https://59.6.66.238:8081 과 같은 방식으로 59.6.66.238 주소의 8081 포트에 요청을 전달합니다. 요청을 받는 공유기에는 8081 포트에 대한 요청이 들어올 경우 이를 192.168.0.4의 80번 포트에 전달하라는 내용이 포트포워딩 되어있습니다. 따라서 해당 요청을 받는다면 이를 192.168.0.4:80에 보냄으로서 외부 클라이언트의 요청을 내부 서버에 전달할 수 있습니다. image

DHCP (Dynamic Host Configuration Protocol)

자신의 장치에 IP주소를 직접 할당하는 일은 생각보다 복잡한 일입니다. DHCP라는 프로토콜은 네트워크에 접속하는 장치에게 자동으로 IP를 할당해 줍니다. 우리가 사용하는 공유기도 이러한 DHCP 기능을 제공합니다. 여기서 공유기는 DHCP Server 이고 IP를 할당받고자 하는 장치를 DHCP Client라 합니다.

모든 통신장치에는 MAC주소라 불리는 고유한 주소가 생산 공장으로부터 부여됩니다. 우리가 장치를 공유기에 연결하면 공유기는 DHCP를 통해 연결된 장치의 MAC주소를 기록하고 해당 MAC주소에 가용한 IP주소를 할당해줍니다. 시간을 정해두고 IP주소를 빌려주는 형식으로 유동 IP를 할당할 수도 있고 특정 MAC주소에 고정으로 IP주소를 할당해주는 방식도 가능합니다. image

마찬가지로 우리가 통신사로부터 제공받는 공인 IP 역시 통신사의 DHCP 서비스를 통해 제공받은 IP라 할 수 있습니다. 기본적으로 통신사로부터 유동 IP를 할당받지만 별도의 요금을 내면 고정 IP를 할당받을 수 있습니다.

This post is licensed under CC BY 4.0 by the author.