IPv6 패킷
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
IPv6 패킷은 IPv6 네트워크에서 데이터를 전송하는 데 사용되는 데이터 단위로, 40옥텟의 고정 헤더로 시작한다. 고정 헤더는 버전, 트래픽 클래스, 플로우 레이블, 페이로드 길이, 다음 헤더, 홉 제한, 송신자 주소, 수신자 주소 등의 필드로 구성된다. IPv6는 확장 헤더를 통해 추가적인 기능을 제공하며, 홉 바이 홉 옵션, 목적지 옵션, 라우팅, 단편화, 인증 헤더, 캡슐화 보안 페이로드 등의 확장 헤더가 존재한다. 페이로드는 전송 계층 데이터를 포함하며, IPv6는 최대 65,535 옥텟의 표준 페이로드 길이를 지원하며, 홉 바이 홉 옵션 확장 헤더를 사용한 점보그램을 통해 최대 4GB에 가까운 페이로드를 지원한다. IPv6는 라우터에서 단편화를 수행하지 않으며, 송신 노드에서 단편화를 수행한다. 보안과 관련하여, 단편화를 이용한 보안 제어 우회 시도가 연구되었으며, 비정상적인 패킷 조각화는 금지되어 있다.
더 읽어볼만한 페이지
- IPv6 - 6LoWPAN
6LoWPAN은 저전력 무선 개인 영역 네트워크에서 IPv6 패킷 전송을 위한 기술 규격으로, 헤더 압축 및 단편화 기술을 통해 작은 MTU를 극복하여 다양한 IoT 환경에 적용되며, 관련 표준 문서에서 기본적인 틀과 기능들을 정의하고 있다. - IPv6 - ICMPv6
ICMPv6는 IPv6 네트워크에서 오류 보고 및 정보 제공을 담당하며, 주소 해결, 주소 자동 설정, 멀티캐스트 그룹 관리 등의 기능을 수행하는 필수적인 프로토콜이다. - 패킷 - 프로토콜 데이터 단위
프로토콜 데이터 단위(PDU)는 네트워크 통신에서 데이터 전송의 기본 단위로서, 각 계층은 서비스 데이터 단위(SDU)에 헤더와 제어 정보를 더해 PDU를 생성하며, 데이터 구조화, 오류 검출, 주소 지정 등의 기능을 수행하여 효율적인 통신을 지원하고, 크기는 네트워크 성능, MTU, IP 단편화, 보안 문제와 관련된다. - 패킷 - 셀 릴레이
셀 릴레이는 가변 길이 사용자 패킷을 고정 길이 셀 그룹으로 분할하여 고속으로 전송하는 기술이며, 지연에 민감한 트래픽에 사용되고, 흐름 제어 및 오류 검출 기능은 없으며, 비동기 전송 방식(ATM)과 같은 고속 패킷 스위칭 기술의 구현에 사용된다.
IPv6 패킷 | |
---|---|
IPv6 패킷 구조 | |
![]() | |
일반 정보 | |
프로토콜 스택 계층 | 인터넷 계층 |
프로토콜 | 인터넷 프로토콜 버전 6(IPv6) |
포트 번호 | 해당 사항 없음 |
RFC | RFC 8200 |
크기 | 최소: 1,280 옥텟 권장: 1,500 옥텟 최대: 65,575 옥텟 (점보 페이로드 옵션 사용 시) |
IPv6 패킷 헤더 | |
버전 | 4비트. 인터넷 프로토콜 버전 (현재 IPv6은 6으로 설정됨). |
트래픽 클래스 | 8비트. 서비스 품질(QoS) 설정을 위해 사용됨. DiffServ 코드 포인트 (DSCP) 및 명시적 혼잡 알림 (ECN)을 포함함. |
흐름 레이블 | 20비트. 같은 흐름에 속하는 패킷들을 식별하는 데 사용됨. |
페이로드 길이 | 16비트. 헤더를 제외한 패킷 페이로드의 전체 길이를 바이트 단위로 나타냄. |
다음 헤더 | 8비트. 페이로드 다음에 오는 확장 헤더의 유형을 지정하거나, 페이로드가 TCP, UDP 등과 같은 전송 계층 프로토콜 데이터를 포함하는 경우 해당 프로토콜을 지정함. |
홉 제한 | 8비트. 패킷이 네트워크에서 순환하는 것을 방지하기 위해 각 홉 (라우터)을 통과할 때마다 감소하는 값. 0에 도달하면 패킷은 폐기됨. |
출발지 주소 | 128비트. 패킷을 보낸 인터페이스의 IPv6 주소. |
목적지 주소 | 128비트. 패킷을 받을 인터페이스의 IPv6 주소. |
2. 고정 헤더
IPv6 패킷은 40옥텟(320비트) 크기의 고정 헤더로 시작하며, IPv4 헤더보다 단순화되어 효율적인 처리가 가능하다.[4] 고정 헤더는 다음과 같은 필드들로 구성된다.
오프셋 | 옥텟 | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
옥텟 | 비트 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | 버전 | 트래픽 클래스 | 플로우 레이블 | |||||||||||||||||||||||||||||
4 | 32 | 페이로드 길이 | 다음 헤더 | 홉 제한 | |||||||||||||||||||||||||||||
8 | 64 | 송신자 주소 | |||||||||||||||||||||||||||||||
12 | 96 | ||||||||||||||||||||||||||||||||
16 | 128 | ||||||||||||||||||||||||||||||||
20 | 160 | ||||||||||||||||||||||||||||||||
24 | 192 | 수신자 주소 | |||||||||||||||||||||||||||||||
28 | 224 | ||||||||||||||||||||||||||||||||
32 | 256 | ||||||||||||||||||||||||||||||||
36 | 288 |
- 버전 (Version) (4비트): IPv6임을 나타낸다.
- 트래픽 클래스 (Traffic Class) (8비트): 패킷의 우선순위 및 서비스 품질(QoS)을 지정한다.
- 플로우 레이블 (Flow Label) (20비트): 송신자와 수신자 간의 패킷 흐름을 식별한다.
- 페이로드 길이 (Payload Length) (16비트): 확장 헤더를 포함한 페이로드의 크기를 옥텟 단위로 나타낸다.
- 다음 헤더 (Next Header) (8비트): 다음 헤더의 유형을 지정한다.
- 홉 제한 (Hop Limit) (8비트): 패킷이 네트워크 내에서 무한 루프에 빠지는 것을 방지한다.
- 송신자 주소 (Source Address) (128비트): 송신 노드의 IPv6 주소를 나타낸다.
- 수신자 주소 (Destination Address) (128비트): 수신 노드의 IPv6 주소를 나타낸다.
IPv6 헤더에는 오류 감지를 위한 체크섬이 없다. 이는 현재의 데이터 링크 계층 기술과 전송 계층/응용 계층 프로토콜이 충분한 오류 감지 능력을 가지고 있다고 간주하기 때문이다.[12]
2. 1. 버전 (Version)
4비트로 구성되며, IPv6임을 나타내는 6 () 값을 가진다.2. 2. 트래픽 클래스 (Traffic Class)
트래픽 클래스 필드는 8비트(상위 6비트 + 하위 2비트)로 구성되며, 패킷의 우선순위 및 서비스 품질(QoS)을 지정한다.[5][6] 상위 6비트는 차등 서비스(DiffServ, DS) 필드로, 패킷 분류에 사용된다.[5][6] 현재 모든 표준 DS 필드는 '0' 비트로 끝난다. 두 개의 '1' 비트로 끝나는 DS 필드는 로컬 또는 실험적인 용도로 사용된다.[7] 나머지 하위 2비트는 명시적 혼잡 알림(ECN)에 사용되어 네트워크 혼잡 제어를 지원한다.[8] 우선순위 값은 소스에서 혼잡 제어를 제공하는 트래픽과 혼잡 제어를 제공하지 않는 트래픽의 범위로 세분화된다.2. 3. 플로우 레이블 (Flow Label)
플로우 레이블은 20비트 크기로, 소스와 목적지 사이의 패킷 흐름을 식별하는 높은 엔트로피 식별자이다. 플로우는 TCP 세션이나 미디어 스트림과 같이 패킷들의 그룹을 의미한다. 특수 플로우 레이블 값인 0은 패킷이 어떤 플로우에도 속하지 않음을 나타낸다. 이전에는 소스 주소 및 포트, 목적지 주소 및 포트, 프로토콜(마지막 ''다음 헤더'' 필드의 값)로 플로우를 식별했다.[1]플로우 레이블은 원래 실시간 애플리케이션 서비스를 제공하기 위해 만들어졌으며,[4] QoS와 비슷한 목적을 가진다. 0이 아닌 플로우 레이블 값을 사용하면, 라우터 및 스위치는 동일한 플로우 레이블, 송신자 주소, 수신자 주소를 가진 패킷을 동일한 경로로 전송하여,[9][10] 패킷 재정렬을 방지한다. 또한, 플로우 레이블은 스푸핑된 패킷을 감지하는 데에도 도움을 줄 수 있다.[1]
2. 4. 페이로드 길이 (Payload Length)
확장 헤더를 포함한 페이로드의 크기를 옥텟 단위로 나타내는 16비트 필드이다. ''홉 바이 홉'' 확장 헤더가 점보 페이로드 옵션을 전달하는 경우에는 0으로 설정된다.[11]2. 5. 다음 헤더 (Next Header)
8비트로 구성되며, 다음 헤더의 유형을 지정한다. 이 필드는 일반적으로 패킷의 페이로드에서 사용되는 전송 계층 프로토콜을 지정한다. 패킷에 확장 헤더가 있는 경우, 이 필드는 다음에 오는 확장 헤더를 나타낸다. 값은 IPv4의 프로토콜 필드와 공유되며, 두 필드는 동일한 기능을 갖는다(IP 프로토콜 번호 목록 참조).[1]2. 6. 홉 제한 (Hop Limit)
홉 제한(Hop Limit)은 8비트 필드이며, 각 라우터(전달 노드)를 거칠 때마다 1씩 감소한다. 이 값이 0이 되면 해당 패킷은 폐기된다. 단, 수신 노드는 홉 제한이 0이더라도 패킷을 정상적으로 처리한다.[1] 홉 제한은 IPv4의 생존 시간(TTL) 필드와 유사한 역할을 하며, 패킷이 네트워크 내에서 무한 루프에 빠지는 현상을 방지한다.2. 7. 소스 주소 (Source Address)
128비트 길이의 송신 노드의 IPv6 주소이다.[4]2. 8. 목적지 주소 (Destination Address)
목적지 주소는 목적지 노드의 IPv6 주소를 나타내며 128 비트로 구성된다. 목적지 노드의 IPv6 유니캐스트 또는 멀티캐스트 주소가 될 수 있다.[4]3. 확장 헤더
IPv6 패킷은 필요에 따라 다양한 기능을 제공하는 확장 헤더를 포함할 수 있다. 확장 헤더는 고정 헤더와 상위 계층 프로토콜 헤더 사이에 위치하며, "다음 헤더" 필드를 통해 연결된다. 고정 헤더의 "다음 헤더" 필드는 첫 번째 확장 헤더의 유형을 나타내고, 마지막 확장 헤더의 "다음 헤더" 필드는 패킷 페이로드 내의 상위 계층 프로토콜 헤더 유형을 나타낸다. 모든 확장 헤더는 8옥텟의 배수 크기를 가지며, 일부는 이 요구 사항을 충족하기 위해 내부 패딩을 사용한다.
여러 확장 헤더가 정의되어 있으며, 앞으로 새로운 확장 헤더가 정의될 수 있다. 대부분의 확장 헤더는 패킷의 목적지에서 검사 및 처리된다. "홉 바이 홉 옵션"은 중간 노드에서 처리 및 수정될 수 있으며, 존재하는 경우 가장 먼저 와야 한다. 모든 확장 헤더는 선택 사항이며, "목적지 옵션" 헤더(두 번 나타날 수 있음)를 제외하고 최대 한 번 나타날 수 있다.
노드가 특정 확장 헤더를 인식하지 못하면 패킷을 폐기하고 "매개변수 문제" 메시지(ICMPv6 유형 4, 코드 1)를 보내야 한다.
다음은 정의된 확장 헤더와 그 "다음 헤더" 필드 값, 그리고 간략한 설명이다. (고정 헤더 다음에 둘 이상의 확장 헤더가 있는 경우 선호하는 순서)
확장 헤더 | 다음 헤더 필드 값 | 설명 |
---|---|---|
홉 바이 홉 옵션 | 0 | 경로상의 모든 장치에서 검사해야 하는 옵션 |
라우팅 | 43 | 데이터그램의 경로를 지정하는 방법 (이동 IPv6와 함께 사용) |
단편화 | 44 | 데이터그램의 단편화 매개변수를 포함 |
인증 헤더(AH) | 51 | 패킷의 대부분의 부분을 인증하는 데 사용되는 정보 포함 |
캡슐화 보안 페이로드(ESP) | 50 | 보안 통신을 위한 암호화된 데이터 전송 |
목적지 옵션 (상위 계층 헤더 앞) | 60 | 패킷의 목적지에서만 검사해야 하는 옵션 |
이동성 (현재 상위 계층 헤더 없음) | 135 | 이동 IPv6와 함께 사용되는 매개변수 |
호스트 식별 프로토콜 | 139 | 호스트 식별 프로토콜 버전 2(HIPv2)에 사용 |
Shim6 프로토콜 | 140 | Shim6에 사용 |
예약됨 | 253 | 실험 및 테스트에 사용 |
예약됨 | 254 | 실험 및 테스트에 사용 |
다음 헤더 필드의 값 59(다음 헤더 없음)는 이 헤더 다음에 상위 계층 프로토콜의 헤더를 포함하여 어떠한 다음 헤더도 없음을 나타낸다. 즉, IPv6 패킷이 해당 헤더에서 바로 끝난다는 것을 의미한다. 페이로드 길이는 비어 있어야 한다. 그러나 패킷의 첫 번째 헤더의 페이로드 길이가 모든 확장 헤더의 길이보다 크면, 페이로드에 여전히 데이터가 있을 수 있다. 이 데이터는 호스트에서 무시해야 하지만, 라우터에서 변경되지 않고 전달되어야 한다.
3. 1. 홉 바이 홉 옵션 (Hop-by-Hop Options)
홉 바이 홉 옵션(Hop-by-Hop Options) 확장 헤더는 송신 노드 및 수신 노드를 포함하여 패킷 경로 상의 모든 노드에서 검사하고 수정할 수 있다. 인증 시에는 경로에 따라 변경될 수 있는 옵션 값은 무시된다. 이 확장 헤더는 최소 8옥텟 크기이며, 공간이 부족하여 옵션이 더 추가되어야 하는 경우, 옵션과 패딩을 포함하는 8옥텟 블록이 모든 옵션이 표현될 때까지 헤더에 반복적으로 추가된다.홉 바이 홉 옵션 확장 헤더의 형식은 다음과 같다.
오프셋 | 옥텟 | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
옥텟 | 비트 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | 다음 헤더 | 확장 헤더 길이 | 옵션 및 패딩 | |||||||||||||||||||||||||||||
4 | 32 | 옵션 및 패딩 | |||||||||||||||||||||||||||||||
8 | 64 | 옵션 및 패딩(임의)... | |||||||||||||||||||||||||||||||
12 | 96 |
- 다음 헤더 (8비트): 다음 헤더의 유형을 지정한다.
- 확장 헤더 길이 (8비트): 첫 번째 8옥텟을 제외한 8옥텟 단위로 표시되는 이 헤더의 크기이다.
- 옵션 (가변): 하나 이상의 옵션과 옵션을 정돈하고 헤더 길이를 8옥텟의 배수로 만들기 위한 패딩을 포함한다. 옵션은 TLV 형식이다.
IPv6의 선택적 기능인 점보 페이로드 옵션은 ''홉 바이 홉 옵션'' 확장 헤더에 있으며, 32비트 길이 필드를 사용하여 최대 4GB보다 1옥텟 적은 페이로드(232−1 = 4294967295 옥텟)를 가진 패킷 교환을 허용한다. 이러한 페이로드를 가진 패킷을 점보그램이라고 한다.
3. 2. 목적지 옵션 (Destination Options)
목적지 옵션 확장 헤더는 패킷의 목적지 노드에서만 처리되어야 하는 옵션을 정의한다. 홉 바이 홉 옵션과 마찬가지로, 여러 옵션과 패딩을 포함할 수 있다.목적지 옵션 확장 헤더는 최소 8옥텟 크기이다. 해당 공간에 맞지 않는 옵션이 더 많이 있는 경우, 옵션과 패딩을 포함하는 8옥텟 블록이 모든 옵션이 표현될 때까지 헤더에 반복적으로 추가된다.
오프셋 | 옥텟 | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
옥텟 | 비트 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | 다음 헤더 | 확장 헤더 길이 | 옵션 및 패딩 | |||||||||||||||||||||||||||||
4 | 32 | 옵션 및 패딩 | |||||||||||||||||||||||||||||||
8 | 64 | 옵션 및 패딩(임의)... |
; '''다음 헤더''' (8비트): 다음 헤더의 유형을 지정한다.
; '''확장 헤더 길이''' (8비트): 첫 번째 8옥텟을 제외한 8옥텟 단위로 표시되는 이 헤더의 크기.
; '''옵션''' (가변): 하나 이상의 옵션과 옵션을 정돈하고 헤더 길이를 8옥텟의 배수로 만들기 위한 패딩을 포함한다. 옵션은 TLV 형식이다.
3. 3. 라우팅 (Routing)
''라우팅'' 확장 헤더는 패킷이 목적지로 가기 전에 거쳐야 하는 중간 노드들을 지정하는 데 사용된다. 이 헤더의 크기는 최소 8옥텟이며, 유형별 데이터가 4옥텟에 들어가지 않으면 모든 유형별 데이터가 들어갈 때까지 8옥텟 블록이 헤더에 반복적으로 추가된다.오프셋 | 옥텟 | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
옥텟 | 비트 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | 다음 헤더 | 확장 헤더 길이 | 라우팅 유형 | 남은 세그먼트 | ||||||||||||||||||||||||||||
4 | 32 | 유형별 데이터 | |||||||||||||||||||||||||||||||
8 | 64 | 유형별 데이터 (선택 사항) |
- 다음 헤더 (8비트): 다음 헤더의 유형을 나타낸다.
- 확장 헤더 길이 (8비트): 첫 번째 8옥텟을 제외하고, 8옥텟 단위로 표시된 이 헤더의 크기다.
- 라우팅 유형 (8비트): IANA에서 할당한 0부터 255까지의 값이다.[2]
- 남은 세그먼트 (8비트): 패킷이 최종 목적지에 도달하기 전에 방문해야 하는 노드의 수다.
- 유형별 데이터 (가변): 이 유형의 라우팅 헤더에 속하는 데이터다.
유형 | 상태 | 설명 |
---|---|---|
0 | 폐지됨 | 라우팅 헤더 유형 0은 간단하지만 효과적인 서비스 거부 공격을 가능하게 했기 때문에,[3] 2007년에 폐지되었으며 호스트와 라우터는 이를 무시해야 한다. |
1 | 폐지됨 | DARPA의 지원을 받은 Nimrod 프로젝트에 사용되었다. 2009년에 폐지되었다. |
2 | 허용됨 | 유형 0의 제한된 버전이며, Mobile IPv6에 사용되어 모바일 노드의 홈 주소를 포함할 수 있다. |
3 | 허용됨 | 저전력 및 손실 네트워크용 RPL 소스 라우트 헤더다. |
4 | 허용됨 | 세그먼트 라우팅 헤더(SRH)다. |
253 | 개인적인 용도 | 실제 구현이 아닌 테스트에 사용할 수 있다. RFC3692 스타일 실험 1. |
254 | 개인적인 용도 | 실제 구현이 아닌 테스트에 사용할 수 있다. RFC3692 스타일 실험 2. |
3. 4. 단편화 (Fragment)
경로 MTU보다 큰 패킷을 전송하기 위해, 송신 노드는 패킷을 조각으로 분할한다. "Fragment" 확장 헤더는 원래 (조각화되지 않은) 패킷을 재조립하는 데 필요한 정보를 전달한다.[4]오프셋 | 옥텟 | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
옥텟 | 비트 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | 다음 헤더 | 예약 | 프래그먼트 오프셋 | 예약 | M | |||||||||||||||||||||||||||
4 | 32 | 식별 값 |
- '''다음 헤더''' (8비트): 다음 헤더의 타입을 나타낸다.
- '''예약''' (8비트/2비트): 0으로 고정되어 있다.
- '''프래그먼트 오프셋''' (13비트): 원래 패킷의 단편화 가능한 부분의 시작 부분과 관련된 8옥텟 단위의 오프셋이다.
- '''M 플래그''' (1비트): 1은 추가 프래그먼트가 있음을 의미하며, 0은 이것이 마지막 프래그먼트임을 의미한다.
- '''식별 값''' (32비트): 송신 노드에 의해 생성되는 패킷 식별 번호. 원래 패킷의 재구성에 필요하다.
3. 5. 인증 헤더 (Authentication Header, AH)
IPsec의 일부인 인증 헤더(AH)는 패킷의 무결성 및 인증을 제공하며,[21][22] IPv6와 IPv4에서 동일하게 사용된다. 인증 헤더는 패킷 대부분의 부분을 인증하는 데 사용되는 정보를 포함하며, 다음 헤더 필드 값으로 51을 사용한다.3. 6. 캡슐화 보안 페이로드 (Encapsulating Security Payload, ESP)
IPsec의 일부로, 패킷의 기밀성(암호화)을 제공하며, IPv6와 IPv4에서 동일하게 사용된다.[21][22] 보안 통신을 위한 암호화된 데이터를 전송하며, 다음 헤더 필드 값은 50이다.확장 헤더 | 다음 헤더 필드 값 | 설명 |
---|---|---|
인증 헤더(AH) | 51 | 패킷의 대부분의 부분을 인증하는 데 사용되는 정보 포함 |
캡슐화 보안 페이로드(ESP) | 50 | 보안 통신을 위한 암호화된 데이터 전송 |
4. 페이로드 (Payload)
IPv6 패킷의 페이로드는 TCP 세그먼트나 UDP 데이터그램과 같이 상위 계층 프로토콜에서 제공하는 데이터를 포함한다. 마지막 IPv6 헤더의 ''다음 헤더'' 필드는 이 페이로드의 유형을 나타낸다.[1]
4. 1. 표준 페이로드 길이
IPv6의 페이로드 길이 필드는 16비트 크기로, 최대 65,535 옥텟의 페이로드 길이를 지정할 수 있다. 실제로는 호스트는 패킷을 조각화할 필요가 없도록 경로 MTU 검색을 사용하여 최대 사용 가능한 페이로드 길이를 결정한다(발신자에서 수신자로 가는 경로에서 최소 MTU를 생성). 대부분의 데이터 링크 계층 프로토콜은 65,535 옥텟보다 훨씬 작은 MTU를 가지고 있다.4. 2. 점보그램 (Jumbogram)
IPv6의 선택적 기능인 ''점보 페이로드'' 옵션은 ''홉 바이 홉 옵션'' 확장 헤더에 있으며, 32비트 길이 필드를 사용하여 최대 4GB보다 1옥텟 적은 페이로드(232−1 = 4294967295 옥텟)를 가진 패킷 교환을 허용한다. 이러한 페이로드를 가진 패킷을 점보그램이라고 한다.TCP와 UDP 모두 16비트(길이, 긴급 데이터 포인터)로 제한된 필드를 포함하므로 IPv6 점보그램을 지원하려면 전송 계층 프로토콜 구현을 수정해야 한다. 점보그램은 MTU가 65583 옥텟보다 큰 링크(페이로드의 경우 65535 옥텟 이상, 고정 헤더의 경우 40 옥텟, ''홉 바이 홉'' 확장 헤더의 경우 8 옥텟)에만 관련이 있다. 65535 옥텟보다 큰 패킷을 처리할 수 있는 링크 계층 프로토콜은 몇 개 없다.
5. 단편화 (Fragmentation)
IPv6에서 라우터는 IPv4와 달리 패킷을 단편화하지 않는다. 대신, 목적지 링크의 최대 전송 단위(MTU)를 초과하는 패킷은 삭제되고, 송신 노드에게 ''Packet too big'' ICMPv6 메시지를 통해 이 사실을 알린다.[4] 이는 IPv4에서 ''분할 금지'' 비트가 설정된 경우와 유사하다.
IPv6의 최종 노드는 경로 MTU 탐색을 수행하여 전송할 패킷의 최대 크기를 결정해야 한다. 또는 상위 계층 프로토콜이 페이로드 크기를 제한해야 한다. 만약 상위 계층 프로토콜이 페이로드 크기를 제한할 수 없는 경우, 송신 호스트는 ''Fragment'' 확장 헤더를 사용하여 종단 간 단편화를 수행할 수 있다.
IPv6 데이터를 전송하는 모든 데이터 링크 계층은 단편화를 거치지 않고도 최대 1,280 바이트의 IP 패킷을 전송할 수 있어야 한다. 따라서 전송 엔드포인트는 패킷 크기를 1,280 바이트로 제한하여 단편화 또는 경로 MTU 탐색을 피할 수 있다.
5. 1. 단편화 과정
IPv6에서 라우터는 IPv4와 달리 패킷을 분할하지 않는다. 목적지 링크의 최대 전송 단위(MTU) 크기를 초과하는 패킷은 삭제되고, ''Packet too big'' ICMPv6 메시지로 전송 노드에 알린다. 이는 IPv4에서 ''분할 금지'' 비트가 설정된 경우와 유사하다. IPv6의 최종 노드는 경로 MTU 탐색을 수행하여 전송할 패킷의 최대 크기를 결정하고, 상위 계층 프로토콜은 페이로드 크기를 제한해야 한다. 상위 계층 프로토콜이 이를 수행할 수 없는 경우, 전송 호스트는 ''Fragment'' 확장 헤더를 사용할 수 있다.IPv6 데이터를 전송하는 모든 데이터 링크 계층은 최대 1,280 바이트를 포함하는 IP 패킷을 전송할 수 있어야 한다. 따라서 전송 엔드포인트는 패킷을 1,280 바이트로 제한하여 분할 또는 경로 MTU 탐색의 필요성을 피할 수 있다.
원래 패킷은 조각별 헤더(고정 헤더 및 일부 확장 헤더), "Fragment" 확장 헤더, 원래 페이로드의 일부로 구성된 조각들로 나뉜다. 각 조각은 순서에 상관없이 전송될 수 있다.
- 첫 번째 조각: 조각별 헤더, 0 Offset을 포함하는 ''Fragment'' 확장 헤더, 나머지 원래 확장 헤더, 원래 상위 계층 헤더(또는 ESP 헤더), 그리고 원래 페이로드의 일부로 구성된다.
- 후속 조각: 조각별 헤더, ''Fragment'' 확장 헤더, Fragment Offset으로 식별되는 원래 페이로드의 일부로 구성된다.
조각별 헤더는 원래 패킷에 ''라우팅(Routing)'' 또는 ''홉-바이-홉(Hop-by-Hop)'' 확장 헤더 포함 여부에 따라 결정된다.
- 라우팅, 홉-바이-홉 헤더 모두 없음: 조각별 부분은 고정 헤더만 포함.
- 라우팅 헤더 존재: 조각별 헤더는 고정 헤더와 ''라우팅(Routing)'' 헤더를 포함한 모든 확장 헤더를 포함.
- 홉-바이-홉 헤더 존재: 조각별 헤더는 고정 헤더와 ''홉-바이-홉(Hop-by-Hop)'' 확장 헤더만 포함.
어떤 경우든 조각별 부분의 마지막 헤더는 다음 헤더가 ''Fragment'' 확장 헤더임을 나타내기 위해 ''다음 헤더(Next Header)'' 값을 44로 설정한다. 각 ''Fragment'' 확장 헤더는 마지막 헤더를 제외하고 ''M'' 플래그를 1로 설정한다(더 많은 조각이 있음을 나타냄). 마지막 헤더는 0으로 설정된다. 각 조각의 길이는 마지막 조각을 제외하고 8옥텟의 배수이다.
조각별 헤더는 역사적으로 "분할할 수 없는 부분"이라고 불렸으며, 2014년 이전에는 나머지 헤더를 조각화할 수 있었다. 이제 실제로 조각화할 수 있는 헤더는 없다.
수신 노드는 모든 조각들을 수집하고, 각 조각을 표시된 오프셋에 배치하고, 조각을 전달한 패킷의 ''Fragment'' 확장 헤더를 버림으로써 원래 패킷을 재조립한다. 조각을 포함하는 패킷은 순서대로 도착할 필요가 없으며, 수신 노드에 의해 재정렬된다.
조각을 가진 첫 번째 패킷을 수신한 후 60초 이내에 모든 조각이 수신되지 않으면 원래 패킷의 재조립이 중단되고 모든 조각이 폐기된다. 첫 번째 조각(고정 헤더 포함)이 수신되었지만 하나 이상의 조각이 누락된 경우, ''시간 초과'' 메시지(ICMPv6 유형 3, 코드 1)가 조각화된 패킷을 생성한 노드로 반환된다.
재조립 노드가 다른 조각과 겹치는 조각을 감지하면 원래 패킷의 재조립이 중단되고 모든 조각이 삭제된다. 노드는 정확히 중복된 조각을 서로 겹치는 것으로 취급하는 대신, 선택적으로 무시할 수 있다.
수신 호스트는 재조립 후 최대 1500바이트를 포함하는 조각화된 IP 데이터그램을 재조립하기 위해 최선을 다해야 한다. 호스트는 1,500바이트보다 큰 조각화된 데이터그램을 재조립을 시도할 수 있지만, 재조립된 패킷이 1,500바이트보다 커질 것으로 보이는 경우, 해당 데이터그램을 조용히 폐기할 수도 있다. 따라서 송신자는 수신자가 그러한 대형 데이터그램을 재조립할 수 있다는 것을 알지 못하는 한, 총 재조립 크기가 1,500바이트보다 큰 조각화된 IP 데이터그램을 보내는 것을 피해야 한다.
패킷의 단편화 불가능한 부분은 원본 패킷의 고정 헤더와 (존재한다면) 몇몇 확장 헤더로 구성되어 있다. "몇몇 확장 헤더"란 라우팅 확장 헤더까지의 모든 확장 헤더, 혹은 홉 바이 홉 확장 헤더를 말한다. 그러한 확장 헤더가 없을 경우, 단편화 불가능한 부분은 단순히 고정 헤더만으로 구성된다.
단편화 불가능한 부분의 마지막 헤더의 다음 헤더 필드에는 프래그먼트 확장 헤더가 뒤따른다는 것을 나타내기 위해 44가 설정된다. 프래그먼트 확장 헤더 뒤에는 원본 패킷의 나머지 조각이 이어진다.
첫 번째 조각(들)은 (존재한다면) 확장 헤더를 포함하며, 그 뒤에 나머지 페이로드가 이어진다. 마지막 조각을 제외하고, 각 조각의 길이는 8옥텟의 배수이다.
또한 플래그가 0으로 설정된 마지막 패킷을 제외하고, 모든 프래그먼트 확장 헤더의 M 플래그는 1(아직 조각이 더 있다는 것을 나타냄)로 설정된다.[4]
5. 2. 재조립 과정
수신 노드는 모든 조각들을 수집하고, 각 조각을 표시된 오프셋에 배치하고, 조각을 전달한 패킷의 ''Fragment'' 확장 헤더를 버림으로써 원래 패킷을 재조립한다. 조각을 포함하는 패킷은 순서대로 도착할 필요가 없으며, 수신 노드에 의해 재정렬된다.조각을 가진 첫 번째 패킷을 수신한 후 60초 이내에 모든 조각이 수신되지 않으면 원래 패킷의 재조립이 중단되고 모든 조각이 폐기된다. 첫 번째 조각(고정 헤더 포함)이 수신되었지만 하나 이상의 조각이 누락된 경우, ''시간 초과'' 메시지(ICMPv6 유형 3, 코드 1)가 조각화된 패킷을 생성한 노드로 반환된다.[4]
재조립 노드가 다른 조각과 겹치는 조각을 감지하면 원래 패킷의 재조립이 중단되고 모든 조각이 삭제된다. 노드는 정확히 중복된 조각을 서로 겹치는 것으로 취급하는 대신, 선택적으로 무시할 수 있다.
수신 호스트는 재조립 후 최대 1500바이트를 포함하는 조각화된 IP 데이터그램을 재조립하기 위해 최선을 다해야 한다. 호스트는 1,500바이트보다 큰 조각화된 데이터그램을 재조립을 시도할 수 있지만, 재조립된 패킷이 1,500바이트보다 커질 것으로 보이는 경우, 해당 데이터그램을 조용히 폐기할 수도 있다. 따라서 송신자는 수신자가 그러한 대형 데이터그램을 재조립할 수 있다는 것을 알지 못하는 한, 총 재조립 크기가 1,500바이트보다 큰 조각화된 IP 데이터그램을 보내는 것을 피해야 한다.
6. 보안 (Security)
연구에 따르면 단편화를 활용하여 네트워크 보안 제어를 우회할 수 있는 것으로 나타났다. 그 결과, 2014년에는 매우 병적인 단편화 사례를 피하기 위해 첫 번째 조각을 넘어 IPv6 헤더 체인을 오버플로하는 이전 허용이 금지되었다.[23] 또한, 라우터 광고(RA) 가드 회피에 대한 연구 결과[24], 이웃 탐색을 사용한 단편화는 더 이상 사용되지 않으며, 보안 이웃 탐색(SEND)을 사용한 단편화는 권장되지 않는다.[25]
참조
[1]
문서
Use of the IPv6 Flow Label as a Transport-Layer Nonce to Defend Against Off-Path Spoofing Attacks
http://tools.ietf.or[...]
[2]
웹사이트
Internet Protocol Version 6 (IPv6) Parameters: Routing Types
https://www.iana.org[...]
IANA
2021-10-15
[3]
웹사이트
IPv6 Routing Header Security
http://www.secdev.or[...]
EADS
2010-12-03
[4]
간행물
Internet Protocol, version 6 (IPv6) Specification
"//tools.ietf.org/ht[...]
"[[Internet Engineering Task Force"
1998-12
[5]
IETF
Definition of the Differentiated Service Field (DS Field) in the IPv4 and IPv6 Headers
1998-12
[6]
IETF
New Terminology and Clarifications for DiffServ
2002-04
[7]
IETF
Experimental Values in IPv4, IPv6, ICMPv4, ICMPv6, UDP, and TCP Headers
Network Working Group
2006-11
[8]
IETF
The Addition of Explicit Congestion Notification (ECN) to IP
2001-09
[9]
IETF
Textual Conventions for IPv6 Flow Label
2003-09
[10]
IETF
IPv6 Flow Label Specification
2011-11
[11]
IETF
IPv6 Jumbograms
1999-08
[12]
IETF
Technical Criteria for Choosing IP The Next Generation (IPng)
1994-12
[13]
IETF
Host Identity Protocol Version 2 (HIPv2)
"[[Internet Engineering Task Force"
2015-04
[14]
IETF
Shim6: Level 3 Multihoming Shim Protocol for IPv6
Networking Working Group
2009-06
[15]
IETF
Assigning Experimental and Testing Numbers Considered Useful
Network Working Group
2004-01
[16]
웹사이트
Internet Protocol Version 6 (IPv6) Parameters: Routing Types
https://www.iana.org[...]
IANA
2017-11-17
[17]
웹사이트
IPv6 Routing Header Security
http://www.secdev.or[...]
EADS
2010-12-03
[18]
IETF
Deprecation of Type 0 Routing Headers in IPv6
2007-12
[19]
IETF
The Nimrod Routing Architecture
1996-08
[20]
IETF
An IPv6 Routing Header for Source Routes with the Routing Protocol for Low-Power and Lossy Networks (RPL)
"[[Internet Engineering Task Force"
2012-03
[21]
IETF
IP Authentication Header
2005-12
[22]
IETF
IP Encapsulating Security Payload
2005-12
[23]
IETF
Implications of Oversized IPv6 Header Chains
2014-01
[24]
IETF
Implementation Advice for IPv6 Router Advertisement Guard (RA-Guard)
2014-02
[25]
IETF
Security Implications of IPv6 Fragmentation with IPv6 Neighbor Discovery
2013-08
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com