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 開始的內容