資料連結層

資料連結層(data link layer)

想像你的包裹最終要送到全國另一端,但此刻它只是放在一台本地分揀貨車上,而這台車只開到隔壁鎮。司機不在乎最終地址;他唯一的任務,就是把這批貨安全地從這裡送到下一站、再交接出去。資料連結層就是這「一段本地跳躍」。網路層操心的是橫跨整個網際網路的端到端旅程;連結層只操心如何把位元送過剛好一條線、一條光纖或一段無線跳躍——從一個節點直接送到掛在同一條連結上的下一個節點。

具體來說,連結層拿到網路層往下交的封包後,會把它包進一個訊框(frame):在前面加上標頭、後面常加上結尾,給這串位元一個清楚的開頭與結尾、一組來源與目的的連結位址,通常還有一個錯誤檢查欄位。接著它把訊框交給實體層,由實體層真正把位元當成訊號送出去。在連結的另一端,接收方的連結層把訊框拆開、檢查有沒有損壞,再把還原出的封包往上交。它也負責決定當多台裝置共用一條線或一段無線頻道時,誰可以在什麼時候說話——這正是它底下「媒體存取控制子層」的工作。

為什麼要把這件事獨立成一層?因為每一種連結都不一樣。從你的筆電到 Wi-Fi 路由器這一跳、橫跨光纖骨幹這一跳、走銅纜這一跳,各有各的脾氣、錯誤率與共享媒介的規則。讓每種連結各自擁有自己的連結層(乙太網路、Wi-Fi 等等),同時保持上面同一套網路層(IP),網際網路就能讓完全相同的封包跑過天差地遠的實體跳躍。一個誠實的提醒:連結層只把資料送到相鄰的下一個節點,它不負責、也本就不打算把你的資料送過整個網際網路。

你在一台連著 Wi-Fi 的筆電上打開網頁。第一跳,筆電到無線路由器,由 Wi-Fi 連結層處理;路由器往光纖數據機那一跳,由乙太網路連結層處理;橫跨 ISP 的那一跳,又由另一種連結層處理。裡面是同一個 IP 封包,外面卻換了三件不同的訊框外衣。

同一個端到端封包,在每一跳裡都換乘不同的連結層訊框。

連結層是逐跳的,不是端到端的:訊框在每一跳被重新建立、又被丟棄,而裡面的 IP 封包則撐過整段旅程。別把連結(MAC)位址和 IP 位址搞混——它們回答的是不同的問題。

又稱
link layerlayer 2L2鏈路層第二層