網路層:轉送與 IP

IP 資料報(IP datagram)

IP 資料報就是網際網路協定所定義的一個封包:一個標頭(寫好位址的信封)後面接著一段酬載(裡面的貨物)。標頭帶著路由器處理這個封包所需的一切,使它不必拆開貨物,就像一張托運標籤讓分揀中心不必開箱就能轉運一個箱子。

IPv4 標頭通常是 20 個位元組,包含:一個版本欄位(IPv4 為 4)、標頭長度、總長度、一個存活時間(TTL,每經過一台路由器就減一,使打轉的封包終會死亡)、一個協定欄位(說明裡面裝的是什麼,例如 6 代表 TCP、17 代表 UDP、1 代表 ICMP,讓目的端知道該把酬載交給誰)、一個標頭檢查碼(讓路由器抓出毀損的標頭),以及 32 位元的來源與目的 IP 位址。此外還有分段用的欄位(識別碼、旗標、位移)。酬載則是傳輸層往下交來的東西——通常是一個 TCP 區段或一個 UDP 資料報。

有兩個標頭欄位無時無刻都很重要。TTL 防止路由表暫時不一致時封包永遠繞圈:例如從 64 起算,每跳減一,到零就丟棄(這也正是 traceroute 所利用的機制)。協定欄位則是讓目的主機把抵達的資料報解多工、交給正確的上層處理者的黏著劑。IPv6 維持同樣的想法,但採用更精簡、固定大小的標頭,而且不再有逐跳的標頭檢查碼。

一個資料報離開你的筆電時,TTL 為 64、協定為 6(TCP)、來源 192.168.1.20、目的 142.250.71.78。經過 12 跳路由器後,它抵達時 TTL 為 52;目的端讀到協定 6,便把酬載交給 TCP。

標頭被沿途每台路由器讀取;酬載則只有目的端會讀。

IPv4 的標頭檢查碼只涵蓋標頭、不涵蓋酬載——它保護的是位址,不是你的資料。IPv6 乾脆把它整個拿掉,改為信任連結層與傳輸層去抓出毀損。

又稱
IP packetIP datagramIP 封包