인터넷 계층 (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를 본다.