IP Datagram은 헤더(header)와 페이로드(Payload(data))의 두 부분으로 구성된 가변 길이의 패킷이다.
Header format
첫 번째 줄
VER(4bit) : version은 ipv4인지 ipv6인지 여부를 알려주는 역할을 한다.
HLEN(4bit) : Header length 헤더의 길이 | 최소 20byte 이상을 가지고 있다. | *ex.7.7
Service type(8bit) : IETF(품질관)가 서비스 유형에서 차별화된 서비스로 이름을 변경
Total length(16bit) : 전체 길이, 0~65,536의 길이를 가질 수 있다. 최소 길이는 헤더가 20byte만큼 차지하니까 20이상은 됨
두 번째 줄
Identification(16bit) : 조각화에 사용된다.
- 시퀀스 번호
- 주소 및 사용자 프로토콜과 함께 사용하여 데이터그램을 고유하게 식별한다.(IP주소 + 시퀀스 번호)
Flags(3bit) : 조각화에 사용된다.
Fragmentation offset : 조각화에 사용된다.
세번째 줄
Time-to-live(8bit) : Routing Loop 방지, Packet이 전파되는 범위를 제한하는 용도
Header checksum(16bit) : 헤더의 오류 탐지를 담당한다.
Example. IPv4 패킷 구성
*TTL(Time-to-live)
IPv4 패킷에서 protocol 필드 값에 따른 프로토콜
- 1 : ICMP
- 2 : IGMP
- 6 : TCP
- 17 : UDP
- 89 : OSPF
Header Checksum 예제
Fragmentaion | 플래그먼테이션
IP 데이터그램이 다른 네트워크를 통과할 수 있다는 것을 의미한다.
각 라우터는 받은 프레임에서 IP 데이터그램을 캡슐화를 해제하고 처리한 후 다른 프레임에 캡슐화한다.
받은 프레임의 형식과 크기는 해당 프레임이 통과한 물리적 네트워크에서 사용하는 프로토콜에 따라 달라진다.
예를 들어, LAN과 WAN을 연결하는 라우터가 있다면, 해당 라우터는 LAN 형식의 프레임을 받아 WAN 형식의 프레임을 보냅니다.
Flag : 3bit
- 첫 번째 비트는 예약되어 있다.
- 두 번째 비트는 데이터그램을 분할하지 않아야 함을 나타내는 “분할 금지” 비트입니다. 물리적 네트워크가 데이터그램을 전달할 수 없으므로 ICMP 오류 메시지를 소스 호스트에게 발행합니다.
- 세 번째 비트는 이 이후에 더 많은 프래그먼트가 있다는 것을 나타내는 “더 많은 분할” 비트입니다.
Maximum Transfer Unit (MTU)
네트워크 레이어에서 한 번에 전송할 수 있는 최대 프로토콜 데이터 단위(PDU)의 크기를 말한다.
이는 각 링크 계층 프로토콜의 프레임 포맷 중 하나의 특징이다.
데이터 그램의 총 크기는 최대 크기보다 작아야 한다.
Fragmentation Field
Fragmentation offset : 13bit
전체 데이터그램에 대한 이 조각의 상대적 위치를 표시한다.
이 중에서 offset은 파편화된 패킷들의 시작과 끝 위치를 알려주기 위해서 필요하다.
파편화는 8의 배수로 자르게 된다. Fragmentation Offset이 13bit밖에 없기 때문이다.
Example
Offset 앞에 0,1은 more fragment bit이다.
0이면 패킷이 뒤에 이어서 더이상 들어오지 않는다는 뜻이다.