일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 단통법
- Linux
- 타이젠
- 블로그
- 문파문파 공략
- 김경문
- 뉴스타파
- arm
- Git
- 우분투
- 손민한
- 조세피난처
- 안드로이드
- 야구
- 리뷰
- 국정원
- 데이터베이스
- 프로야구
- ubuntu 12.04
- python
- mysql
- 태그를 입력해 주세요.
- 인공지능
- Tizen
- ubuntu
- NC다이노스
- NC 다이노스
- 해외직구
- 애플
- 문파문파
- Today
- Total
꿈꾸는 사람.
IPv4, IPv6 packet structure 본문
Internet 프로토콜의 가장 기본인 IPv4과 IPv6의 패킷 형식을 알아보겠다.
1. IPv4 패킷 구조
0 |
4 |
8 |
16 |
31 |
|
VER 4 bits |
HLEN 4 bits |
Type of Service 8 bits |
Total length 16 bits |
||
Identification 16 bits |
Flags 3 bits |
Fragmentation offset 13 bits |
|||
Time-to-live 8 bits |
Protocol 8 bits |
Header checksum 16 bits |
|||
Source IP address |
|||||
Destination IP address |
|||||
Options + padding (0 ~ 40 bits) |
|||||
그림 1.1 IPv4 헤더 구조
(1) 전체구조
VER (버전 숫자)
IP 프코토콜의 버전을 정의한다. IPv4는 4의 값을 가진다.
HLEN (헤더 길이)
패킷 헤더의 전체 길이를 4 바이트 단위로 표시한다.
헤더의 전체 바이트 수는 헤더 길이에 4를 곱하여 구한다.
Type of service (서비스 유형)
서비스 품질에 따라 패킷의 등급을 구분한다. 높은 값을 우선처리하게 된다.
이 필드는 IETF에서 DiffServ (differentiated services)로 재정의하였다.
Total length (전체 길이)
이 필드는 IP 패킷의 전체 바이트 수로 헤더와 페이로드 길이의 합이다.
(2) 부분 상태
Identification (식별자)
패킷을 전송한 근원지 호스트를 나타낸다.
모든 단편에 동일한 값이 지정된다.
Flags (플래그 필드)
비트 |
의미 |
첫 비트 (예약된 비트) |
사용되지 않는다. |
두 번째 비트 (D 비트) |
단편화 금지(do not fragment)를 나타낸다. 0 - 단편화 가능 1 - 단편화 불가능 |
세 번째 비트 (M 비트) |
추가 단편화 비트(more fragment bit)이다. 1 - 첫 번째 단편 또는 중간 단편이다. 0 - 마지막 단편이거나 오직 하나의 단편이다. |
Fragmentation offset (단편 옵셋)
전체 패킷에서 해당 단편의 옵셋을 나타내며 8바이트 단위로 표기한다. 즉, 단편의 옵셋이 100이면 800바이트에서 단편이 시작된다.
(3) 품질 제어
Time to live (수명)
패킷이 방문할 최대 라우터(hop)의 수를 나타낸다.
근원지 호스트에서 이 값을 생성하며, 각 라우터는 이 값을 1씩 감소하고 이 값이 0이되면 라우터는 패킷을 폐기한다.
Protocol (프로토콜)
IP층의 서비스를 사용하는 상위 계층 프로토콜에 부여된 번호.
값 |
Keyword |
Protocol |
References |
0 |
HOPOPT |
IPv6 Hop-by-Hop Option |
RFC 2460 |
1 |
ICMP |
Internet Control Message Protocol |
RFC 792 |
2 |
IGMP |
Internet Group Management Protocol |
RFC 1112 |
3 |
GGP |
Gateway-to-Gateway Protocol |
RFC 823 |
4 |
IP-in-IP |
IP in IP (encapsulation) |
RFC 2003 |
5 |
ST |
Internet Stream Protocol |
RFC 1190, RFC 1819 |
6 |
TCP |
Transmission Control Protocol |
RFC 793 |
7 |
CBT |
Core-based trees |
RFC 2189 |
8 |
EGP |
Exterior Gateway Protocol |
RFC 888 |
9 |
IGP |
Interior Gateway Protocol |
|
10 |
BBN-RCC-MON |
BBN RCC Monitoring |
|
11 |
NVP-II |
Network Voice Protocol |
RFC 741 |
12 |
PUP |
Xerox PUP |
|
13 |
ARGUS |
ARGUS |
|
14 |
EMCON |
EMCON |
|
15 |
XNET |
Cross Net Debugger |
IEN 158 |
16 |
CHAOS |
Chaos |
|
17 |
UDP |
User Datagram Protocol |
RFC 768 |
41 |
IPv6 |
IPv6 Encapsulation |
RFC 2473 |
43 |
IPv6-Route |
Routing Header for IPv6 |
RFC 2460 |
44 |
IPv6-Frag |
Fragment Header for IPv6 |
RFC 2460 |
50 |
ESP |
Encapsulating Security Payload |
RFC 4303 |
51 |
AH |
Authentication Header |
RFC 4302 |
58 |
IPv6-ICMP |
ICMP for IPv6 |
RFC 4443, RFC 4884 |
59 |
IPv6-NoNxt |
No Next Header for IPv6 |
RFC 2460 |
60 |
IPv6-Opts |
Destination Options for IPv6 |
RFC 2460 |
89 |
OSPF |
Open Shortest Path First |
RFC 1583 |
132 |
SCTP |
Stream Control Transmission Protocol |
RFC 2960 RFC 4960 |
135 |
Mobility Header |
Mobility Extension Header for IPv6 |
RFC 6275 |
Header checksum (헤더 검사합)
IP는 비신뢰성 프로토콜로 오류제어를 지원하지 않는다.
하지만, 최소한 IP가 추가한 헤더에 대한 검사는 지원해야 한다.
데이터가 아닌 오직 헤더 부분에 대한 것만 검사한다.
또한 패킷이 라우팅 될 때 TTL 값이 감소하고 단편화 될 때는 식별, 플래그, 단편 옵셋의 값이 변경되기 때문에 검사합은 각각의 라우터에서 다시 계산된다.
(4) 주소
발신지와 목적지 주소
IPv4의 32비트 길이의 주소를 정의한다.
2. IPv6 패킷 구조
그림 2.1. IPv6 패킷 구조
그림 2.2. 기본 헤더
(1) 기본 헤더 형식
VER (버전 숫자)
IP 프코토콜의 버전을 정의한다. IPv6는 6의 값을 가진다.
Traffic class (트래픽 분류)
8비트 트래픽 분류 필드는 IPv4의 서비스 유형 필드와 유사하다.
IP 패킷 마다 서로 다른 서비스 요구사항을 구분하기 위함.
Flow label (흐름 레이블)
20비트 필드로 데이터의 특정한 흐름을 위한 특별한 처리를 제공한다.
IP는 원래 비연결형 프로토콜로 설계되었으나 IP 프로토콜을 연결-지향형으로 사용하려는 경향이 있다. MPLS 기술은 레이블 필드를 이용하여 IPv4 패킷을 MPLS 헤더에 캡슐화하였다. IPv6를 연결-지향형 프로토콜로 사용할 수 있게 한다. |
Payload length (페이로드 길이)
2바이트의 페이로드 길이 필드는 기본 헤더를 제외한 IP 패킷의 길이를 정의한다.
페이로드부의 길이는 (확장헤더 + 상위계층 데이터) < 216 (65536) 까지 가능하다.
IPv4에서는 헤더 길이 필드와 전체 길이 필드의 2개의 필드가 있지만,
IPv6는 기본 헤더의 길이가 40바이트의 고정되어 있어 페이로드의 길이만 정의하면 된다.
다음 헤더 (Next header)
기본헤더 다음에 위치하는 확장 헤더의 종류(존재한다면)를 표시하며 IPv4의 프로토콜 번호와 유사한 역할을 한다.
Hop limit (홉 제한)
IPv4의 TTL 필드와 같은 목적으로 사용된다.
근원지 주소와 목적지 주소
주소 필드는 128비트 (16바이트) 인터넷 주소이다.
16진수 콜론 표기법(colon hexadecimal notation)이 사용되어 주소를 8부분으로 나타낸다.
영역 앞에 있는 0은 생략 가능하고 연속되는 영역이 0으로만 구성되면 0을 모두 제거하고 더블콜론으로 대체하는 0 압축(zero compression)을 사용한다.
페이로드
IPv6 패킷의 페이로드는 아래 그램 2.3과 같다.
IPv4 헤더에 있던 선택사항을 IPv6의 확장 헤더로 설계하였다.
하나 이상의 확장 헤더(선택사항)와 다른 프로토콜(TCP, UDP 등)에서 온 데이터의 조합이다.
각각의 확장 헤더는 2개의 필수적인 필드를 가지며, 특정 선택사항에 관련된 정보가 그 뒤에 따라온다.
각각의 다음 헤더 필드 값은 다음 헤더의 종류(매 홉 선택사항, 목적지 라우팅 선택사항, …)를 결정한다.
마지막 다음 헤더 필드는 전송할 프로토콜(TCP, UDP, …)을 정의한다.
(2) 기본 헤더 형식
매 홉 선택사항 (Hop-by-hop)
데이터그램이 거쳐 가는 모든 라우터에 소스 정보를 전달해야 할 때 사용된다.
전달할 소스 정보는 관리, 디버깅, 제어 기능 등의 정보가 될 수 있다.
매 홉 선택사항의 세 가지 종류
패드 1 |
1바이트 길이. 정렬 목적. 선택사항이 정확하게 한 바이트에 의해 요구사항이 충족되지 못하면, 패드 1이 추가. |
패드 N |
패드 1과 유사. 정렬 목적으로 2바이트 이상이 필요할 때 사용된다. |
점보 페이로드 |
IP 패킷의 페이로드의 길이는 최대 65,535바이트이다. 이보다 긴 페이로드를 정의할 때 점보 페이로드가 사용된다. |
목적지 선택사항 (destination option)
근원지가 정보를 목적지에만 전달할 필요가 있을 때 사용한다.
근원지 경로지정 (source routing)
IPv4의 엄격한 근원지 경로와 유연한 근원지 경로 선택사항의 개념을 혼합한 것이다.
단편화 (fragmentation)
IPv4와 동일한 개념이나 단편화가 발생하는 곳이 다르다.
|
단편화가 발생하는 곳 |
단편화가 발생하는 조건 |
IPv4 |
근원지나 라우터 |
패킷이 이동하는 네트워크의 MTU보다 패킷의 크기가 더 클 경우 |
IPv6 |
원 근원지만 가능. |
경로상 지원 가능한 최소 MTU를 찾는 경로 MTU 발견 기술을 사용하여 단편화를 한다. (이 기술을 사용하지 못하면 MTU의 최소 크기는 1280바이트 이하.) |
인증 (authentication)
발신자 인증 - 메시지 송신자를 증명하는 것으로 메시지가 진짜 송신자로부터 온 것을 확인.
데이터 무결성 보장 – 데이터가 전송 중 변경되지 않은 것을 보장.
보안 페이로드 캡슐화 (ESP, encapsulating security payload)
인증 확장헤더가 제공하는 발신지 인증과 데이터 무결성 보장에 더해 기밀성과 도청에 대한 방비를 제공한다.