2.8 NAT
지금까지 살펴본 내용에서 모든 IP 주소는 공인 IP라 가정했다. 공인 IP(public IP)란 공개적으로 라우팅할 수 있다는 말로, 전 세계 인터넷상 어디서건 공인 IP로 패킷을 보내면 이 패킷이 인터넷의 여러 라우터를 거쳐 해당 호스트에 도달할 수 있다는 뜻이다. 이를 위해 공인 IP는 반드시 단 하나의 호스트에 고유하게 할당되어야 한다. 둘 이상의 호스트가 같은 IP 주소를 가지고 있으면 패킷 중 일부는 어떤 호스트로, 나머지는 다른 호스트로 가는 혼란이 야기된다. 호스트 중 하나가 웹 서버로 요청을 보냈더니, 엉뚱한 호스트가 요청에 대한 응답을 받을 수도 있는 것이다.
공인 IP 주소를 고유하게 배정할 수 있게, ICANN 및 그 산하 기구는 IP 주소 공간을 큰 단위의 블록으로 나누어 이를 대기업, 대학, 인터넷 서비스 공급자 같은 대형 조직에 할당한다. 그러면 이들 조직은 블록 내 주소를 회원이나 고객에게 나누어 서로 겹치지 않게 배정해 준다.
IPv4의 주소 공간이 32비트에 불과하므로, 할당할 수 있는 공인 IP는 모두 합쳐도 43억 개에 못 미친다. 오늘날 사용되는 네트워크 기기의 숫자는 이를 훨씬 상회하므로 ICANN이 배정하는 방식으론 한계가 있어 공인 IP는 이제 희귀한 자원이 되어버렸다. 그런데 실제 활용 시 공인 IP를 망 내 호스트 개수만큼 갖추고 있어야 할 필요는 별로 없다. 예를 들어 우리 같은 게임 개발자는 데스크톱에 스마트폰에, 거기다 노트북이랑 콘솔 게임기 등 종류별로 하나씩 많은 네트워크 기기를 사용할 테지만, 인터넷은 하나만 가입하고 거기서 받은 공인 IP는 공유기에만 쓰는 경우가 대부분일 것이다. 기기마다 일일이 공인 IP를 부여받아야 한다면 얼마나 번거로울까. 포장을 새로 뜯은 기기를 인터넷에 연결하려면 인터넷 업체에 추가 회선을 요청해야 할 테고, 업체는 제한된 수의 공인 IP를 다른 업체와 경쟁해서 확보해야 하니 요금도 비싸질 터이다.