네트워크 기초: 케이블에서 브라우저까지 · 3편

인터넷 계층 (IP) - 주소를 보고 길을 찾는다

수많은 네트워크를 건너 목적지 호스트까지 어떻게 가는가? 계층적 주소인 IP, 홉마다 다음 길을 정하는 라우팅, 그리고 도착을 약속하지 않는 최선형 설계.

지난 편 복습

2편의 핵심은 링크 계층의 책임 범위였다. MAC 주소는 장비를 고유하게 식별하지만 위치 정보가 없는 평면 주소라서, 링크 계층은 같은 네트워크 안의 한 홉만 배달할 수 있다.

이번 편의 질문은 그 다음이다. 수많은 네트워크를 건너, 목적지 호스트까지 어떻게 가는가?

IP 주소: 위치를 담은 계층적 주소

IP 주소는 32비트(IPv4) 값으로, 203.0.113.10처럼 표기한다. MAC 주소와의 결정적 차이는 계층적(hierarchical) 이라는 점이다. 주소는 네트워크부호스트부로 나뉘며, 네트워크부가 같으면 같은 네트워크에 속한다.

경계는 CIDR 표기로 나타낸다. 192.168.0.0/24는 앞 24비트가 네트워크부라는 뜻이고, 이 네트워크에는 192.168.0.1부터 192.168.0.254까지의 호스트가 들어간다. 이렇게 잘린 네트워크 단위를 서브넷(subnet) 이라고 부른다.

주소가 위치를 담고 있으므로, 라우터는 수십억 개의 호스트를 일일이 알 필요 없이 “203.0.113.0/24 방향은 이쪽”처럼 네트워크 단위로만 경로를 기억하면 된다. MAC 주소로는 불가능했던 확장성이 여기서 나온다.

라우팅: 홉마다 다음 길을 정한다

송신 호스트는 먼저 목적지가 같은 서브넷인지 판단한다. 같으면 2편의 ARP로 직접 전달하고, 다르면 미리 설정된 기본 게이트웨이(default gateway), 즉 라우터에게 넘긴다.

라우터는 라우팅 테이블을 가지고 있다. 패킷의 목적지 IP를 테이블과 대조해 가장 구체적으로 일치하는 항목(longest prefix match)을 골라, 그 방향의 다음 라우터로 패킷을 넘긴다. 어디에도 일치하지 않으면 기본 경로(default route)로 보낸다.

중요한 점은 어떤 라우터도 전체 경로를 알지 못한다는 것이다. 각 라우터는 다음 홉(next hop) 만 결정하고, 패킷은 홉을 거듭하며 목적지에 수렴한다. 그래서 중간 경로에 장애가 생기면 그 지점의 라우터들만 테이블을 갱신하면 되고, 나머지 인터넷은 그 사실을 몰라도 된다.

여기서 2편과 연결되는 그림이 완성된다. 패킷이 라우터를 거칠 때마다 프레임은 벗겨지고 새로 만들어진다.

목적지 IP 주소:  끝까지 유지된다
MAC 주소:        홉마다 교체된다 (현재 구간의 출발지/목적지로)

IP가 전체 여정의 주소라면, MAC은 매 구간 택배 기사가 바뀔 때마다 새로 적는 전달처다.

최선형 설계: 도착을 약속하지 않는다

IP는 최선형(best-effort) 전달만 제공한다. 패킷이 유실되어도, 중복되어도, 순서가 뒤바뀌어 도착해도 IP는 복구하지 않는다. 1편에서 패킷 교환의 대가로 미뤄둔 그 문제를, IP 계층은 의도적으로 떠안지 않는다.

이는 결함이 아니라 설계다. 신뢰성을 상위 계층의 선택으로 미룬 덕분에 라우터는 패킷을 저장하고 추적할 필요 없이 빠르게 넘기는 일에만 집중할 수 있고, 신뢰성이 필요 없는 응용은 그 비용을 치르지 않아도 된다.

NAT와 ICMP

IPv4 주소는 32비트, 약 43억 개뿐이라 모든 장비에 공인 주소를 줄 수 없다. NAT(Network Address Translation) 는 가정이나 회사 내부에서 사설 주소(192.168.x.x 등)를 쓰게 하고, 외부로 나갈 때 공유기가 하나의 공인 주소로 변환해주는 기법이다. IPv4의 수명을 수십 년 연장한 임시방편이자, 현재 거의 모든 가정용 네트워크의 기본 구조다.

ICMP(Internet Control Message Protocol) 는 IP 계층의 진단 도구다. ping은 ICMP Echo 요청/응답으로 호스트의 응답 여부와 왕복 시간을 재고, traceroute는 패킷의 TTL(Time To Live)을 1부터 늘려가며 경로상의 라우터를 한 홉씩 드러낸다.

요약

  인터넷 계층 (IP)
전달 단위 패킷 (packet)
주소 IP 주소 (32비트, 계층적: 네트워크부 + 호스트부)
경로 결정 라우팅 테이블, 홉마다 다음 홉만 결정
전달 보장 없음 (best-effort)
책임 범위 호스트에서 호스트까지

핵심은 이것이다.

IP는 호스트까지의 길을 찾지만, 도착을 약속하지 않는다.

다음 편 예고

패킷이 목적지 호스트에 도착했다. 그런데 그 호스트에서는 브라우저, 메신저, 게임이 동시에 통신 중이다. 이 패킷은 어느 프로세스의 것인가? 그리고 IP가 약속하지 않은 신뢰성은 누가 보장하는가? 다음 편에서 전송 계층의 TCP와 UDP를 본다.