數據鏈路層(四)

TCP/IP 系列文章

網絡基礎知識(一)
TCP/IP基礎知識(二)
物理層(三)
數據鏈路層(四)
IP 協議(五)
IP 協議相關技術(六)
TCP與UDP(七)

一、數據鏈路層

1.1 數據鏈路層概覽

數據鏈路層位于物理層和網絡層之間,其設計的初衷就是順利為網絡層提供數據服務,不考慮可靠性,可靠性的部分由傳輸層的TCP協議實現。在數據鏈路層中,數據不再像物理層那樣以 0、1 序列的形式存在,它們被分割為一個一個的 “幀” ,然后再進行傳輸。


如上圖中,箭頭表示數據的具體流動方向和過程。其中路由器負責路由轉發(需要最高層到網絡層進行 IP 協議的分析)。

數據鏈路的信道主要有兩種模式:點對點信道和廣播信道。前者使用一對一的點對點通信方式;后者使用一對多的廣播通信方式,過程比較復雜。針對上圖我們也可以在邏輯上將整個通信過程看成是兩端數據鏈路層之間點對點的通信,如下圖。

點對點的通信

1.2 數據鏈路和鏈路的區別

  • 鏈路的是指從一個結點到相鄰結點的一段物理線路,其中沒有任何其他的交換結點。
  • 數據鏈路則是指在物理線路上添加上控制數據傳輸的協議的硬件和軟件。因此數據鏈路是比鏈路更為深刻的內涵。

1.3 數據鏈路層具體過程

數據鏈路層的數據傳輸單元為“幀”,數據鏈路層的任務是將上層的數據封裝成幀交給物理層傳輸和分析物理層提交的數據幀,提取出上層數據交給網絡層。

數據鏈路層具體過程

具體過程如下:

  • 1、信源的數據鏈路層把網絡層交下來的 IP 數據報添加首部和尾部封裝成幀。如何封裝成幀,請看 1.4 小節。
  • 2、信源把封裝好的數據幀發送給信宿的數據鏈路層;
  • 3、若新宿的數據鏈路層收到的幀無差錯,則從收到的幀中提取出IP數據報上交給網絡層,否則丟棄這個幀;

1.4 封裝成幀

數據鏈路層的主要工作是添加一個幀頭部和幀尾部,不同的數據鏈路層協議可能格式不同,但是基本格式都差不多。


封裝成幀

這里的數據部分,一般有一個最大程度,我們稱為MTU,在 MAC 物理地址里一般是1500個字節。這里要說的是,當數據是由可打印的 ASC2 碼組成的文件時,可以使用特殊的幀定字符來標明一個幀的開始和結束。比如使用 SOH(Start Of Header) - - 0x01 和 EOT(End Of Transmission) -- 0x04 來表示,這樣數據鏈路層就可以識別出幀的開始和結束部位。

二、數據鏈路相關技術

數據鏈路層中幾個重要的概念:分組交換、MAC 地址、根據 MAC 地址轉發、錯誤檢測等。

2.1 分組交換

分組交換是指將較大的數據分割為若干個較小的數據,然后依次發送。使用分組交換的原因是不同的數據鏈路有各自的最大傳輸單元(MTU: Maximum Transmission Unit)。不同的數據鏈路就好比不同的運輸渠道,一輛卡車(對應通信介質)的載重量為 5 噸。那么通過卡車運送 20 噸的貨物就需要把這些貨物分成四部分,每份重 5 噸。如果運輸機的載重量是 30 噸,那么這些貨物不需要分割,直接一架運輸機就可以拉走。

以以太網(一種數據鏈路)為例,它的MTU是 1500 字節,也就是通過以太網傳輸的數據,必須分割為若干幀,每個幀的數據長度不超過 1500 字節。如果上層傳來的數據超過這個長度,數據鏈路層需要分割后再發送。

2.2 MAC地址

MAC 地址是被錄入到網卡 ROM 中的一串數字,長度為 48 比特,它在世界范圍內唯一(不考慮虛擬機自定義 MAC 地址)。由于 MAC 地址的唯一性,它可以被用來區分不同的節點,一旦指定了 MAC 地址,就不可能出現不知道往哪個設備傳輸數據的情況。

2.3 幀的格式

關于幀的格式,這里以以太網幀為例說明。


如上圖,以太網幀最前端有一個前導碼,由數字0和1組合而成,表示以太網幀的開始,也是對端網卡能夠確保預期同步的標志。前導碼的末尾是一個叫做 SFD 的域,值為 11 。在這個域之后是以太網的本體。



一臺網幀本體的前端是以太網的首部,公 14 個字節。分別是 6 個字節的目標 MAC 地址、6 個字節的源 MAC 地址以及 2 個字節的上層協議類型。緊隨其后的是數據,一個數據幀能容納數據的范圍是 46 - 1500 字節。幀末尾是一個 4 個字節的 FCS(幀檢驗序列)。關于 FCS 看下面的 2.4。

2.4 錯誤檢測

現實的通信鏈路都不會是理想的,這就是說,傳輸過程中有可能1 變成 0 或 0 變成 1 ,這種情況就叫做比特差錯。數據鏈路層提供了循環冗余檢驗 CRC 方法來檢測比特差錯,其主要使用了幀檢驗序列 FCS 來檢測比特錯誤。發送數據前先計算幀的數據部分得出 FCS 添加在數據部分后,接收端收到數據后添加上 FCS 后計算驗證。

需要注意的是數據鏈路層并沒有向網絡層提供可靠傳輸服務,傳輸差錯一類是比特差錯,還有一類是幀丟失、幀重復或幀失序。完整的傳輸錯誤控制是在TCP中實現的。

2.5 交換機自學過程

交換機是一種在數據鏈路層工作的網絡設備,它有多個端口,可以連接不同的設備。交換機根據每個幀中的目標 MAC 地址決定向哪個端口發送數據,此時需要參考“轉發表”

轉發表并非手動設置,而是交換機自動學習得到的。當某個設備向交換機發送幀時,交換機將幀的源 MAC 地址和接口對應起來,作為一條記錄添加到轉發表中。這一過程就叫做自學過程。自學過程的詳細流程如下圖。

自學過程
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容