목차
앞 글에서 데이터가 IP 봉투에 감싸여 간다고 했다. 그 봉투 겉면에 적히는 게 IP 주소다. 패킷이 어떻게 그 주소를 보고 목적지 기계까지 찾아가는지를 본다.
편지를 보내려면 주소가 필요하다
편지 봉투엔 받는 사람 주소를 적는다. 우체국은 그 주소를 보고 배달한다. 네트워크도 똑같다 - 패킷을 보내려면 목적지 기계의 주소가 있어야 하고, 그 주소가 IP 주소다.
142.250.x.x 같은 숫자가 그것이다. 이 숫자 하나가 인터넷 위의 특정 기계를 가리킨다. DNS가 example.com 같은 이름을 이 숫자로 바꿔주는데(다음 글), 결국 패킷이 들고 가는 건 이름이 아니라 이 숫자다.
IP 주소는 기계의 주소다
IP 주소는 기계 한 대를 가리킨다. 그 기계 안의 어느 프로그램인지까지는 안 가리킨다 - 그건 포트의 몫이다(뒤에서). 지금은 “IP = 어느 기계”만 쥐고 가자.
우리가 흔히 보는 142.250.72.14 형식은 IPv4 주소다. 점으로 나뉜 네 칸에 각각 0~255가 들어가, 약 43억 개의 주소를 표현한다. 인터넷 초기엔 넉넉해 보였지만, 지금은 이게 모자라다 - 뒤에서 다시 나온다.
주소는 두 부분이다
IP 주소는 그냥 한 덩어리가 아니라 두 부분으로 읽힌다 - 앞은 네트워크(어느 동네), 뒤는 호스트(그 동네의 어느 집).
203.0.113.45
└──네트워크──┘ └호스트┘
어느 동네냐 그 동네 몇 호냐편지 주소가 “어느 동네, 몇 번지”로 나뉘듯, IP도 “어느 네트워크, 그 안 어느 기계”로 나뉜다. 이 구분 덕에 라우터는 주소 전체를 외울 필요 없이 동네 단위로 방향을 잡는다 - 우체국이 집집마다 아는 게 아니라 “그건 부산 방향”만 알면 되는 것처럼.
패킷은 홉을 건너 간다
패킷은 목적지까지 한 번에 날아가지 않는다. 라우터를 하나씩 건너 간다. 각 건너뜀을 홉(hop) 이라 부른다.
내 기계는 패킷을 가까운 라우터에게 넘긴다. 그 라우터는 “이 주소는 저쪽 방향”이라며 다음 라우터에게 넘긴다. 이렇게 라우터에서 라우터로 넘겨지며, 여러 홉을 거쳐 목적지에 닿는다. 인터넷을 건너는 패킷은 보통 십수 개의 라우터를 거친다.
라우터는 전체 길을 모른다
놀라운 건, 어느 라우터도 목적지까지의 전체 길을 모른다는 점이다. 각 라우터는 오직 “이 주소는 다음에 누구에게 넘기면 되나”만 안다.
라우터 A의 판단: "203.0.113.x 방향? → 라우터 B에게"
라우터 B의 판단: "203.0.113.x 방향? → 라우터 C에게"
라우터 C의 판단: "203.0.113.45? → 바로 옆 그 기계에게"각자 자기 다음 홉만 알고 넘기는데, 그게 이어지면 결국 목적지에 닿는다. 앞 글의 “각 층은 자기 일만 한다”가 여기서도 보인다 - 라우터도 전체를 모른 채 자기 몫(다음 홉)만 한다. 이 단순함 덕에 인터넷은 거대해도 굴러간다.
공인 주소와 사설 주소
모든 IP 주소가 인터넷 전체에서 통하는 건 아니다. 주소엔 두 종류가 있다.
- 공인 IP - 인터넷 전체에서 유일하게 통하는 진짜 주소. 우체국이 배달할 수 있는 실제 주소.
- 사설 IP - 집·회사 네트워크 안에서만 통하는 주소(
192.168.x.x같은). 같은 사설 주소가 전 세계 수많은 집에서 동시에 쓰인다.
내 노트북의 192.168.0.5는 우리 집 안에서만 뜻이 있다. 이게 어떻게 인터넷 밖과 통하는지가 NAT 편의 주제다 - 지금은 “안에서만 쓰는 주소가 따로 있다”만 알아두자.
IPv4가 모자란다
IPv4의 43억 개 주소는 인터넷에 붙는 기기 수에 비해 부족해졌다. 스마트폰·IoT까지 다 붙으니 진작 동났다.
이 부족을 두 가지로 버틴다. 하나는 NAT - 여러 기계가 사설 IP를 쓰며 공인 IP 하나를 나눠 쓴다. 다른 하나는 IPv6 - 주소를 훨씬 길게 늘려(사실상 무한에 가깝게) 부족 자체를 없앤다. IPv6가 답이지만 전환이 느려, 지금은 NAT로 버티는 중이다.
실무에서: IP를 만나는 자리
- 접근 제어를 IP로 - “이 IP 대역만 허용” 같은 방화벽 규칙이 IP 주소로 걸린다. 네트워크 부분(동네)으로 대역을 지정한다.
- 로그의 클라이언트 IP - 접속자 IP가 로그에 남는데, NAT나 프록시 뒤에 있으면 진짜 IP가 아니라 중간 장비의 IP가 찍히기도 한다. 그래서 원래 IP를 헤더로 따로 전달한다.
- “IP는 되는데 이름은 안 된다” - 기계엔 닿는데(IP OK) 도메인으로만 안 되면 DNS 문제다. 층으로 나눠 짚는 그 습관이다.
정리
- 패킷을 보내려면 목적지 기계의 IP 주소가 필요하다 - IP는 “어느 기계”를 가리킨다(어느 프로세스는 포트).
- IP 주소는 네트워크(동네) + 호스트(집) 로 읽혀, 라우터가 동네 단위로 방향을 잡게 한다.
- 패킷은 라우터를 하나씩 건너(홉) 가는데, 어느 라우터도 전체 길을 모르고 다음 홉만 안다 - 그게 이어져 목적지에 닿는다.
- 사설 IP는 집·회사 안에서만 통하고, IPv4 부족을 NAT와 IPv6로 버틴다.
다음 글은 그 숫자 주소를 사람이 외우지 않게 해주는 것 - 이름을 주소로 바꾸는 DNS로 간다.