OPPO 參加第十六屆中國資訊無障礙論壇,“千人千屏”檢測 SDK 開放共享
簡介
資料鏈路層的主要目的:
- 為IP模組傳送和介面IP資料報
- 為ARP模組傳送ARP請求和接收ARP應答
- 為RARP傳送和接收
資料鏈路層使用的通道主要有兩種型別:
- 點對點通道
- 廣播通道
本章討論在同一個區域網中,分組怎樣從一臺主機傳送到另一臺主機,但並不經過路由器轉發。
使用點對點通道的資料鏈路層
資料鏈路和幀
鏈路指兩個相鄰節點之間的一段物理線路;而資料鏈路則是由物理硬體和軟體協議組成的一條線路,可以控制資料的傳輸。
資料鏈路層把網路層交下來的資料成幀傳送到鏈路上。
點對點通道的資料鏈路層在通訊時的主要步驟:
- A節點將IP資料報新增頭部和尾部之後封裝成幀
- A節點將幀傳送到鏈路上
- 若B節點收到幀無差錯,則從中取出IP資料報上交給網路層,否則丟棄這個幀
三個基本問題
-
framing
首部和尾部包含了許多控制資訊,每一種鏈路層協議都規定了幀的資料部分長度上限——MTU(Maximum Transfer Unit)。
幀定界:控制字元SOH置於幀的最前面表示幀的開始,EOT置於幀的最後面表示幀的結束。接收方只有接收到EOT才能表示接收到一個完整的幀。
-
transparent transmitting
問題來了,開始字元和結束字元都是專門指定的,如果幀的資料部分出現與結束符相同的字元提前結束了幀該怎麼辦呢?
這個問題其實並不存在,因為控制字元都是使用的不可列印的字元,所謂不可列印,即無法從鍵盤鍵入,因此資料的字元部分不會存在與控制字元相同的情況。
但是這是對於資料為文字字元的情況,如果資料為二進位制,還是有可能出現二進位制與控制字元對應的二進位制相同的情況。
解決方法是:設法使資料中出現控制字元的地方在接收端不被解釋為控制字元,具體辦法就是在出現控制字元的地方新增一個轉義字元ESC,接收端在接收到ESC時就不會把後面的一個字元解釋為控制字元,隨後將所有轉義字元刪除後上交給網路層。
-
error detection
目前資料鏈路層廣泛使用CRC驗證碼的檢錯技術。
CRC的原理在《資訊傳輸原理》裡已經講過了。
現在已經不要求資料鏈路層提供可靠傳輸的服務了,因此不再使用確認和重傳機制。
點對點協議PPP(Point-to-Point Protocol)
滿足的要求:
-
簡單
-
封裝成幀
-
透明性
-
支援多種網路層協議
-
多種型別鏈路
-
差錯檢測
-
檢測連線狀態
-
最大傳送單元
-
網路層地址協商
即提供一種機制使通訊的兩個網路層的屍體能夠通過協商知道彼此的網路層地址。
-
資料壓縮協商
組成:
- 將IP資料報封裝到序列鏈路的方法
- 用來建立、配置和測試資料鏈路連線的鏈路控制協議
- 一套網路控制協議,其中每一個協議支援不同的網路層協議
PPP協議的幀格式
位元組填充
與前面講的類似,為了防止資料部分出現和控制字元一樣的字元,需要使用轉義字元進行填充。
零位元填充
PPP協議用在SONET/SDH 鏈路時,使用同步傳輸而不是非同步傳輸,需要採用零位元填充。
具體方法:在接收端掃描整個資訊欄位,只要發現5個連續1, 就填入一個0,保證資訊欄位不會出現6個連續1, 因為控制字元有6個連續1。在接收端同樣掃描一遍,發現5連續1, 就將後面的一個0刪除。
使用廣播通道的資料鏈路層
廣播通道需要解決的主要問題是多個節點之間的衝突問題,主要解決辦法可以分為下面三種協議:
之所以在載波監聽的前提下還存在碰撞,是因為電磁波的傳播存在一定的延時,而現代電子裝置的工作頻率都比較高,因此可能存在兩個裝置同時傳送資訊。
混雜模式(promiscuous mode)
介面卡配置在混雜模式時,接收來自所有硬體地址的資料包,用於監聽區域網內的使用者資料。
MAC幀格式
五個欄位組成(這裡的地址均為MAC地址):
地址解析協議ARP(Address Resolution Protocol)
ARP協議用於在A主機已知B主機的IP地址的情況下獲知B主機的MAC地址,從而才能將給B的網路層資料報封裝成資料鏈路層幀傳送出去。
首先需要知道的是ARP協議不像DNS解析一樣可以獲知任何IP地址的MAC地址,其只針對同一個子網上的主機和路由器。
工作方式:每臺主機或路由器在記憶體中維護一個ARP表,表中包含了IP地址到MAC地址的對映關係,還包含了一個TTL值,指示了從表中刪除該項的時間。
當一個IP資料報到達主機或路由器時,如果在ARP表裡面找到對應項,則傳送方需要先構造一個ARP分組,包括髮送和接收IP地址及MAC地址。ARP分組的目的是詢問子網上所有其他主機和路由器,以確定對應於要解析的IP地址和MAC地址。ARP分組的目的MAC地址應該是廣播地址(FF-FF-FF-FF-FF-FF)。
傳送資料報到子網以外
如果要傳送的目的IP地址與本主機的IP地址不位於同一個子網內,則需要首先將資料報傳送到閘道器(通常即路由器),主機需要通過ARP協議獲得閘道器的MAC地址,然後直接傳送資料報給閘道器。
路由器本身有多張網絡卡用於連線不同子網,且本身維護一個表用於對映子網地址與網絡卡的對映關係,相應內容在網路層一章會繼續講到。
擴充套件的乙太網
在物理層擴充套件乙太網
使用光纖連線兩個網段,光纖的時延很小。
在資料鏈路層擴充套件乙太網
使用乙太網交換機來擴充套件乙太網。
交換機實質上是一個多介面的網橋,內部還設有儲存器,可以將暫時無法傳送出去的幀儲存起來。
交換機可以同時連通多對介面,進行同時通訊。
交換機內部的幀交換表(地址表)通過自學習演算法逐漸建立,並通過硬體進行幀轉發。
交換機的自學習演算法
只要某個主機主動傳送幀,交換機就會自動記錄下幀傳送的介面,即將該介面與該主機進行對應。每個對應項存在一定的有效時間,過期則刪除。
生成樹協議(Spanning Tree Protocol)
用於判斷網路中是否存在環路,並將環路切斷。
虛擬區域網VLAN
VLAN通過在邏輯上劃分區域網,每個VLAN幀都有一個明確的識別符號,指明這個幀屬於哪個VLAN
VLAN允許連線同一個交換機上的主機被分配到不同的區域網,從而更好地利用網段資源。