인터넷 프로토콜은 네트워크 간의 트래픽을 가능하게 한다. 설계상 다양한 물리적 성질을 가진 네트워크를 수용하며, 링크 계층에서 사용되는 하부 전송 기술로부터 독립적이다. 하드웨어가 다른 네트워크들은 일반적으로 전송 속도뿐만 아니라최대 전송 단위(MTU)도 다르다. 한 네트워크가 MTU가 더 작은 네트워크로 데이터그램을 전송하고자 할 때, 데이터그램을단편화할 수 있다. IPv4에서 이 기능은인터넷 계층에 배치되었으며, 호스트가 이러한 문제에 노출되는 것을 제한하기 위해 IPv4 라우터에서 수행된다.
라우터가 패킷을 수신하면 목적지 주소를 확인하고 사용할 출력 인터페이스와 해당 인터페이스의 MTU를 결정한다. 패킷 크기가 MTU보다 크고 패킷 헤더의 DF(Don't Fragment) 비트가 0으로 설정되어 있으면 라우터는 패킷을 단편화할 수 있다.
라우터는 패킷을 단편들로 나눈다. 각 단편의 최대 크기는 출력 MTU에서 IP 헤더 크기(최소 20바이트, 최대 60바이트)를 뺀 값이다. 라우터는 각 단편을 자체 패킷에 넣으며, 각 단편 패킷에는 다음과 같은 변경 사항이 적용된다.
- 총 길이 필드는 단편 크기가 된다.
- 추가 단편(MF) 플래그는 마지막 단편을 제외한 모든 단편에 대해 설정되며, 마지막 단편은 0으로 설정된다.
- 단편 오프셋 필드는 원래 데이터 페이로드에서의 단편 오프셋을 기준으로 설정된다. 이는 8바이트 블록 단위로 측정된다.
- 헤더 체크섬 필드가 재계산된다.
예를 들어, MTU가 1,500바이트이고 헤더 크기가 20바이트인 경우, 단편 오프셋은
의 배수(0, 185, 370, 555, 740 등)가 된다.
한 라우터에서 패킷이 단편화되고, 그 단편들이 다른 라우터에서 추가로 단편화되는 것이 가능하다. 예를 들어, 20바이트 IP 헤더를 포함하여 4,520바이트인 패킷이 MTU가 2,500바이트인 링크에서 두 개의 패킷으로 단편화된다.
| 단편 | 크기 (바이트) | 헤더 크기 (바이트) | 데이터 크기 (바이트) | 플래그 추가 단편 | 단편 오프셋 (8바이트 블록) |
|---|
| 1 | 2,500 | 20 | 2,480 | 1 | 0 |
| 2 | 2,040 | 20 | 2,020 | 0 | 310 |
전체 데이터 크기는 유지된다: 2,480바이트 + 2,020바이트 = 4,500바이트. 오프셋은
과
이다.
MTU가 1,500바이트인 링크로 전달될 때, 각 단편은 다시 두 개의 단편으로 단편화된다.
| 단편 | 크기 (바이트) | 헤더 크기 (바이트) | 데이터 크기 (바이트) | 플래그 추가 단편 | 단편 오프셋 (8바이트 블록) |
|---|
| 1 | 1,500 | 20 | 1,480 | 1 | 0 |
| 2 | 1,020 | 20 | 1,000 | 1 | 185 |
| 3 | 1,500 | 20 | 1,480 | 1 | 310 |
| 4 | 560 | 20 | 540 | 0 | 495 |
마찬가지로 데이터 크기는 유지된다: 1,480 + 1,000 = 2,480, 그리고 1,480 + 540 = 2,020.
또한 이 경우, MF 비트는 1이 포함된 채로 도착한 모든 단편에 대해 1로 유지되며, 도착하는 마지막 단편에 대해서는 평소와 같이 작동한다. 즉, MF 비트는 마지막 단편에서만 0으로 설정된다. 그리고 물론 식별(Identification) 필드는 모든 재단편화된 단편에서 동일한 값을 계속 가진다. 이러한 방식으로 단편이 다시 단편화되더라도 수신자는 처음에 모두 동일한 패킷에서 시작되었음을 알 수 있다.
마지막 오프셋과 마지막 데이터 크기는 전체 데이터 크기를 계산하는 데 사용된다:
.