1. 程式人生 > >計算機網路---資料鏈路層

計算機網路---資料鏈路層

資料鏈路層在物理層提供的服務基礎上向網路層提供服務,其主要作用是加強物理層傳輸原始位元流的功能,將物理層提供的可能出錯的物理連線改造成邏輯上無差錯的資料鏈路,使之對網路層表現為一條無差錯鏈路。

對網路層而言,資料鏈路層的基本任務是將源機器中來自網路層的資料傳輸到目標機器的網路層。資料鏈路層通常可為網路層提供的服務有:無確認的無連線服務,有確認的無連線服務,有確認的面向連線服務。(有連線就一定要有確認)

資料鏈路層連線的建立,維持和釋放過程就稱作鏈路管理,它主要用於面向連線的服務。

兩個工作站之間傳輸資訊時,必須將網路層的分組封裝成幀,以幀的格式進行傳送。將一段資料的前後分別新增首部和尾部,就構成了幀。首部和尾部中含有很多控制資訊,它們的一個重要作用就是確定幀的界限,即幀定界。而幀同步指的是接收方應當能從接收到的二進位制位元流中區分出幀的起始和終止。

如果在資料中恰好出現與幀定界符相同的位元組合,會誤認為傳輸結束而丟棄後面的資料,就要採取有效的措施解決這個問題,即透明傳輸。確切的說,透明傳輸就是不管所傳資料是什麼樣的位元組合,都應當能在鏈路上傳送。

由於收發雙方各自的工作速率和快取空間的差異,可能出現傳送方傳送能力大於接收方接收能力的現象,如若此時不對傳送方的傳送速率做適當限制,前面來不及接收的幀就會被後面不斷髮送的幀淹沒,造成幀丟失而出錯。因此,流量控制實際上就是限制傳送方的資料流量,使其傳送速率不致超過接收方的接收能力。

流量控制並不是資料鏈路層特有的功能,許多高層協議中也提供此功能,只不過控制物件不同而已。對於資料鏈路層來說,控制的是相鄰兩點之間資料鏈路上的流量,而對運輸層來說,控制的則是從源端到目的端之間的流量。

由於噪聲等各種原因,幀在傳輸過程中可能會出現某種錯誤。用以使傳送方確定接收方是否正確收到了由它傳送的資料的方法稱為差錯控制。通常可分為位錯和幀錯。位錯指幀中某些位出現了錯誤,通常採用迴圈冗餘(CRC)校檢方式發現位錯。自動重傳請求(ARQ):讓傳送方將要傳送的資料幀附加一定的CRC冗餘檢錯碼一併傳送,接收方則根據檢錯碼對資料幀進行錯誤檢測,若發現錯誤,則丟棄,傳送方超時重傳該資料幀。幀錯是指幀的丟失,重複或失序等錯誤。在資料鏈路層引入定時器和編號機制,可以保證每一幀最終都能有且僅有一次正確的交付給目的結點。

資料鏈路層之所以要把位元組合成幀單位傳輸,是為了在出錯時只重發出錯的幀,而不必重發全部資料,從而提高效率。為了使接受方正確地接收並檢查所傳輸的幀,傳送方必須按照一定的規則將網路層遞交的分組封裝成幀。組幀既要加首部也要加尾部,而分組僅僅包含在幀的資料部分,所以不需要加尾部。組幀的實現方法:

  • 字元計數法:在幀頭部使用一個計數字段來標明幀內字元數;
  • 字元填充的首尾定界符法: 用特點的字元定界一幀的開始和結束;
  • 位元填充的首尾標誌法:如用01111110標誌幀的開始和結束,傳送資料中沒遇到5個連續1自動加一個0,接收方遇到5個1自動刪除一個0,位元填充很容易由硬體實現,效能優於字元填充;
  • 違規編碼法:在物理層位元編碼時通常採用違規編碼法。如曼徹斯特編碼中高-高電平和低-低電平在資料位元中是違規的,可以借用這些違規的編碼序列定界幀的起始和終止;區域網IEEE802標準採用這種方法。

通過利用編碼技術進行差錯控制,主要有兩類:自動重傳請求ARQ和前向糾錯FEC。在ARQ方式中,接收端檢測出差錯時,就設法通知傳送端重發,直到接收到正確的碼字為止;在FEC方式中,接收端不但能發現差錯,而且還能確定二進位制數碼錯誤位置,從而加以糾正。因此,差錯控制又可分為檢錯編碼和糾錯編碼。

流量控制涉及對鏈路上的幀的傳送速率的控制,以使接收方有足夠的緩衝空間來接收每一個幀。流量控制的基本方法是由接收方控制傳送資料的速率,常見的有停止等待協議和滑動視窗協議。

停止-等待協議:傳送方每傳送一幀,都要等待接收方的應答訊號,之後才能傳送下一幀;接收方每接收一幀,都要反饋一個應答訊號,表示可接收下一幀,如果接收方不反饋應答訊號,則傳送方必須一直等待,每次只允許傳送一幀,然後就陷入等待接收確認資訊的過程中,因而傳輸效率很低。

滑動視窗流量控制協議:在任意時刻,傳送方都維持一組連續的允許傳送的幀的序號,稱為傳送視窗;同時接收方也維持一組連續的允許接收幀的序號,稱為接收視窗。在接收端,當收到資料幀後,將視窗向前移一個位置,併發回確認幀,若收到的資料幀落在接收視窗之外則一律丟棄。當接收視窗為1時,可保證幀的有序接收,資料鏈路層的滑動視窗協議中,視窗的大小在傳輸過程中是固定的。

資料鏈路層的可靠傳輸通常使用確認和超時重傳兩種機制來完成。確認是一種無資料的控制幀,這種控制幀使得接收方可以讓傳送方知道哪些內容被正確接收。有些情況下,為了提高傳輸效率,將確認捎帶在一個回覆幀中,稱為捎帶確認。超時重傳是指傳送方在傳送某一個數據幀以後就開啟一個計時器,在一定時間內如果沒有得到傳送的資料幀的確認幀,那麼就重發該資料幀,直到傳送成功為止。

停止等待協議:在停止等待協議中,源站傳送單個幀後必須等待確認,在目的站的回答到達之前源站不能傳送其他資料幀。從滑動視窗機制的角度來看,停止等待協議相當於傳送視窗和接收視窗均為1的滑動視窗協議。在停止等待協議中,除了資料丟失,還可能出現以下兩種差錯:1.到達目的站的幀可能已遭破壞,接收站利用差錯檢測技術檢出後,簡單地將該幀丟棄。為了對付這種可能的情況,源站裝備了計時器。在一個幀傳送之後,源站等待確認,如果在計時器滿時仍未收到確認,則再次傳送相同的幀。如此重複直到該資料幀無錯誤到達為止。2.如果資料幀正確而確認幀被破壞,此時接收方已經接受到了正確的資料幀,但傳送方收不到確認幀,因此傳送方會重傳已經被接收的資料幀,接收方收到同樣的資料幀時會丟棄該資料幀,並重傳一個該幀對應的確認幀,傳送的幀交替用0和1來標識,肯定確認則分別用ACK0和ACK1來表示,當收到的確認幀有誤時,則重傳已傳送的幀。

對於停止等待協議,由於每傳送一個數據幀就停止並等待,因此用1bit來編號就夠了。在停止等待協議中,若連續出現相同傳送序號的資料幀,表明傳送端進行了超時重傳。連續出現相同序號的確認幀,表明接收端收到了重複幀。此外,為了超時重發和判定重複幀的需要,傳送方和接收方都需要設定一個幀緩衝區,傳送端在傳送完資料幀時,必須在其傳送的快取中保留此資料幀的副本,這樣才能在出差錯時進行重傳。只有在收到對方發來的確認幀ACK時,方可清除此副本。

後退N幀協議(GBN):在後退N式ARQ中,傳送方不需要在收到上一幀的ACK後才能開始傳送下一幀,而是可以連續傳送幀。當接收方檢測出失序的資訊幀後,要求傳送方重發最後一個正確接收的資訊幀之後的所有未被確認的幀;接收方只允許按順序接收幀。接收端接收到不按序的無差錯幀,應直接丟棄並重復發送已經發送過的最後一個確認幀,防止已經發送過的確認幀丟失。由於連續傳送了許多幀,所以確認幀必須要指明是對哪一幀進行確認。為了減少開銷,GBN協議還規定接收端不一定每收到一個正確的資料幀就必須立即發回一個確認幀,而是可以在連續收到好幾個正確的資料幀後,才對最後一個數據幀傳送確認訊息,或者可以在當自己有資料要傳送時才將對以前正確的資料幀加以捎帶確認。

後退N幀協議的接收視窗為1,可以保證按序接收資料幀。若採用n個位元對幀編號,則其傳送視窗應該滿足大於等於1小於等於2的n次方減1;若傳送視窗大於2的n次方減1,則會造成接收方無法分辨舊幀和新幀。若通道的傳輸質量很差導致誤位元速率較大時,後退N幀協議不一定優於停止等待協議。

選擇重傳協議(SR):為進一步提高通道利用率,可設法只重傳出現差錯的資料幀或是計時器超時的資料幀。但此時必須加大接收視窗,以便收下發送序號不連續但仍處在接收視窗的那些資料幀。等到所缺序號的資料幀收到後再一併送交主機。

在選擇重傳協議中,每一個傳送緩衝區對應一個計時器,當計時器超時時,緩衝區的幀就會重傳。另外,該協議使用了更有效的差錯處理策略,即一旦接收方懷疑幀出錯,就會發一個否定幀NAK給傳送方,要求傳送方對NAK中指定的幀進行重傳。若採用n位元對幀編號,選擇重傳協議接收視窗和傳送視窗之和應小於等於2的n次方。一般情況下,在SR協議裡面,接收視窗大小和傳送視窗大小相同。

通道的效率也稱通道的利用率,對傳送方而言,一般是指傳送方在一個傳送週期的時間內,有效的傳送資料所需要時間佔整個傳送週期的比率。

介質訪問控制所要完成的主要任務是為使用介質的每個結點隔離來自同一通道上其他結點所傳送的訊號,以協調活動結點的傳輸。用來決定廣播通道中通道分配的協議屬於資料鏈路層的一個子層,稱為介質訪問控制(MAC)子層。常見的介質訪問控制方法有:通道劃分介質訪問控制,隨機訪問介質控制和輪詢訪問介質控制。其中前者是靜態劃分通道的方法,後兩者是動態分配通道的方法。

通道劃分介質訪問控制將使用介質的每個裝置與來自同一通訊通道上的其他裝置通訊隔離開來,把時域和頻域資源合理地分配給網路上的裝置。當傳輸介質的頻寬超過了傳輸單個訊號所需的頻寬時,人們就通過在一條介質上同時攜帶多個傳輸訊號的方法來提高傳輸系統的利用率,這就是多路複用。也是實現通道劃分介質訪問控制的途徑。多路複用技術把多個訊號組合在一條物理通道上進行傳輸,使多個計算機或終端裝置共享通道資源,提高通道利用率。

通道劃分的實質就是通過分時,分頻,分碼等方法把原來的一條廣播通道,邏輯上分為幾條用於兩個結點之間通訊的互不干擾的子通道。實際上就是把廣播通道轉變為點對點通道,通道劃分介質訪問控制分為:

  • 頻分多路複用:頻分多路複用是一種將多路基帶通道調製到不同頻率載波上再進行疊加形成的一個複合訊號的多路複用技術。