鏈路層簡要介紹

一、簡介

數據鏈路層的工作就是把網絡層交下來的 IP 數據報 封裝爲 幀(frame)發送到鏈路上,以及把接收到的幀中的數據取出並上交給網絡層。

爲達到這一目的,數據鏈路必須具備一系列相應的功能,主要有:

  • 將數據封裝爲幀(frame),幀是數據鏈路層的傳送單位;

  • 控制幀的傳輸,包括處理傳輸差錯,調節發送速率與接收方相匹配;

  • 在兩個網絡實體之間提供數據鏈路通路的建立、維持和釋放的管理。

數據幀的結構是這樣的:
數據幀結構

二、控制幀的傳輸

2.1 差錯控制

通信系統必須具備發現差錯的能力,並採取措施糾正之,使差錯控制在所能允許的儘可能小的範圍內,這就是差錯控制過程,也是數據鏈路層的主要功能之一。

反饋重發

接收方通過對差錯編碼(奇偶校驗碼或 CRC 碼)的檢查,可以判定一幀在傳輸過程中是否發生了差錯。一旦發現差錯,一般可以採用反饋重發的方法來糾正。這就要求接受方收完一幀後,向發送方反饋一個接收是否正確的信息,使發送方據此做出是否需要重新發送的決定。發送方僅當收到接收方已正確接收的反饋信號後才能認爲該幀已經正確發送完畢,否則需要重發直至正確爲止。

計時器

如果某一幀發送出現問題,一直不能發送成功,爲了避免傳輸過程停滯不前,通常引入 計時器 (Timer) 來限定接收方發回反饋消息的時間間隔。當發送方發送一幀的同時也啓動計時器,若在限定時間間隔內未能收到接收方的反饋信息,即計時器超時(Timeout),則可認爲傳出的幀以出錯或丟失,就要重新發送。

序號

由於同一幀數據可能被重複發送多次,就可能引起接收方多次收到同一幀並將其遞交給網絡層的情況。爲了防止這種情況,可以採用對發送的幀編號的方法,即賦予每幀一個序號,從而使接收方能從該序號來區分是新發送來的幀還是重發的幀,以此來確定要不要將接收到的幀遞交給網絡層。

2.2 流量控制

由於收發雙方各自使用的設備工作速率和緩衝存儲空間的差異,可能出現發送方的發送能力大於接收方接收能力的現象,此時若不對發送方的發送速率做適當的限制,前面來不及接收的幀將被後面不斷髮送來的幀“淹沒”,從而造成幀的丟失而出錯。

由此可見,流量控制實際上是對發送方數據流量的控制,使其發送速率不超過接收方的速率。所以需要一些規則使得發送方知道在什麼情況下可以接着發送下一幀,而在什麼情況下必須暫停發送,以等待收到某種反饋信息後再繼續發送。這就是流量控制。

三、以太網

以太網(Ether-net)是指 DEC 公司、Intel 公司和 Xerox 公司在 1982 年聯合公佈的一個標準,這個標準裏面使用了一種稱作CSMA/CD 的接入方法。而 IEEE802 提供的標準集 802.3(還有一部分定義到了 802.2 中)也提供了一個 CSMA/CD 的標準。

這兩個標準稍有不同,因此鏈路層數據幀的的封裝格式也有所不同(數據幀中的地址爲 MAC 地址):
這裏寫圖片描述

四、PPP(點對點協議)

PPP(點到點協議)是爲在同等單元之間傳輸數據設計的鏈路層協議。這種鏈路提供全雙工操作,並按照順序傳遞數據。設計目的主要是用來通過 撥號或專線 方式建立 點對點 連接發送數據,使其成爲各種主機、網橋和路由器之間簡單連接的一種共通的解決方案。

點對點協議(PPP)爲在點對點連接上傳輸多協議數據包提供了一個標準方法。PPP 最初設計是爲兩個對等節點之間的 IP 流量傳輸提供一種封裝協議。在 TCP/IP 協議集中它是一種用來同步調製連接的數據鏈路層協議。

五、SLIP 與 PPP

5.1 SLIP 協議

SLIP 的全稱爲 Serial Line IP(串行線路 IP)。它是一種對 IP 數據報進行封裝的簡單形式。

SLIP 協議規定的幀格式規則:

  • IP 數據報以一個稱作 END(0xc0)的特殊字符結束。同時爲了防止數據報傳輸之前的線路噪音被誤認爲是數據報內容,在數據報開始處添加一個 END 字符;

  • 如果 IP 數據報中含有 END 字符,就連續傳輸 0xdb 和 0xdc 來取代它。0xdb 是 SLIP 的 ESC 字符,但它的值與 ASCⅡ碼中的 ESC(0x1b)不同;

  • 如果 IP 數據報中含有 ESC 字符,就連續傳輸 0xdb 和 0xdd 來取代它。

這裏寫圖片描述
SLIP 的缺陷:

  • 每一端必須知道對端的 IP 地址,沒有辦法把本端 IP 地址傳遞給對端;

  • 數據幀中無類型字段,當一條串行線路使用 SLIP 時則不能使用其他協議;

  • SLIP 數據幀中無 checksum,只能依靠上層協議來發現和糾正錯誤。

5.2 PPP 協議

PPP 協議修改了 SLIP 協議中的缺陷,包括以下三個部分:

  • PPP 封裝 IP 數據報既支持數據爲 8 位和無奇偶校驗的異步模式,又支持面向比特的同步鏈接;

  • 通過 LCP(鏈路控制協議)允許雙方進行協商;

  • 通過 NCP(網絡控制協議)允許雙方在網絡層上進行協商。

PPP 協議的字符規則與 SLIP 有所不同:

  • PPP 幀以標誌字符 0x7e 開始和結束,緊接着是一個值爲 0xff 的地址字節,然後是一個值爲 0x03 的控制字節;

  • 由於標誌字符是 0x7e,當它出現在信息字段中時,需要連續傳送 0x7d 和 0x5e 來替代它;

  • 當在信息字段中遇到 0x7d 時,需要連續傳送 0x7d 和 0x5d 來替代它。

  • 默認情況下,如果字符的值小於 0x20,需要連續傳送 0x7d 和 0x21 來替代它。

PPP 與 SLIP 相比具有下列優點:

  • PPP 支持在單根串行線路上運行多種網絡層協議;

  • 每一幀都有 CRC 校驗;

  • 通信雙方可以用 NCP 進行 IP 地址的動態協商;

  • 可以類似於 CSLIP 對 TCP 和 IP 首部進行壓縮;

  • LCP 可以對多個數據鏈路選項進行設置。

六、MTU

爲了提供足夠快的響應時間,以太網和 IEEE802.3 對數據幀長度都有限制,其最大值分別爲 1500 字節和 1492 字節,鏈路層的這個特性稱作 MTU ,即 最大傳輸單元

當網絡層傳下來一個 IP 數據報,並且其長度比鏈路層的 MTU 大,那麼網絡層就需要對數據報進行分片,使每一片都小於 MTU。

MTU 分爲接口 MTU 和路徑 MTU:接口 MTU 是所指定的接口所允許發送的最大數據長度;路徑 MTU 指兩臺通信主機路徑中最小的 MTU 值。路徑 MTU 是不對稱的,它在兩個方向上不一定一致。

用命令netstat -in可以查看網絡接口的 MTU:

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章