IPv6의 개요
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPv6의 특징 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
가. IPv4(RFC791)의 문제점 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
현재 인터넷 주소로써 사용되고 있는 IPv4는 다음과 같은 문제점을 가지고 있다 현재 32비트 주소에서의 할당용량 부족 사이트규모에 따른 class별 할당방식의 문제점IPv4헤더영역의 비효율적 사용 특히 기하급수적으로 늘어가는 사용자에 대하여 할당용량의 부족은 가장 커다란 문제점을 가지고 있으며, 이러한 문제를 해결하기 위하여 Dynamic IP allocation with PPP 와 Private IP addresses with NAT의 기술로써 임시방편적인 대책을 마련하고 있지만, 이러한 대책들은 통신, 보안, 게임 같은 대부분의 인터넷응용들은 양방향 통신이 이루어져야 하므로 NAT와 같은 단방향성인 해결책은 인터넷 확산에 대하여 장애가 될 수 있다. 따라서 근본적인 IP에 대한 해결책은 될 수 없는 것이다. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
나. IPv6의 특징 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPv4에 대한 문제점과 할당공간부족에 대한 문제점을 해결책으로 개발된 IPv6의 특징으로써는 다음과 같다. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- 거의 무한대 주소공간 (128bit) - Aggregation-based address hierarchy - 효과적인 백본 라우팅 - Efficient and Extensible IP datagram - Fragmentation NOT by Routers, but only by a Source Host - 보다 단순한 IPv6 기본 헤더, 40 bytes ·More efficient forwarding - Source Routing & Hop-by-Hop Options Header - Autoconfiguration & IP Renumbering ·Built-in Security AH & ESP - QoS Flow Labeling |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
다. IPv6 의 규격 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
현재 RFC 규약에 의해 프로토콜규격 주소규격 라우팅 및 기타 규격에 의해 정의된 IPv6의 규격은 다음과 같다. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- 프로토콜 규격 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RFC 2460: IPv6 Specification RFC 1886: DNS Extensions to support IPv6 RFC 1981: Path MTU Discovery RFC 2461: Neighbor Discovery for IPv6 RFC 2462: IPv6 Stateless Address Autoconfiguration |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- 주소 규격 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RFC 2373: IPv6 Addressing Architecture RFC 2375: IPv6 Multicast Address Assignments RFC 1887: An Architecture for IPv6 Unicast Address Allocation RFC 2374: An IPv6 Aggregatable Global Unicast Address Format RFC 2470: Proposed TLA and NLA Assignment Rules |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- Routing | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RFC 2080: RIPng for IPv6 RFC 2283: Multiprotocol Extensions for BGP-4 RFC 2545: Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- 기타 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RFC 2292: Advanced Sockets API for IPv6 RFC 2553: Basic Socket Interface Extensions for IPv6 RFC 2473: Generic Packet Tunneling in IPv6 Specification RFC 2507: IP Header Compression RFC 2675: IPv6 Jumbograms RFC 2711: IPv6 Router Alert Option |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPv6의 구조 (RFC2460) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
가. IPv6의 기본 헤더구조 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
나. Version (4bits) : 0110 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
다. Traffic Class (8bits): 클래스 또는 우선권 식별 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RFC1881에 따르면 0~7: Congestion-controlled traffic 8~15: Non-congestion-controlled traffic
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
라. Flow Level : 송신자 노드에서 할당 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- Flow : 송신자 IP 주소와 Non-zero flow label의 조합으로 유일하게 식별. - 같은 flow에 속하는 모든 패킷들은 the same source address, destination address,and flow label. - 아직 실험적 대상, 변경 가능성 있음 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
마.Payload Length (16bits) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- Basic header (40bytes)를 제외한 나머지 모든 영역
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
바. Next Header (8bit) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
사. Hop limits (8bits) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- 패킷 포워딩을 하는 노드에서 1씩 감소시킴 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
아. Source Address (128bits) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
자. Destination Address (128bits) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPv6확장헤더 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPv6의 기본 헤더 바로 다음에 위치하여 헤더의 종류는 바로 전 NEXT 헤더부분으로 판별된다. 확장헤더는 필요할 때만 사용하여 공간을 절약하는 장점을 가지고 있으며, 확장헤더의 종류와 나열순서는 다음과 같다. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
가. 확장헤더의 종류 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- Hop-by-Hop Options Header - Options: Router Alert & Jumbogram - TLV format - 옵션별 위치 정렬 가능 처리 효율이 증가됨 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Routing Header (Type 0) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
패킷 전달경로를 Routingheader 내의 주소들을 따라서 결정 (현재Type = 0만 선언)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fragment Header | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Destination Options Header ·Authentication Header ·Encapsulating Security Payload | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
나. 헤더 나열순서 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- IPv6 header Hop-by-Hop Options header Destination Options header ·Routing header - Fragment header |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
다. IPv6 Addressing Architecture (RFC 2373) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
주소표현 방식(128비트형식) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- 주소표현 형태 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
prefix | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ISP (Internet Service Provider)나 네트워크관리 담당자로부터 할당 받음 ·주소의 사용목적에 따라 다양한 할당방식이 가능하다. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
다음은 사용목적에 따른 할당방식의 예이다
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Unicast | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
어떤 인터페이스 (interface) 하나에 대한 식별자 따라서 unicast 주소로 보내진 패킷은 이 주소가 할당된 인터페이스로 전달됨 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Anycast | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Multicast | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Anycast의 경우처럼 여러 개의 인터페이스를 묶어서 하나로 나타내는 식별자 그러나 이 주소로 보내진 패킷은 이 주소를 사용하는 그룹 멤버들 전체에게 전달됨 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
URL에서의 IPv6 주소 표현 방식 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
http:// [FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html ( [ ]를 사용하여 포트와 주소를 구분한다 . ) http://[1080:0:0:0:8:800:200C:417A]/index.html http://[3ffe:2a00:100:7031::1] ( 여러 개의 0이 반복되는 경우 ::로 축약가능하다 .) http://[1080::8:800:200C:417A]/foo (한서버에서 여러 개의 홈페이지를 서비스하는 방법은 기존과 동일하다.) http://[::192.9.5.5]/ipng http://[::FFFF:129.144.52.38]:80/index.html |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPv4의 사용 (prefix) IPv4-compatatible IPv6 address | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NDP (Neighbor Discovery Protocol) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Site Renumbering | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Site 주소변경 시 Network의 재설정을 용이하게 해준다. (각 호스트에 대한 주소변경이 불필요하다.) 1. 관리자에 의해 prefix1 에서 prefix2로 변경 2. 변경된 prefix2로 Router advertisment 3. prefix / default router 변경( prefix1:host 를 prefix2:host로 변경완료) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPv4에서 IPv6로의 변환 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
현재 전세계적으로 사용되고 있는 IPv4를 IPv6로 전환시에는 많은 시간과 비용이 필요하게
된다. 이러한 문제점은 IPv6로의 전환을 어렵게 만들고 있다. 커다란 인터넷망에서 한순간에 IPv6로의 전환은 힘들다는 것을
인지하고 IPv4와 IPv6와의 공존의 기간과 IPv6로의 전환기간역시 고려되어야 한다. 다음은 IPv4와 IPv6의 두가지
형식을 통신에 함께 사용할 수 있는 기술들이다. - Tunneling방식 : 네트워크에서 터널을 제공해주는 서비스를 하거나 동적으로 터널을 생성해주는 방식 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
○ IPv4 헤더 vs IPv6 헤더
: IPv6 헤더는 여러 확장 헤더와 upper layer들이 Next Header 필드 값을 통해 연결될 수 있다.
Next Header 필드는 다음에 올 헤더의 종류를 명시한다.
○ IPv6 확장 헤더
: 확장 헤더에는 다음에 올 헤더 또는 upper layer를 명시하는 next header(8 bits) 필드와 hdr length(8 bits)
필드가 일반적으로 존재한다. (fragment extension header는 고정 크기 이므로 예외)
hdr length는 Next Header, hdr length 필드를 제외한 확장 헤더의 사이즈를 나타낸다.
(8 bytes = 1로 사이즈 표현)
fragment extension 헤더는 고정된 사이즈인 (64 bits)의 크기를 갖는다.
○ IPv6 확장 헤더의 종류
1) Hop by Hop Extension Header
2) Destination Extension Header
* MLD : Multicat Listener Discovery
3) Routing Extension Header
- path segments : 남아있는 거쳐가야 할 router의 개수
- strict/loose bit mask
strict bit : 정해진 router 경로 이외에 다른 router가 중간에 끼어 있을 경우 packet forwarding을 포기하고
ICMP 메시지를 되돌려 줌
loose bit : 중간에 다른 router가 존재해도 packet forwarding을 수행
4) Fragment Extension Header
: IPv6의 Fragment Extension Header의 사이즈는 8 bytes로 고정되어 있음
- Fragment Offset : Original 데이터의 offset, N x 8 bytes 로 표현됨. N 이 offset 값을 가짐.
- Mark (1 bit) : 0 이면 Unfragmented 패킷 또는 fragmented 마지막 패킷, 1 이면 중간의 fragmented 패킷을 의미
- Identification : fragmented 패킷에 대해 동일한 ID를 가짐
5) Authentication Extension Header (AH)
- Security Parameters Index : Source와 Destination 간의 Security Association (단방향)
- Sequence Number : replayed packet 공격을 방지하기 위한 counter
- Authentication Data : packet의 위/변조에 대한 integrity를 검사하기 위한 hash (MD5 & SHA-1)
중간에 packet이 router에 의해 변하기 쉬운 필드를 제외하고는 모두 hash되어진다.
(아래 그림에서 노란색 부분이 authentication 대상 데이터이다.)
6) Encapsulating Security Payload Header (ESP)
: ESP 확장 헤더는 payload를 암호화 하는데 사용되며 AH 확장 헤더와는 독립적이다.
즉 AH 확장 헤더와 ESP 확장 헤더가 함께 사용될 수 있다.
- Security Parameters Index : Source와 Destination 간의 Security Association (단방향)
- Sequence Number : replayed packet 공격을 방지하기 위한 counter
- Next Header : 일반적으로 암호화되는 payload의 프로토콜 타입을 명시한다. (TCP/UDP...)
ESP 확장 헤더를 포함한 패킷은 다음과 같이 구성될 수 있다.
※ 전 IPv6에 대해 회의를 가지고 있습니다. 사람들이 IPv6 망을 이용할까요? 아무리 IP를 auto configuration
한다고 해도 눈에 너무 안들어오네요.
IPv4 | IPv6 | 변경 내용 |
VERSION | VERSION | |
HLEN | X (삭제) | IPv6 기본 헤더의 사이즈는 fixed 40 bytes |
TOS | CLASS | |
Total Length | Payload Length | IPv6 기본 헤더 40 bytes를 제외한 length (8 bytes = 1로 표현) |
Identification | Fragment Header | IPv6 Fragment Extension 헤더로 대체 |
Flags | Fragment Header | IPv6 Fragment Extension 헤더로 대체 |
Fragment Offset | Fragment Header | IPv6 Fragment Extension 헤더로 대체 |
TTL | Hop Limit | |
Protocol | Next Header (N.H) | IPv6 기본 헤더 다음에 올 extension 헤더 또는 upper Layer (TCP/UDP/ICMPv6) 헤더 종류를 명시 |
Checksum | X (삭제) | hop을 거칠 때마다 TTL값을 감소시키고 checksum이 재계산 되는 비효율성을 없애고 layer2를 신뢰함. upper layer에서 checksum 필드를 사용하도록 권장함 |
SRC Address | SRC Address | IPv6 에서 128 bits 주소 체계로 확장 |
DST Address | DST Address | IPv6 에서 128 bits 주소 체계로 확장 |
○ IPv6 패킷의 구성
: IPv6 헤더는 여러 확장 헤더와 upper layer들이 Next Header 필드 값을 통해 연결될 수 있다.
Next Header 필드는 다음에 올 헤더의 종류를 명시한다.
○ IPv6 확장 헤더
: 확장 헤더에는 다음에 올 헤더 또는 upper layer를 명시하는 next header(8 bits) 필드와 hdr length(8 bits)
필드가 일반적으로 존재한다. (fragment extension header는 고정 크기 이므로 예외)
hdr length는 Next Header, hdr length 필드를 제외한 확장 헤더의 사이즈를 나타낸다.
(8 bytes = 1로 사이즈 표현)
fragment extension 헤더는 고정된 사이즈인 (64 bits)의 크기를 갖는다.
○ IPv6 확장 헤더의 종류
1) Hop by Hop Extension Header
2) Destination Extension Header
* MLD : Multicat Listener Discovery
3) Routing Extension Header
- path segments : 남아있는 거쳐가야 할 router의 개수
- strict/loose bit mask
strict bit : 정해진 router 경로 이외에 다른 router가 중간에 끼어 있을 경우 packet forwarding을 포기하고
ICMP 메시지를 되돌려 줌
loose bit : 중간에 다른 router가 존재해도 packet forwarding을 수행
4) Fragment Extension Header
: IPv6의 Fragment Extension Header의 사이즈는 8 bytes로 고정되어 있음
- Fragment Offset : Original 데이터의 offset, N x 8 bytes 로 표현됨. N 이 offset 값을 가짐.
- Mark (1 bit) : 0 이면 Unfragmented 패킷 또는 fragmented 마지막 패킷, 1 이면 중간의 fragmented 패킷을 의미
- Identification : fragmented 패킷에 대해 동일한 ID를 가짐
5) Authentication Extension Header (AH)
- Security Parameters Index : Source와 Destination 간의 Security Association (단방향)
- Sequence Number : replayed packet 공격을 방지하기 위한 counter
- Authentication Data : packet의 위/변조에 대한 integrity를 검사하기 위한 hash (MD5 & SHA-1)
중간에 packet이 router에 의해 변하기 쉬운 필드를 제외하고는 모두 hash되어진다.
(아래 그림에서 노란색 부분이 authentication 대상 데이터이다.)
6) Encapsulating Security Payload Header (ESP)
: ESP 확장 헤더는 payload를 암호화 하는데 사용되며 AH 확장 헤더와는 독립적이다.
즉 AH 확장 헤더와 ESP 확장 헤더가 함께 사용될 수 있다.
- Security Parameters Index : Source와 Destination 간의 Security Association (단방향)
- Sequence Number : replayed packet 공격을 방지하기 위한 counter
- Next Header : 일반적으로 암호화되는 payload의 프로토콜 타입을 명시한다. (TCP/UDP...)
ESP 확장 헤더를 포함한 패킷은 다음과 같이 구성될 수 있다.
※ 전 IPv6에 대해 회의를 가지고 있습니다. 사람들이 IPv6 망을 이용할까요? 아무리 IP를 auto configuration
한다고 해도 눈에 너무 안들어오네요.
출처: http://ryujeen.tistory.com/132
'Dev./Sec. Study > 참고자료' 카테고리의 다른 글
links for programming (0) | 2012.01.10 |
---|---|
mysql에서 동일한 환경 및 encoding을 사용한 db 이전 시 한글 깨질 때 (0) | 2009.12.30 |
[펌] Visual C++ 6.0 에서 "열기" 시에 오류 (5) | 2009.04.07 |
특수문자 명칭. (2) | 2007.08.11 |
mysql 명령어 (2) | 2007.07.09 |