iBetter Books
수정

IPv4 고갈과 IPv6

IPv4 주소는 32비트입니다. 표현할 수 있는 주소의 수는 약 43억 개입니다. 인터넷이 처음 설계될 때만 해도 충분해 보였습니다. 그러나 스마트폰이 보급되고 IoT 장치가 수십억 대에 이르면서 43억이라는 숫자는 순식간에 벽이 되었습니다. IANA, 즉 인터넷 주소 자원 관리 기관은 2011년에 IPv4 주소 블록을 모두 소진했습니다. 아시아태평양 지역의 주소는 그보다 먼저 바닥났습니다.

NAT가 시간을 벌다

주소가 부족하다는 것을 예감한 사람들은 NAT를 개발했습니다. 집 안 수십 대의 장치가 공인 IP 하나를 공유하면서 사용 가능한 주소가 몇 배로 늘어났습니다. 이 임시방편이 20년 넘게 인터넷을 지탱했습니다.

그러나 NAT는 근본적인 해결책이 아닙니다. 복잡한 설정, 외부 접속 어려움, 성능 저하, 종단 간 연결 원칙 위반 같은 문제가 따라옵니다. 주소 체계를 근본부터 바꿀 새 방안이 필요했습니다.

IPv6의 등장

IPv6는 주소 길이를 32비트에서 128비트로 늘렸습니다. 128비트로 표현할 수 있는 주소 수는 약 340간입니다. 숫자로 쓰면 340 뒤에 0이 36개 붙습니다. 지구 표면 1제곱밀리미터마다 670경 개의 주소를 할당하고도 남는 양이라고 흔히 설명합니다. 사실상 모든 장치에 고유 주소를 줄 수 있어 NAT 없이도 됩니다.

IPv6 주소는 16진수 네 자리씩 콜론으로 구분해 여덟 그룹으로 씁니다.

2001:0db8:85a3:0000:0000:8a2e:0370:7334

쓰기 편하도록 축약 규칙이 있습니다. 각 그룹 앞의 0은 생략할 수 있습니다. 0db8db8로, 00000으로 씁니다. 연속된 0000 그룹은 :: 두 콜론으로 한 번만 생략할 수 있습니다.

2001:db8:85a3::8a2e:370:7334

::1은 루프백 주소로 IPv4의 127.0.0.1에 해당합니다. fe80으로 시작하는 주소는 링크 로컬 주소로 같은 네트워크 구간 안에서만 씁니다.

IPv4와 IPv6의 공존

IPv6로 당장 모든 것을 교체할 수는 없습니다. 수십 년간 쌓인 IPv4 인프라가 있습니다. 그래서 오늘날 인터넷은 두 주소 체계를 함께 씁니다. 듀얼 스택이라 부르는 방식입니다. 장치가 IPv4와 IPv6 주소를 동시에 가지고, 상대방이 어느 쪽을 지원하는지에 따라 맞는 주소를 씁니다. 최신 운영체제에서 ip addr이나 ifconfig를 실행하면 inet(IPv4)과 inet6(IPv6) 주소가 모두 보이는 것을 확인할 수 있습니다.

네트워크계층의 핵심을 모두 살펴봤습니다. IP 주소의 구조, 서브넷, 라우팅, NAT, 그리고 IPv6까지 이어지는 흐름이 하나의 이야기였습니다. 주소가 부족하자 서브넷으로 나누고, 그래도 모자라자 NAT로 공유하고, 마침내 주소 공간 자체를 키우는 IPv6로 진화했습니다. 다음 PART에서는 전송계층으로 올라가, IP 위에서 신뢰성 있는 연결을 만들어내는 TCP의 세계로 들어갑니다.