數據鏈路層

[TOC]

數據鏈路層

  • 在OSI模型中,數據鏈路層是倒數第二層。
  • 連接相鄰節點的通信信道稱為鏈路,為了將數據報從源移動到目的地,必須在單個鏈路上移動數據報。
  • 數據鏈路層的主要職責是通過單個鏈路傳輸數據報。
  • 數據鏈路層協議定義了跨節點交換的數據包的格式以及錯誤檢測,重傳,流控制和隨機訪問等操作。
  • 數據鏈路層協議是以太網,令牌環,FDDI和PPP。
  • 數據鏈路層的一個重要特征是數據報可以由路徑中不同鏈路上的不同鏈路層協議處理。例如,數據報由第一鏈路上的以太網處理,第二鏈路上的PPP處理。

以下服務由數據鏈路層提供

數據鏈路層
  • 成幀和鏈路訪問:數據鏈路層協議在鏈路層傳輸之前將每個網絡幀封裝在鏈路層幀內。幀由包含網絡層數據報的數據字段和多個數據字段組成。它規定了幀的結構以及通過鏈路傳輸幀的信道訪問協議。
  • 可靠的交付:數據鏈路層提供可靠的交付服務,即無錯誤地傳輸網絡層數據報。通過傳輸和確認完成可靠的傳送服務。數據鏈路層主要通過鏈路提供可靠的傳送服務,因為它們具有較高的錯誤率并且可以在本地校正,發生錯誤的鏈路而不是強制重新傳輸數據。
  • 流控制:接收節點可以以比處理幀更快的速率接收幀。如果沒有流量控制,接收器的緩沖區可能會溢出,幀可能會丟失。為了克服這個問題,數據鏈路層使用流控制來防止鏈路一側的發送節點壓倒鏈路另一側的接收節點。
  • 錯誤檢測:可以通過信號衰減和噪聲引入錯誤。數據鏈路層協議提供了一種檢測一個或多個錯誤的機制。這是通過在幀中添加錯誤檢測位來實現的,然后接收節點可以執行錯誤檢查。
  • 糾錯:糾錯與錯誤檢測類似,不同之處在于接收節點不僅檢測錯誤,還確定錯誤發生在幀中的位置。
  • 半雙工和全雙工:在全雙工模式下,兩個節點都可以同時傳輸數據。在半雙工模式下,只有一個節點可以同時傳輸數據。

錯誤檢測

當數據從一個設備傳輸到另一個設備時,系統不保證設備接收的數據是否與另一個設備傳輸的數據相同。錯誤是指在接收方端收到的消息與發送的消息不同的情況。

錯誤的類型

錯誤檢測

錯誤可分為兩類:

  • 單比特錯誤
  • 突發錯誤

單比特錯誤

給定數據單元的唯一一位從1變為0或從0變為1。

錯誤檢測

錯誤在串行數據傳輸中不太可能出現。例如,Sender以10 Mbps的速率發送數據,這意味著該位僅持續1?s,并且出現單位錯誤,噪聲必須大于1?s。

單比特錯誤主要發生在并行數據傳輸中。例如,如果使用8條線來發送一個字節的8位,如果其中一條線路有噪聲,則每個字節會損壞單個位。

突發錯誤

兩個或多個位從0更改為1或從1更改為0稱為突發錯誤。

從第一個損壞位到最后一個損壞位確定突發錯誤。

錯誤檢測

突發錯誤最有可能發生在串行數據傳輸中。

受影響的位數取決于噪聲和數據速率的持續時間。


錯誤檢測技術

最流行的錯誤檢測技術是:

  • 單一奇偶校驗
  • 二維奇偶校驗
  • 校驗
  • 循環冗余校驗

單一奇偶校驗

  • 單奇偶校驗是一種簡單的機制,檢測錯誤的成本低廉。
  • 在該技術中,冗余比特也稱為奇偶校驗比特,其附加在數據單元的末端,使得1的數量變為偶數。因此,傳輸比特的總數將是9比特。
  • 如果1位的數量是奇數,則附加奇偶校驗位1,如果1位的數量是偶數,則在數據單元的末尾附加奇偶校驗位0。
  • 在接收端,根據接收的數據位計算奇偶校驗位,并與接收的奇偶校驗位進行比較。
  • 此技術生成偶數的總數為1,因此稱為偶數奇偶校驗。
錯誤檢測
  • 它只能檢測非常罕見的單比特錯誤。
  • 如果兩個位互換,則無法檢測到錯誤。
錯誤檢測
  • 通過使用以表格形式組織數據的二維奇偶校驗,可以提高性能。
  • 為每行計算奇偶校驗位,這相當于單奇偶校驗。
  • 在二維奇偶校驗中,比特塊被分成行,并且冗余的比特行被添加到整個塊。
  • 在接收端,將奇偶校驗位與從接收數據計算的奇偶校驗位進行比較。
錯誤檢測
  • 如果一個數據單元中的兩個位被破壞并且另一個數據單元中的兩個位完全相同的位置也被破壞,則2D奇偶校驗檢查器將無法檢測到該錯誤。
  • 在某些情況下,此技術不能用于檢測4位錯誤或更多錯誤。

校驗

校驗和是基于冗余概念的錯誤檢測技術。

它分為兩部分:

校驗和生成器

校驗和在發送方生成。校驗和生成器將數據細分為每個n位的相等段,并且所有這些段通過使用一個補碼算法加在一起。該和被補充并附加到原始數據,稱為校驗和字段。擴展數據通過網絡傳輸。

錯誤檢測

校驗和檢查

校驗和在接收方驗證。接收器將輸入數據細分為每個n比特的相等段,并且將所有這些段加在一起,然后補充該總和。如果和的補碼為零,則接受數據,否則拒絕數據。

  1. 接收方遵循以下步驟:
  2. 塊單元被分成k個部分和n個比特中的每一個。
  3. 通過使用一個補碼算法將所有k個部分加在一起得到總和。
  4. 總和是補充。
  5. 如果和的結果為零,則接受數據,否則丟棄數據。

循環冗余校驗(CRC)

CRC是用于確定錯誤的冗余錯誤技術。

以下是CRC中用于錯誤檢測的步驟:

  • 在CRC技術中,一串n 0被附加到數據單元,并且該n數小于預定數量的比特數,稱為n + 1比特的除法。
  • 其次,使用一個過程將新擴展的數據除以除數稱為二進制除法。從該除法產生的余數稱為CRC余數。
  • 第三,CRC余數替換原始數據末尾的附加0。這個新生成的單元被發送到接收器。
  • 接收器接收數據,然后接收CRC余數。接收器將整個單元視為一個單元,并將其除以用于查找CRC余數的相同除數。

如果該除法的結果為零,這意味著它沒有錯誤,并且數據被接受。

如果該除法的結果不為零,則意味著數據由錯誤組成。因此,數據被丟棄。

錯誤檢測

假設原始數據是11100,除數是1001。

CRC生成器

  • CRC生成器使用模2分區。首先,在除數的長度為4時,在數據的末尾附加三個零,并且我們知道要追加的字符串0的長度總是比除數的長度小1。
  • 現在,字符串變為11100000,并且結果字符串被除數1001除。
  • 從二進制除法生成的余數稱為CRC余數。生成的CRC余數值為111。
  • CRC余數替換數據單元末尾的附加字符串0,最終字符串為11100111,通過網絡發送。
錯誤檢測
  • CRC校驗器的功能類似于CRC生成器。
  • 當在接收端接收到字符串11100111時,CRC校驗器執行模2分割。
  • 字符串除以相同的除數,即1001。
  • 在這種情況下,CRC校驗器生成零余數。因此,數據被接受。
錯誤檢測

數據鏈路控制

數據鏈路控制是數據鏈路層提供的服務,可通過物理介質提供可靠的數據傳輸。例如,在半雙工傳輸模式中,一個設備一次只能傳輸數據。如果鏈路末端的兩個設備同時傳輸數據,它們將發生沖突并導致信息丟失。數據鏈路層提供設備之間的協調,以便不發生沖突。

數據鏈路層提供三個功能:

  • 線路紀律
  • 流量控制
  • 錯誤控制
數據鏈接控件

行紀律

  • Line Discipline是數據鏈路層的一項功能,它提供鏈路系統之間的協調。它確定哪個設備可以發送,以及何時可以發送數據。

Line Discipline可以通過兩種方式實現:

  • ENQ / ACK
  • 投票/選擇

END / ACK

END / ACK代表查詢/確認當鏈路上沒有錯誤的接收器并且在兩個設備之間具有專用路徑以使得能夠接收傳輸的設備是預期的設備時使用。

END / ACK協調哪個設備將開始傳輸以及接收者是否準備好。

END / ACK的工作

發送器發送稱為查詢(ENQ)的幀,詢問接收器是否可用于接收數據。

接收器響應肯定確認(ACK)或否定確認(NACK),其中肯定確認意味著接收器準備接收傳輸,否定確認意味著接收器不能接受傳輸。

以下是接收者的回復:

  • 如果對ENQ的響應是肯定的,則發送方將發送其數據,并且一旦其所有數據都已被發送,則設備利用EOT(發送結束)幀完成其發送。
  • 如果對ENQ的響應是否定的,則發送方斷開連接并在另一時間重新開始傳輸。
  • 如果響應既不是負面也不是正面,則發送方假定ENQ幀在傳輸過程中丟失,并且在放棄之前嘗試三次建立鏈接。
數據鏈接控件

Pool/Select

線路規則的輪詢/選擇方法適用于將一個設備指定為主站,而其他設備為二級站的拓撲。

Poll / Select的工作

  • 在此,主設備和多個輔助設備由單個傳輸線組成,并且即使目的地是輔助設備,也通過主設備進行所有交換。
  • 主設備控制通信鏈路,輔助設備遵循主設備的指令。
  • 主設備確定允許哪個設備使用通信信道。因此,我們可以說它是會話的發起者。
  • 如果主設備想要從輔助設備接收數據,則它要求輔助設備發送任何內容,此過程稱為輪詢。
  • 如果主設備想要將某些數據發送到輔助設備,則它會告知目標輔助設備準備接收數據,此過程稱為選擇。

選擇

  • 當主設備有要發送的內容時使用選擇模式。
  • 當主設備想要發送一些數據時,它通過發送選擇(SEL)幀向輔助設備警告即將到來的傳輸,幀的一個字段包括預期的輔助設備的地址。
  • 當輔助設備接收SEL幀時,它發送指示輔助就緒狀態的確認。
  • 如果輔助設備準備好接受數據,則主設備將兩個或更多個數據幀發送到預期的輔助設備。數據傳輸完成后,輔助設備會發送一個確認,指出已收到數據。
數據鏈接控件

輪詢

  • 當主設備想要從輔助設備接收一些數據時,使用輪詢模式。
  • 當主設備想要接收數據時,它會詢問每個設備是否有任何要發送的內容。
  • 首先,主要詢問(輪詢)第一個輔助設備,如果它以NACK(否定確認)響應則表示它沒有任何要發送的內容。現在,它接近第二個輔助設備,它用ACK響應意味著它有要發送的數據。輔助設備可以一個接一個地發送一個以上的幀,或者有時可能需要在發送每個幀之前發送ACK,這取決于所使用的協議的類型。
數據鏈接控件

流量控制

  • 它是一組程序,告訴發送方在數據壓倒接收方之前它可以傳輸多少數據。
  • 接收設備具有有限的速度和有限的存儲器來存儲數據。因此,接收設備必須能夠在達到限制之前通知發送設備暫時停止發送。
  • 它需要一個緩沖區,一塊內存,用于存儲信息,直到它們被處理完畢。

已經開發了兩種方法來控制數據流:

  • 停止與等待
  • 滑動窗口

停止與等待

  • 在Stop-and-wait方法中,發送方在它發送的每個幀之后等待確認。
  • 收到確認后,只發送下一幀。交替發送和等待幀的過程繼續,直到發送者發送EOT(發送結束)幀。

停止等待的好處

Stop-and-wait方法很簡單,因為在發送下一幀之前檢查并確認每個幀。

停止等待的缺點

停止等待技術使用效率低,因為每個幀必須一直傳輸到接收器,并且確認在下一幀發送之前一直傳播。發送和接收的每個幀使用遍歷鏈路所需的整個時間。

滑動窗口

  • 滑動窗口是一種流控制方法,其中發送方可以在獲得確認之前發送若干幀。
  • 在滑動窗口控制中,可以一個接一個地發送多個幀,由于可以有效地利用通信信道的容量。
  • 單個ACK確認多個幀。
  • 滑動窗口是指發送方和接收方端的虛擬框。
  • 窗口可以在任一端保持幀,并且它提供在確認之前可以傳輸的幀數的上限。
  • 即使窗口沒有完全填滿,也可以確認框架。
  • 該窗口具有特定的大小,在該大小中,它們被編號為modulo-n意味著它們的編號從0到n-1。例如,如果n = 8,則幀數從0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1開始編號。 ......
  • 窗口的大小表示為n-1。因此,在確認之前可以發送最多n-1幀。
  • 當接收方發送ACK時,它包括它想要接收的下一幀的編號。例如,為了確認以幀號4結尾的幀串,接收器將發送包含號碼5的ACK。當發送者看到具有號碼5的ACK時,它知道0到4的幀已經是接收。

發件人窗口

  • 在傳輸開始時,發送方窗口包含n-1幀,當它們被發送出去時,左邊界向內移動縮小窗口的大小。例如,如果窗口的大小為w,如果發送了三個幀,則發送方窗口中遺漏的幀數為w-3。
  • 一旦ACK到達,則發送方窗口擴展到將等于ACK確認的幀數的數字。
  • 例如,窗口的大小為7,如果已發送幀0到4并且沒有到達確認,則發送方窗口僅包含兩個幀,即5和6.現在,如果ACK已到達,則數字4表示0到3幀未損壞,發送方窗口擴展到包括接下來的四個幀。因此,發送方窗口包含六個幀(5,6,7,0,1,2)。
數據鏈接控件

接收窗口

  • 在傳輸開始時,接收器窗口不包含n幀,但它包含n-1個幀空間。
  • 當新幀到達時,窗口的大小會縮小。
  • 接收器窗口不表示接收的幀數,但它表示在發送ACK之前可以接收的幀數。例如,窗口的大小是w,如果接收到三個幀,則窗口中可用的空間數是(w-3)。
  • 一旦發送確認,接收器窗口擴展的數量等于確認的幀數。
  • 假設窗口的大小為7意味著接收器窗口包含七個幀的七個空格。如果接收到一幀,則接收器窗口收縮并將邊界從0移動到1.這樣,窗口逐個縮小,因此窗口現在包含六個空格。如果已發送0到4的幀,則窗口在發送確認之前包含兩個空格。
數據鏈接控件

錯誤控制

錯誤控制是一種錯誤檢測和重傳技術。

錯誤控制的類別:

數據鏈接控件

停止等待ARQ

停止等待ARQ是一種用于在幀損壞或丟失的情況下重新傳輸數據的技術。

該技術的工作原理是發送方在收到最后發送幀的確認之前不發送下一幀。

重傳需要四個功能:

  • 發送設備保留最后發送幀的副本,直到收到確認。如果未正確接收幀,則保留副本允許發送方重新傳輸數據。
  • 數據幀和ACK幀都交替編號為0和1,以便可以單獨識別它們。假設數據1幀確認數據0幀意味著數據0幀已正確到達并期望接收數據1幀。
  • 如果在最后發送的幀中發生錯誤,則接收器發送未編號的NAK幀。收到NAK幀后,發送方重新發送數據。
  • 它適用于計時器。如果在規定的時間內沒有收到確認,則發送方認為幀在傳輸過程中丟失,因此它將重新發送幀。

重傳的兩種可能性:

  • 損壞的幀:當接收器接收到損壞的幀時,即幀包含錯誤,然后它返回NAK幀。例如,當發送數據0幀,然后接收器發送ACK 1幀意味著數據0已正確到達,并發送數據1幀。發送方發送下一幀:數據1.它達到未損壞,接收方返回ACK 0.發送方發送下一幀:數據0.接收方報告錯誤并返回NAK幀。發送方重新傳輸數據0幀。
  • 丟失幀:發送者配備定時器,并在幀發送時啟動。有時框架沒有到達接收端,因此無論是正面還是負面都不能確認。發送器等待確認,直到定時器熄滅。如果定時器熄滅,它將重新發送最后一個發送的幀。

滑動窗ARQ

SlidingWindow ARQ是一種用于連續傳輸錯誤控制的技術。

用于重傳的三個功能:

  • 在這種情況下,發送方保留所有發送幀的副本,直到它們被確認為止。假設已經發送了從0到4的幀,并且最后一次確認是針對第2幀,發送方必須保留第3幀和第4幀的副本,直到它們正確接收為止。
  • 接收器可以根據條件發送NAK或ACK。NAK幀告訴發件人數據已被收到損壞。由于滑動窗口是連續傳輸機制,因此必須對ACK和NAK進行編號以識別幀。ACK幀由一個數字組成,表示接收方希望接收的下一幀。NAK幀由表示損壞幀的數字組成。
  • 滑動窗口ARQ配備有計時器以處理丟失的確認。假設在收到任何確認之前已經發送了n-1幀。發送方等待確認,因此它啟動計時器并等待再發送之前。如果分配的時間用完,則發送方根據使用的協議重新發送一個或所有幀。

滑動窗口ARQ中使用的兩個協議:

  • Go-Back-n ARQ:在Go-Back-N ARQ協議中,如果一幀丟失或損壞,則它重新發送所有幀,之后它不接收肯定ACK。

重傳可能有三種可能性:

  • 損壞幀:當幀損壞時,接收器發送NAK幀。
數據鏈接控件
  • 丟失數據幀:在滑動窗口協議中,數據幀按順序發送。如果任何幀丟失,則到達接收器的下一幀不按順序。接收器檢查每個幀的序列號,發現已跳過的幀,并返回丟失幀的NAK。發送設備重新發送由NAK指示的幀以及在丟失幀之后發送的幀。
  • 丟失確認:發送方可以在等待任何確認之前發送窗口允許的幀數。達到窗口限制后,發件人不再需要發送幀; 它必須等待確認。如果確認丟失,則發件人可以永遠等待。為了避免這種情況,發送器配備了計時器,只要達到窗口容量就會開始計時。如果在時限內沒有收到確認,則發送方重新發送自上一次ACK以來的幀。

選擇性拒絕ARQ

  • 選擇性拒絕ARQ技術比Go-Back-n ARQ更有效。
  • 在該技術中,僅重傳那些已經接收到否定確認(NAK)的幀。
  • 接收器存儲緩沖區保持所有損壞的幀保持不變,直到正確接收到錯誤幀。
  • 接收器必須具有適當的邏輯,以便以正確的順序重新插入幀。
  • 發送方必須包含一個搜索機制,該機制僅選擇所請求的重傳幀。
數據鏈接控件
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容