網絡基礎之數據鏈路層

數據鏈路層概述

數據鏈路層(Data Link Layer,DLL)是OSI七層參考模 型的第二層,屬於低三層中的中間一層。數據鏈路可以粗 略地理解爲數據通道。物理層要爲終端設備間的數據通信 提供傳輸媒體及連接。
數據鏈路層協議是爲收發對等實體間保持一致而制定的, 也爲了順利完成對網絡層的服務。數據鏈路層協議分爲 “面向字符”和“面向比特”兩類。

1.面向字符的鏈路層協議
  1. ISO的IS1747~1975:稱爲“數據通信系統的基本型控制 規程”,利用10個控制字符完成鏈路的建立、拆除及數據 交換。對幀的收發情況及差錯恢復也是靠這些字符來完成 的。如基本型傳輸控制規程及其擴充部分(BM和XBM) 協議。

  2. IBM的二進制同步通信規程(BSC)。

  3. DEC的數字數據通信報文協議(DDCMP)。

  4. PPP(點對點協議)。

2.面向比特的鏈路層協議
  1. IBM的SNA網絡使用的數據鏈路協議SDLC (Synchronous Data Link Control),同步數據鏈路控制 協議);
  2. ANSI修改SDLC協議後,提出的ADCCP(Advanced Data Communication Control Procedure,高級數據通信 控制規程);
  3. ISO修改SDLC協議後,提出的HDLC(High-level Data Link Control,高級數據鏈路控制);

數據鏈路層的主要功能

數據鏈路層最基本的服務是將源計算機網絡層傳來的數據 可靠地傳輸到相鄰節點的目標計算機的網絡層。
主要的功能如下:

  1. 幀同步
  2. 差錯控制
  3. 流量控制
  4. 鏈路管理
  5. 透明傳輸

幀同步

爲了向網絡層提供服務,數據鏈路層必須使用物理層提供 的服務。而物理層是以比特流進行傳輸的,這種比特流傳 輸並不保證在數據傳輸過程中沒有錯誤,接收到的位數量 可能少於、等於或者多於發送的位數量。而且它們還可能 有不同的值,這時數據鏈路層爲了能實現數據有效的差錯 控制,就採用了一種“幀”的數據塊進行傳輸。而要採幀 格式傳輸,就必須有相應的幀同步技術,這就是數據鏈路 層的“成幀”(也稱爲“幀同步”)功能。

1.字符計數法

這種幀同步方法是一種面向字節的同步規程,是利用幀頭 部中的一個域來指定該幀中的字符數,以一個特殊字符表 徵一幀的起始,並以一個專門字段來標明幀內的字符數。

同步原理

接收方可以通過對該特殊字符的識別從比特流中區分出幀 的起始,並從專門字段中獲知該幀中隨後跟隨的數據字符 數,從而可確定出幀的終止位置。
例如:DEC公司的數據通信報協議
DEC公司
常見標誌:

  1. SOH:報頭開始標誌
  2. STX:文本開始標誌
  3. ETX:文本終止標誌
  4. EOT:發送完畢標誌
  5. ACK:確認標誌
  6. DLE:轉義標誌
  7. CRC:循環冗餘校驗

2.字符填充的首位定界符法

該同步方法是用一些特定的字符來定界一幀的起始與終止, 充分解決了錯誤發生之後重新同步的問題。

同步原理

在這種幀同步方式中,爲了不使數據信息位中與特定字符 相同的字符被誤判爲幀的首尾定界符,可以在這種數據幀 的幀頭填充一個轉義控制字符DLE STX,Data Link Escape – Start of Text),在幀的結尾則以DLE ETX (Data Link Escape-End of Text)結束,以示區別,從而達到數據的透明性

在實際應用中爲逆邏輯
即:DLESTX爲開始,DLEETX爲結束,這會使得轉義量大大減少。

3. 比特填充的首位定界符法

是以一組特定的比特模式 (如01111110)來標誌一幀的起始與終止,它允許任意 長度的位碼,也允許任意每個字符有任意長度的位。它的 工作原理是在每一幀的開始和結束位置都加上一個特殊的 位模式,如01111110。當發送方的數據鏈路層傳到數據 中5個“1” (因爲特定模式中是有5個連續“1”)時, 自動在輸出位流中填充一個“0”。在接收方,當收到連 續5個“1”,並且後面位是“0”時,自動刪除該“0”位。 就好像字節填充過程對於雙方計算機中的網絡層是完全透明的一樣。

4.違法編碼

該法在物理層採用特定的比特編碼方法時採用。例如,曼 徹斯特編碼方法,是將數據比特“1”編碼成“高—低” 電平對,將數據比特“0”編碼成“低—高”電平對。而 “高—高”電平對和“低—低”電平對在數據比特中是違 法的。可以借用這些違法編碼序列來界定幀的起始與終止。 局域網IEEE 802標準中就採用了這種方法。

差錯控制

在解決了標識每一幀的起始和結束位置問題之後,還需要 解決數據傳輸中的差錯控制問題。就是如何確保所有的數 據幀最終在遞交給目標計算機上的網絡層時,能保證數據 的完整性,並且保持正確的順序。
在差錯控制功能中,主要採取糾錯碼、檢錯碼、反饋檢測、 自動重發等重傳技術。
通信信道的噪聲分爲兩類:熱噪聲衝擊噪聲

差錯編碼方案

差錯校驗是採用某種手段去發現並糾正傳輸錯誤,發現差 錯甚至能糾正差錯的常用方法是對被傳送的信息進行適當 的編碼,它是給信息碼元加上冗餘碼元,並使冗餘碼元與 信息碼元之間具備某種關係,然後將信息碼元和冗餘碼元 一起通過信道發出。接收端接收到這兩種碼元后,檢驗它 們之間的關係是否符合發送端建立的關係,這樣就可以檢驗傳輸差錯,甚至可以糾錯。能校驗差錯的編碼稱檢錯碼 (Error-detecting Code),可以糾錯的編碼稱糾錯碼 (Error-correcting Code)。

奇偶校驗

奇偶校驗(Parity Check)是檢驗所傳輸的數據是否被正 確接收的一種簡單方法。發送方根據發送的字符後附加一 個校驗位0或1,接收方檢查此位是否還保持數據位的正確 關係,以判斷是否正確傳輸,奇偶校驗有奇校驗和偶校驗 等方式。

例如:100101 的偶校驗:1。數據中有三個1再增加一個1,1的個數爲偶數即可

CRC校驗

循環冗餘校驗(Cyclic Redundancy Check,CRC)即 CRC校驗,它是數據鏈路層中廣泛採用的校驗方式,在數據後面附加上用於差錯校驗的冗餘碼,在數據鏈路層的幀 結構中稱爲幀校驗序列(Frame Check Sequence, FCS)。

冗餘碼的位數常用的有12、16和32位,一般附加的用於 校驗的冗餘碼的位數越多,檢錯能力就越強,但傳輸的額 外開銷也越大。

例如:約定檢錯碼爲:m = 10011,數據爲 r = 10101100冗餘碼的計算:
已知檢錯碼m有5位

  1. 在10101100後增加 m-1 =4個0,即爲:r1 = 101011000000;
  2. 將增加之後的數據 r1 和檢錯碼 m 異或取值,例如數據前五位:10101異或10011=00110
  3. 將前兩位0去除剩下110
  4. 再將110用 r1 五位之後的補齊,得到下一次異或數據:11010以此類推,得到最終無法異或
  5. 得到00011,取最後四位爲冗餘碼,即0011;
  6. 最終傳輸到對端數據爲:101011000011;

有時檢錯碼會以:C=x4+x+1C=x^4+x+1 以多項式的係數爲檢錯碼:10011 。

海明驗證

在糾錯碼方案中,“海明碼”是一種典型的糾錯方案。海 明碼是一種可以糾正一位或多位差錯的編碼。它利用在信 息位爲m位,增加r位冗餘位,構成一個n=m+r位的碼字, 然後用r個監督關係式產生的r個校正因子來區分無錯和在 碼字中的n個不同位置的一位錯。它必須滿足以下關係式: 2r1m+r2^r-1\geq m+r
其中2r2^r爲編碼能力,即有幾種類型,減去1是減掉了全部正確的情況。

校驗位必須放在權得位置,即:1、2、4、8……

例如:數據爲:1101,使用海明校驗(採用偶校驗),求出其海明編碼。
已知有4位有效信息即m = 4;
根據公式: 2r1m+r2^r-1\geq m+r求得r = 3,那麼n = 3+4 = 7;
若定義信息爲:a[3];
校驗位爲:b[2];
那麼各序號之間得對應關係爲:

海明序號 海明編碼
1 b[0]
2 b[1]
3 a[0]
4 b[2]
5 a[1]
6 a[2]
7 a[3]
1 2 3 4 5 6 7
1 1 0 1

檢驗碼求算:

  1. 找的b[0]列對應得√,
  2. 在這一行中有3、5、7列有值,
  3. 對他們進行偶校驗,得到b[0]=1

以此類推求算出所有檢驗碼,b = [1, 0, 0]

所以最終發送到對端得數據爲:1010101

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