基礎:網路是什麼

封裝(encapsulation)

想像把禮物裝進層層巢狀的盒子裡郵寄:你包好禮物,放進一個寫著收件人姓名的盒子,再把那盒子放進貼著追蹤標籤的快遞袋,最後把袋子連同路線單裝上貨車。每一層包裝都加上那層處理者所需的資訊,而沒有人會打開禮物。封裝正是如此:當資料往協定堆疊下行時,每一層把上一層交來的資料包進自己的標頭(有時還有尾標)之內,而不碰裡面的內容。

發送端逐步來看:你的應用資料在 TCP 於前面加上含連接埠與序號的標頭時,成為傳輸層區段的酬載。整個區段在 IP 於前面加上含來源與目的 IP 位址的標頭時,成為網路層資料報的酬載。那資料報在乙太網路於前面加上含 MAC 位址的標頭(並在後面附上錯誤檢查尾標)時,成為連結層訊框的酬載。位元上線。接收端則反向進行——解封裝(decapsulation)——每一層讀取並剝除自己的標頭,把內層酬載往上傳。每一層的標頭只對另一台主機上的對等層有意義。

封裝正是讓分層真正運作的關鍵:下層把它從上層收到的任何東西都當成不透明的酬載,所以它永遠不需要理解上層協定。這正是為何 IP 能毫無差別地承載 TCP 或 UDP、乙太網路能毫不在意地承載 IPv4 或 IPv6。它也解釋了協定開銷——每一層的標頭都加上位元組——並且是穿隧(tunneling)與 VPN 的基礎,後者把一整個封包包成另一個封包的酬載(例如把 IP 包進 IPsec)。

你的 HTTP 請求是這樣傳送的:[乙太網路標頭 [ IP 標頭 [ TCP 標頭 [ HTTP 資料 ] ] ] 尾標]——四層巢狀包裝,每一層由一個層加上、且只被目的端那層的對等層讀取。

每一層的標頭包住酬載;下層從不打開裡面的東西。

下層把上層交來的資料當成不透明的酬載——它不理解(也無需理解)。這份不透明正是重點所在,也是為何某一層能被替換而不擾動其他層的原因。

又稱
封裝包裝