Fragmentation

Motivation

MTU 規範了一個 frame 的 payload 最大可以多少,故而在 Network Layer 我們想要把 Transport Layer 傳來的資料切割成多塊,讓每塊的資料小於 MTU

Implementation

IPv4 有一個欄位為 flag 和 13-bit fragmentation offset 就紀錄了相關資訊:

flag (3 bit)

由三個 bit 組成,各可以為 0 或 1

  • bit 0 = 沒用 (永遠是 0)
  • bit 1 = don’t fragment (DF),設為 1 時如遇到需要 fragmentation 直接丟掉封包
  • bit 2 = more fragment (MF),設為 1 時代表這條資訊後面還有其他 fragment

我們將 transport layer 傳來的資訊做 fragmentation,這些切割成的 Network Layer Packet 稱為 fragment

offset (13 bit)

紀錄這個 packet 中記錄的資訊是完整資訊的哪部分內容,從 0 開始,其數字乘上 8 bytes 就是這個 packet 記錄的資訊再完整資訊中的 offset

舉例來說:offset = 10,代表這是完整資訊從 80 bytes 開始的內容