[Daily morning study] IPv6 개념과 IPv4와의 차이점
#daily morning study
왜 IPv6가 필요한가
인터넷이 급격히 팽창하면서 IPv4의 한계가 드러났다.
- IPv4는 32비트 주소 체계 → 약 43억 개의 주소만 표현 가능
- 스마트폰, IoT 기기 등의 폭발적 증가로 주소 고갈 현실화
- IANA(Internet Assigned Numbers Authority)는 2011년에 IPv4 블록을 모두 소진
- NAT(Network Address Translation)로 임시 연명했지만 구조적 한계 존재
IPv6는 이 문제를 해결하기 위해 설계된 차세대 인터넷 프로토콜이다.
IPv4 vs IPv6 주소 구조
IPv4
- 32비트 주소 (4옥텟)
- 점(
.)으로 구분된 10진수 표기 - 예:
192.168.1.1 - 약 43억 개 주소 가능
IPv6
- 128비트 주소 (16옥텟)
- 콜론(
:)으로 구분된 16진수 표기 - 예:
2001:0db8:85a3:0000:0000:8a2e:0370:7334 - 약 3.4 × 10³⁸개의 주소 가능 (지구상 모든 모래알보다 많다)
IPv6 주소 축약 규칙
# 각 그룹의 앞쪽 0은 생략 가능
2001:0db8:0000:0000:0000:0000:0000:0001
→ 2001:db8:0:0:0:0:0:1
# 연속된 0 그룹은 :: 로 한 번만 축약 가능
→ 2001:db8::1
IPv4와 IPv6의 주요 차이점
| 항목 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 32비트 | 128비트 |
| 주소 표기 | 10진수 (점 구분) | 16진수 (콜론 구분) |
| 주소 개수 | 약 43억 개 | 약 3.4 × 10³⁸개 |
| 헤더 크기 | 가변 (20~60바이트) | 고정 (40바이트) |
| 헤더 체크섬 | 있음 | 없음 (L4에서 처리) |
| NAT 필요 | 필요 | 불필요 (주소 충분) |
| 브로드캐스트 | 지원 | 없음 (멀티캐스트로 대체) |
| 자동 주소 설정 | DHCP 필요 | SLAAC(Stateless Address Autoconfiguration) 지원 |
| 보안 (IPsec) | 선택 사항 | 기본 포함 (설계 단계부터 내장) |
| QoS (트래픽 우선순위) | ToS 필드 | Flow Label 필드 |
| 단편화(Fragmentation) | 라우터도 수행 | 송신 측에서만 수행 |
IPv6 헤더 구조
IPv6 헤더는 IPv4보다 단순하고 고정 크기(40바이트)다.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version(4) | Traffic Class(8) | Flow Label(20) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Length(16) | Next Header(8)| Hop Limit(8)|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address (128비트) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address (128비트) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
주요 필드 설명:
- Traffic Class: IPv4의 ToS에 해당, QoS를 위한 패킷 우선순위
- Flow Label: 특정 트래픽 흐름을 식별, 라우터가 빠르게 처리할 수 있도록 함
- Payload Length: 페이로드(데이터) 크기 (헤더 제외)
- Next Header: 다음에 오는 헤더 타입 (TCP=6, UDP=17, ICMPv6=58 등)
- Hop Limit: IPv4의 TTL과 동일한 역할, 라우터를 거칠 때마다 1 감소
IPv4에서 제거된 필드:
- Header Length: 헤더가 고정 크기이므로 불필요
- Header Checksum: 상위 레이어(L4)에서 처리하므로 제거 → 라우터 처리 속도 향상
- Fragmentation 관련 필드: 라우터가 단편화하지 않음, Extension Header로 이동
IPv6 주소 유형
유니캐스트 (Unicast)
단일 인터페이스를 지정하는 1:1 통신
- 글로벌 유니캐스트: 인터넷에서 라우팅 가능한 공인 주소 (
2001::/16) - 링크-로컬: 동일 링크(LAN) 내에서만 유효 (
fe80::/10), 자동 설정됨 - 루프백:
::1, IPv4의127.0.0.1에 해당
멀티캐스트 (Multicast)
특정 그룹에 속한 다수의 인터페이스에 1:N 통신 (ff00::/8)
ff02::1: 링크 내 모든 노드ff02::2: 링크 내 모든 라우터- IPv4의 브로드캐스트를 멀티캐스트로 완전히 대체
애니캐스트 (Anycast)
여러 인터페이스가 같은 주소를 공유, 가장 가까운 곳으로 전달 (1:1, 단 가장 가까운 수신자)
SLAAC (Stateless Address Autoconfiguration)
IPv6의 핵심 기능 중 하나로, DHCP 서버 없이도 자동으로 IP 주소를 설정할 수 있다.
동작 순서:
1. 장치 부팅
↓
2. 링크-로컬 주소 자동 생성 (fe80:: + EUI-64 또는 무작위 값)
↓
3. DAD(Duplicate Address Detection) 수행 → 중복 주소 확인
↓
4. Router Solicitation(RS) 메시지 전송 (라우터 탐색)
↓
5. 라우터가 Router Advertisement(RA)로 네트워크 프리픽스 응답
↓
6. 장치가 프리픽스 + 인터페이스 ID 조합으로 글로벌 주소 생성
EUI-64 방식:
- MAC 주소(48비트)를 변환하여 64비트 인터페이스 ID 생성
- MAC
00:1A:2B:3C:4D:5E→021A:2BFF:FE3C:4D5E
IPv6의 보안: IPsec 기본 내장
IPv4에서 IPsec은 선택 사항이었지만, IPv6는 설계 단계부터 IPsec을 지원하도록 설계됐다.
- AH(Authentication Header): 데이터 무결성 + 송신자 인증
- ESP(Encapsulating Security Payload): 데이터 암호화 + 무결성 보호
단, “기본 내장”이 실제로 모든 IPv6 통신에서 항상 활성화된다는 의미는 아니다. 구현 측면에서 IPsec 사용은 여전히 선택이지만, 프로토콜 설계 자체가 IPsec을 네이티브로 지원하도록 되어 있다는 점이 다르다.
IPv4에서 IPv6로의 전환 메커니즘
즉각적인 전환이 불가능하기 때문에 다양한 공존 기술이 사용된다.
듀얼 스택 (Dual Stack)
가장 일반적인 방식. 호스트가 IPv4와 IPv6 주소를 동시에 보유하고 통신 상대에 따라 선택.
[서버]
├── 192.168.1.10 (IPv4)
└── 2001:db8::1 (IPv6)
터널링 (Tunneling)
IPv6 패킷을 IPv4 패킷 안에 캡슐화하여 기존 IPv4 인프라를 통해 전송.
[IPv6 호스트] → [IPv4 터널 진입점] → IPv4 네트워크 → [IPv4 터널 출구] → [IPv6 호스트]
대표 기술:
- 6to4: 자동 터널링, IPv4 주소에서 IPv6 주소 유도
- Teredo: NAT 뒤에 있는 호스트도 지원
- ISATAP: 기업 내부망에서 사용
NAT64 + DNS64
IPv6 전용 클라이언트가 IPv4 서버에 접근할 수 있도록 변환.
[IPv6 클라이언트] → [NAT64 게이트웨이] → [IPv4 서버]
ICMPv6의 역할 확장
IPv6에서는 ICMPv6가 훨씬 중요한 역할을 담당한다.
IPv4에서는 별개 프로토콜로 처리하던 것들을 ICMPv6로 통합:
- NDP (Neighbor Discovery Protocol): ARP를 대체, 이웃 장치 탐색
- SLAAC: 자동 주소 설정 지원 (RA/RS)
- DAD: 중복 주소 감지
- MLD (Multicast Listener Discovery): IPv4의 IGMP 역할, 멀티캐스트 그룹 관리
IPv6에서 ARP가 없어진 이유도 ICMPv6의 NDP가 더 안전하고 효율적으로 대체하기 때문이다.
실무에서 마주치는 IPv6
Linux에서 IPv6 주소 확인:
ip -6 addr show
# 또는
ifconfig | grep inet6
IPv6 ping:
ping6 2001:db8::1
# 링크-로컬 주소는 인터페이스 지정 필요
ping6 fe80::1%eth0
IPv6 DNS 레코드 타입:
# IPv4 → A 레코드
example.com. IN A 93.184.216.34
# IPv6 → AAAA 레코드 (주소가 4배 길어서 AAAA)
example.com. IN AAAA 2606:2800:220:1:248:1893:25c8:1946
현재 인터넷 IPv6 보급률:
- 2024년 기준 Google 통계에서 약 45~50% 수준
- 한국은 상대적으로 도입이 느린 편
정리
| 핵심 포인트 | 내용 |
|---|---|
| 도입 이유 | IPv4 주소 고갈 문제 해결 |
| 주소 공간 | 128비트, 사실상 무한 |
| 헤더 개선 | 고정 크기(40B), 체크섬 제거로 라우터 성능 향상 |
| 자동 설정 | SLAAC으로 DHCP 없이도 주소 자동 구성 |
| 보안 | IPsec 기본 내장 설계 |
| 브로드캐스트 폐지 | 멀티캐스트로 완전 대체 |
| 전환 방식 | 듀얼 스택(주), 터널링, NAT64 |
IPv6는 단순히 주소 공간을 늘린 것이 아니라, IPv4의 설계 문제를 근본적으로 개선한 프로토콜이다. 자동 설정, 보안 내장, 단순화된 헤더 등 여러 측면에서 진보했다. 당장 모든 인프라가 IPv6로 전환된 건 아니지만, 신규 서비스를 설계할 때는 IPv6를 고려하는 게 점점 중요해지고 있다.