【計算機網絡-4】 【第三章】數據鏈路層筆記1——組幀、差錯控制、流量控制

數據鏈路層的功能
  • 組幀
  • 差錯控制
  • 流量控制與可靠傳輸機制

1、基本概念

鏈路 ——從一個結點到相鄰結點的一段 物理線路 ,而中間沒有任何其餘的交換結點。

數據鏈路——點到點
——按一種鏈路協議的技術要求鏈接兩個或多個數據站的電信設施,稱爲數據鏈路,簡稱數據鏈。
——在一條物理線路之上,經過一些規程或協議來控制這些數據的傳輸,以保證被傳輸數據的正確性
實現這些規程或協議的硬件和軟件加到物理線路,這樣就構成了數據鏈路。從數據發送點到數據接收點(點到點 point to point)所通過的傳輸途徑。

——————————————————————————————————————
2、數據鏈路層的功能
數據鏈路層的功能——向網絡層提供服務。主要做用是增強物理層傳輸原始比特流的功能,將物理層提供的可能出錯的物理鏈接改形成爲邏輯上無差錯的數據鏈路,使之對網絡層表現爲一條無差錯的鏈路
具體功能:
1.爲網絡層提供服務
(1)無確認的無鏈接服務
(2)有確認的無鏈接服務
(3)有確認的面向鏈接服務。

2.鏈路管理
數據鏈路層鏈接的創建、維持和釋放過程就稱做鏈路管理。
在多個站點共享同一物理信道的狀況下(例如局域網中),如何在要求通訊的站點間分配和管理信道也屬於數據鏈路層管理的範圍。

3.幀界定、幀同步、透明傳輸
(1)幀界定
——兩個工做站之間傳輸信息時,必須將網絡層的分組封裝成幀,以幀的格式進行傳送。
——將一段數據的先後分別添加首部和尾部,就構成了幀。
——首部和尾部中含有不少控制的信息,它們的一個重要做用是肯定幀的界限,即幀界定
(2)幀同步
——指的是接收方應當能從接收到的二進制比特流中區分出幀的起始與終止

(3)透明傳輸
——若是數據中剛好出現與幀界定符相同的比特組合,就要採起有效措施解決這個問題,即透明傳輸。

4.流量控制
——限制發送方的數據流量,使其發送速率不致超過接收方的接收能力。

5. 差錯控制——使發送方確認接收方是否正確收到了由它發送的數據的方法,即差錯控制。
位錯:幀中某些位出現了差錯。經過循環冗餘校驗CRC發現錯位。經過自動重傳請求ARQ來重傳錯的幀。
幀錯:幀的丟失、重複或失序。解決方法:定時器、編號機制。

——————————————————————————————————————
3、組幀
什麼是組幀——發送方依據必定規則、把網絡層遞交的分組封裝成幀
爲何要組幀?——讓接收方正確地接收並檢查所傳輸的幀,出錯時只重發出錯的幀,提升效率。
組幀要解決的問題——幀界定、幀同步、透明傳輸 

組幀實現方法:
1.字符計數法:
在幀頭部使用一個計數字段來標明幀內字符數。(缺點:脆弱性,計數字段出錯形成災難性後果。)

2.字符填充的 首尾定界符 法:
使用特定的字符回來定界一幀的開始和結束。(缺點:複雜性 不兼容性)

3.比特填充的首尾標誌法:
使用一個特定的比特模式,即01111110來標誌一幀的開始和結束。爲了作到透明傳輸,每出現5個連續的「1」時,自動在其後插入一個「0」。
接收方作該過程的逆操做恢復原信息。(優勢:性能優於字符填充方法)

4.違規編碼法:
(1)物理層比特編碼時一般採用違規編碼法。(好比曼切斯特編碼方法)
將「1」編碼成「高—低」電平對
將「0」編碼成「」電平對
「高—高」、「低—低」即爲違規編碼,借用這些違規編碼序列來定界幀的起始和終止。
優勢:不採用任何填充技術就能實現透明傳輸,但只適用於冗餘編碼(原數據編碼+後填充上的編碼)的環境。(IEEE802標準就採用這種方法)

——————————————————————————————————————

4、差錯控制
1.傳輸中的差錯都由兩類噪聲引發
(1)信道固有的隨機熱噪聲、(2)外界特定短暫的衝擊噪聲
前者可經過提升信噪比減小、排除干擾,後者不可避免是產生差錯的重要緣由。

2.差錯控制技術分兩類:
(1)自動重傳請求(ARQ),能檢錯
(2)向前糾錯(FEC),能檢錯也能糾錯

3.檢錯編碼(採用冗餘編碼技術)
(1)奇偶校驗碼
(2)循環冗餘碼CRC (CRC原理介紹http://blog.chinaunix.net/uid-30249924-id-5054776.html
4.糾錯編碼
(1)海明校驗(能發現雙比特錯,但只能糾正單比特錯)(海明碼原理http://blog.chinaunix.net/uid-30249924-id-5055123.html)

——————————————————————————————————————


5、流量控制與可靠傳輸機制
1.中止-等待協議——最簡單但也是最基礎的數據鏈路層協議。發送方每發送完一個分組就中止發送,等待對方的確認。在收到確認後再發送下一個分組。

2.滑動窗口:
發送窗口(SWS,send window size)
——任意時刻發送方都維持一組連續的容許發送的幀的序號。
——發送窗口的大小Wt,表明還沒收到對方確認信息的狀況下發送方最多還能夠發送多少個數據幀。

接收窗口(RWS,receive window size)
——接收方維持一組連續的容許接收幀的序號。
——設置接收窗口是爲了控制能夠接收哪些數據幀而不能夠接收哪些數據幀。
——接收方收到的數據幀的序號落入接收窗口內才容許將該數據幀收下。

滑動窗口的特性——
(1)只有接收窗口向前滑動時,發送窗口才有可能向前滑動(取決因而否收到確認幀)。
(2)中止-等待協議、後退N幀協議、選擇重傳協議只在發送窗口大小和接收窗口大小上有所差異。
中止-等待協議:發送窗口大小=1,接收窗口大小=1;
後退N幀協議
:發送窗口大小>1,接收窗口大小=1;
選擇重傳協議:發送窗口大小>1,接收窗口大小>1;

(3)接收窗口的大小爲1時,可保證幀的有序接收。

(4)數據鏈路層的滑動窗口協議中,窗口的大小在傳輸過程當中是固定的。

3.可靠傳輸機制:確認 ②超時重傳
確認——一種無數據的控制幀,它讓發送方知道哪些內容被正確接收。
捎帶確認——有些狀況下,爲了提升傳輸效率,將確認捎帶在一個回覆中。
超時重傳——發送方在某發送一個數據幀之後,就開啓一個計時器,在必定時間內若是沒有獲得發送的數據幀的確認幀,就從新發送該數據幀,直達發送成功。

ACK——確認字符
NAK——否認應答
自動重傳請求(ARQ)——接受方→請求發送方,重傳出錯的數據幀→來恢復出錯的數據。


三種自動重傳請求:(後兩種協議是滑動窗口技術與請求重發結束的結合,又稱連續ARQ協議
(1)即停等式ARQ協議  (stop and wait);單幀滑動窗口
——發送方發送單個幀→必須等待確認→接收方的回答到達以前→發送方不能發送數據幀
——中止-等待協議的常見差錯:
①數據幀丟失
②到站的幀可能已遭破壞(→接收方利用檢錯技術,丟棄該幀;發送方計時器超時,重傳)
③數據幀正確,但確認幀被破壞(→也是重傳)
——若連續出現相同發送序號的數據幀,表示發送端進行了超時重傳
——連續出現相同序號的確認幀,代表接收端收到了重複幀
——爲了超時重發、斷定重複幀的須要,發送方接收方都必須設置幀緩衝區。

(2)後退N幀ARQ協議 (go back n);GBN 多幀滑動窗口
——發送方不須要在收到上一個幀ACK後才能開始發送下一幀,而是能夠連續發送幀;
——接收方檢測出失序的信息幀後,要求發送方重發最後一個正確接收的信息幀以後的全部未被確認的幀;(或發送方計時器超時,重發)
——接收方只容許按順序接收幀
——接收端能夠在連續收到好幾個正確的數據幀後,發對最後一個數據幀發確認信息(或捎帶確認),這同時代表 這幀以前的全部數據幀都正確收到。
——若採用n個比特對幀編號,發送窗口WT尺寸應知足:1≤ WT ≤ 2^n-1,不然會形成收發方沒法分辨新幀和舊幀。 
——信道的傳輸質量不好到誤碼率較大時,退後N幀協議不必定優於中止-等待協議。


(3)
選擇性重傳ARQ協議 (selective repeat)SR;多幀滑動窗口
——只重傳出現差錯的數據幀(或計時器超時的)
——加大接收窗口,先收下發送序號不連續仍處接收窗口中的那些數據幀,到所缺序號的數據幀後再一併交送主機
——每個發送緩衝區對應一個計時器,當計時器超時時,緩衝區的幀就會重傳。
——另外,一旦接收方懷疑幀出錯,就會發送一個NAK給發送方,要求發送方對NAK中指定的幀進行重傳。
——接收端設置具備至關容量的緩衝區,來暫存那些未按序正確收到的幀,所需緩衝區數目等於窗口的大小,而不是序號數目。
——接收窗口爲WR,發送窗口爲WT;WR+WT ≤ 2^n;WR ≤ 2^(n-1);WTmax = WRmax = 2^(n-1)