한양과학기술고등학교

에듀테크 프로젝트 대시보드

IPv6 주소 체계

왜 128비트인가

IPv4(32비트)는 약 43억 개 · IPv6(128비트)는 2¹²⁸개 — 로그 스케일로도 한 화면에 담기 벅찬 격차

IPv4: 2^32 ≈ 4,294,967,296개, IPv6: 2^128 ≈ 3.4 × 10^38개

IPv6 주소 공간은 IPv4보다 약 7.9 × 10²⁸ 배 넓다 — 지구 표면 1 mm² 마다 주소를 6,700경 개씩 나눠줘도 남는 규모다.

주소 표기법

128비트를 16비트씩 8묶음(hextet)으로 나누고, 각 묶음을 16진수 4자리로 콜론(:)으로 구분

예시: 2001:0db8:0000:0000:0000:ff00:0042:8329

압축 변환기

규칙 ① 각 묶음의 앞자리 0 생략  ·  규칙 ② 연속된 0000 묶음 중 가장 긴 구간 1곳만 ::로 축약 (한 주소에 ::는 단 한 번만)

주소 종류

앞부분 비트 패턴(prefix)으로 용도가 구분된다

종류대역용도
루프백::1내 컴퓨터 자기 자신 (IPv4의 127.0.0.1)
미지정 주소::주소가 아직 없는 상태 (부팅 직후 등)
링크-로컬fe80::/10같은 스위치·와이파이 안에서만 통하는 자동 주소
글로벌 유니캐스트2000::/3인터넷에서 실제로 라우팅되는 공인 주소
멀티캐스트ff00::/8여러 기기에 한 번에 전송 (브로드캐스트 대체)

IPv4 vs IPv6

항목IPv4IPv6
주소 길이32비트 (4바이트)128비트 (16바이트)
표기10진수 4묶음 (192.168.0.1)16진수 8묶음 (fe80::1)
주소 개수약 43억 개약 3.4 × 10³⁸ 개
NAT 필요성주소 부족으로 사실상 필수기기마다 공인 주소 배정 가능 → 원칙적으로 불필요
이웃 탐색ARP (브로드캐스트)NDP / ICMPv6 (멀티캐스트)
헤더가변 길이, 체크섬 포함고정 40바이트, 체크섬 없음(라우터 부담↓)

코드로 보는 IPv6

파이썬 socket 모듈은 IPv6를 AF_INET6 패밀리로 다룬다

# IPv4 대신 AF_INET6 패밀리를 사용 import socket sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) sock.connect(("::1", 8080)) # "::1" == 루프백(localhost) # 압축 표기 <-> 정규화는 표준 라이브러리가 대신 해준다 socket.inet_ntop(socket.AF_INET6, socket.inet_pton(socket.AF_INET6, "2001:0db8:0000:0000:0000:ff00:0042:8329")) # -> '2001:db8::ff00:42:8329'