複製鏈接
請複製以下鏈接發送給好友

數據鏈路層

鎖定
數據鏈路層是OSI參考模型中的第二層,介乎於物理層網絡層之間。數據鏈路層在物理層提供的服務的基礎上向網絡層提供服務,其最基本的服務是將源自物理層來的數據可靠地傳輸相鄰節點的目標機網絡層。
中文名
數據鏈路層
外文名
Data Link Layer
所屬垂類
計算機網絡
功    能
傳輸數據幀

數據鏈路層簡介

數據鏈路層定義了在單個鏈路上如何傳輸數據。這些協議與被討論的各種介質有關。示例:ATMFDDI等。數據鏈路層必須具備一系列相應的功能,主要有:如何將數據組合成數據塊,在數據鏈路層中稱這種數據塊為,幀是數據鏈路層的傳送單位;如何控制幀在物理信道上的傳輸,包括如何處理傳輸差錯,如何調節發送速率以使與接收方相匹配;以及在兩個網絡實體之間提供數據鏈路通路的建立、維持和釋放的管理。
物理鏈路(物理線路):是由傳輸介質與設備組成的。原始的物理傳輸線路是指沒有采用高層差錯控制的基本的物理傳輸介質與設備。
數據鏈路(邏輯線路):在一條物理線路之上,通過一些規程或協議來控制這些數據的傳輸,以保證被傳輸數據的正確性。實現這些規程或協議的硬件和軟件加到物理線路,這樣就構成了數據鏈路,從數據發送點到數據接收點所經過的傳輸途徑。當採用複用技術時,一條物理鏈路上可以有多條數據鏈路。

數據鏈路層基本功能

數據鏈路層主要有兩個功能 :幀編碼和誤差糾正控制。幀編碼意味着定義一個包含信息頻率、位同步、源地址、目標地址以及其他控制信息的數據包。數據鏈路層協議又被分為兩個子層 :邏輯鏈路控制(LLC)協議和媒體訪問控制(MAC)協議。 [1] 
數據鏈路層 數據鏈路層
數據鏈路層的最基本的功能是向該層用户提供透明的和可靠的數據傳送基本服務。透明性是指該層上傳輸的數據的內容、格式及編碼沒有限制,也沒有必要解釋信息結構的意義;可靠的傳輸使用户免去對丟失信息、干擾信息及順序不正確等的擔心。在物理層中這些情況都可能發生,在數據鏈路層中必須用糾錯碼來檢錯與糾錯。數據鏈路層是對物理層傳輸原始比特流的功能的加強,將物理層提供的可能出錯的物理連接改造成為邏輯上無差錯的數據鏈路,使之對網絡層表現為一無差錯的線路。

數據鏈路層幀同步

為了使傳輸中發生差錯後只將有錯的有限數據進行重發數據鏈路層將比特流組合成以太幀為單位傳送。每個幀除了要傳送的數據外,還包括校驗碼,以使接收方能發現傳輸中的差錯。幀的組織結構必須設計成使接收方能夠明確地從物理層收到的比特流中對其進行識別,也即能從比特流中區分出幀的起始與終止,這就是幀同步要解決的問題。
(1)字節計數法:這是一種以一個特殊字符表示一幀的起始並以一個專門字段來標明幀內字節數的幀同步方法。接收方可以通過對該特殊字符的識別從比特流中區分出幀的起始並從專門字段中獲知該幀中隨後跟隨的數據字節數,從而可確定出幀的終止位置。面向字節計數的同步規程的典型代表是DEC公司的數字數據通信報文協議DDCMP(Digital Data Communications Message Protocol)。
控制字符SOH標誌數據幀的起始。實際傳輸中,SOH前還要以兩個或更多個同步字符來確定一幀的起始,有時也允許本幀的頭緊接着上幀的,此時兩幀間就不必再加同步字符。count字段共有14位,用以指示幀中數據段中數據的字節數,14位二進制數的最大值為16383,所以數據最大長度為131064。DDCMP協議就是靠這個字節計數來確定幀的終止位置的。DDCMP幀格式中的ACK、SEG、ADDR及FLAG中的第2位CRC1、CRC2分別對標題部分和數據部分進行雙重校驗,強調標題部分單獨校驗的原因是,一旦標題部分中的CONUT字段出錯,即失卻了幀邊界劃分的依據。由於採用字符計數方法來確定幀的終止邊界不會引起數據及其它信息的混淆,因而不必採用任何措施便可實現數據的透明性(即任何數據均可不受限制地傳輸)。
(2)使用字符填充的首尾定界符法:該法用一些特定的字符來定界一幀的起始與終止,為了不使數據信息位中出現的與特定字符相同的字符被誤判為幀的首尾定界符,可以在這種數據字符前填充一個轉義控制字符(DLE)以示區別,從而達到數據的透明性。但這種方法使用起來比較麻煩,而且所用的特定字符過份依賴於所採用的字符編碼集兼容性比較差。
(3)使用比特填充的首尾標誌法:該法以一組特定的比特模式來標誌一幀的起始與終止。
(4)違法編碼法:該法在物理層採用特定的比特編碼方法時採用。例如,一種被稱作曼徹斯特編碼的方法,是將數據比特“1”編碼成“高-低”電平對,而將數據比特“0”編碼成“低-高”電平對。而“高-高”電平對和“低-低”電平對在數據比特中是違法的。可以借用這些違法編碼序列來定界幀的起始與終止。局域網IEEE 802標準中就採用了這種方法。違法編碼法不需要任何填充技術,便能實現數據的透明性,但它只適用於採用冗餘編碼的特殊編碼環境。由於字節計數法中COUNT字段的脆弱性以及字符填充法實現上的複雜性和不兼容性,較普遍使用的幀同步法是比特填充和違法編碼法。 [2] 

數據鏈路層差錯控制

一個實用的通信系統必須具備發現(即檢測)這種差錯的能力,並採取某種措施糾正之,使差錯被控制在所能允許的儘可能小的範圍內,這就是差錯控制過程,也是數據鏈路層的主要功能之一。對差錯編碼(如奇偶校驗碼,檢查和或CRC)的檢查,可以判定一幀在傳輸過程中是否發生了錯誤。一旦發現錯誤,一般可以採用反饋重發的方法來糾正。這就要求接收方收完一幀後,向發送方反饋一個接收是否正確的信息,使發送方所在此作出是不需要重新發送的決定,也即發送方僅當收到接收方已正確接收的反饋信號後才能認為該幀已經正確發送完畢,否則需要重新發送直至正確為止。物理信道的突發噪聲可能完全“淹沒”一幀,即使得整個數據幀或反饋信息幀丟失,這將導致發送方永遠收不到接收方發來的反饋信息,從而使傳輸過程停滯.為了避免出現這種情況,通常引入計時器(Timer)來限定接收方發回反饋信息的時間間隔,當發送方發送一幀的同時也啓動計時器,若在限定時間間隔內未能收到接收方的反饋信息,即計時器超時(Timeout),則可認為傳的幀已出錯或丟失,繼而要重新發送。由於同一幀數據可能被重複發送多次。為了防止發生這種危險,可以採用對發送的幀編號的方法,即賦予每幀一個信號,從而使接收方能從該序號來區分是新發送來的幀還是已經接收但又重新發送來的幀,以此來確定要不要將接收到的幀遞交給網絡層。數據鏈路層通過使用計數器和序號來保證每幀最終都被正確地遞交給目標網絡層一次。

數據鏈路層流量控制

流量控制並不是數據鏈路層所特有的功能,許多高層協議中也提供流時控功能,只不過流量控制的對象不同而已。比如,對於數據鏈路層來説,控制的是相鄰兩節點之間數據鏈路上的流量,而對於傳輸層來説,控制的則是從源到最終目的之間端的流量。由於收發雙方各自使用的設備工作速率和緩衝存儲的空間的差異,可能出現發送方發送能力大於接收方接收能力的現象,如若此時不對發送方的發送速率(也即鏈路上的信息流量)作適當的限制,前面來不及接收的幀將被後面不斷髮送來的幀“淹沒”,從而造成幀的丟失而出錯。由此可見,流量控制實際上是對發送方數據流量的控制,使其發送率不致超過接收方所能承受的能力。這個過程需要通過某種反饋機制使發送方知道接收方是否能跟上發送方,也即需要有一些規則使得發送方知道在什麼情況下可以接着發送下一幀,而在什麼情況下必須暫停發送,以等待收到某種反饋信息後繼續發送。

數據鏈路層鏈路管理

數據鏈路層 數據鏈路層
鏈路管理功能主要用於面向連接的服務。當鏈路兩端的節點要進行通信前,必須首先確認對方已處於就緒狀態,並交換一些必要的信息以對幀序號初始化,然後才能建立連接,在傳輸過程中則要能維持該連接。如果出現差錯,需要重新初始化,重新自動建立連接。傳輸完畢後則要釋放連接。數據連路層連接的建立維持和釋放就稱作鏈路管理。在多個站點共享同一物理信道的情況下(例如在LAN中)如何在要求通信的站點間分配和管理信道也屬於數據鏈路層管理的範疇。

數據鏈路層相關協議

數據鏈路控制協議也稱鏈路通信規程,也就是OSI參考模型中的數據鏈路層協議。鏈路控制協議可分為異步協議同步協議兩大類。
數據鏈路層的主要協議有:
(1)點對點協議(Point-to-Point Protocol);
(2)以太網(Ethernet);
(3)高級數據鏈路協議(High-Level Data Link Protocol);
(4) 幀中繼(Frame Relay);
(5) 異步傳輸模式(Asynchronous Transfer Mode);

數據鏈路層異步協議

以字符為獨立的信息傳輸單位,在每個字符的起始處開始對字符內的比特實現同步,但字符與字符之間的間隔時間是不固定的(即字符之間是異步的)。由於發送器和接收器中近似於同 一頻率的兩個約定時鐘,能夠在一段較短的時間內保持同步,所以可以用字符起始處同步的時鐘來採樣該字符中的各比特,而不需要每個比特再用其它方法同步。異步協議中因為每個傳輸字符都要添加諸如起始位校驗位及停止位等冗餘位,故信道利用率很低,一般用於數據速率較低的場合。

數據鏈路層同步協議

同步協議是以許多字符或許多比特組織成的數據塊——幀為傳輸單位,在幀的起始處同步,使幀內維持固定的時鐘。實際上該固定時鐘是發送端通過某種技術將其混合在數據中一併發送出去的,供接收端從輸入數據中分離出時鐘來,實現起來比較複雜,這個功能通常是由解調器來完成。由於採用幀為傳輸單位,所以同步協議能更有效地利用信道,也便於實現差錯控制、流量控制等功能。同步協議又可分為面向字符的同步協議、面向比特的同步協議及面向字節計數的同步協議三種類型。

數據鏈路層HDLC

HDLC是通用的數據鏈路控制協議,當開始建立數據鏈路時,允許選用特定的操作方式。所謂鏈路操作方式,通俗地講就是某站點以主站方式操作,還是以從站方式操作,或者是二者兼備。在鏈路上用於控制目的站稱為主站,其它的受主站控制的站稱為從站。主站負責對數據流進行組織,並且對鏈路上的差錯實施恢復。由主站發往從站的幀稱為命令幀,而由由站返回主站的幀稱響應幀。連有多個站點的鏈路通常使用輪詢技術,輪詢其它站的站稱為主站,而在點到點鏈路中每個站均可為主站。主站需要比從站有更多的邏輯功能,所以當終端與主機相連時,主機一般總是主站。

數據鏈路層操作方式

HDLC中常用的操作方式有以下三種:
(1)正常響應方式NRM是一種非平衡數據鏈路操作方式,有時也稱非平衡正常響應方式。該操作方式適用於面向終端的點到點或一點與多點的鏈路。在這種操作方式,傳輸過程由主站啓動,從站只有收到主站某個命令幀後,才能作為響應向主站傳輸信息。響應信息可以由一個或多個幀組成,若信息 由多個幀組成,則應指出哪一個是最後一幀。主站負責管理整個鏈路,且具有輪詢、選擇從站及向從站發送命令的權利,同時也負責對超時、重發及各類恢復操作的控制。
(2)異步響應方式ARM,異步響應方式ARM也是一種非平衡數據鏈路操作方式,與NRM不同的是,ARM的傳輸過程由從站啓動。從站主動發送給主站的一個或一組幀中可包含有信息,也可以是僅以控制為目的而發的幀。在這種操作方式下,由從站來控制超時和重發。該方式對採用輪詢方式的多站蓮路來説是必不可少的。ARM操作方式見圖3.7(b)。
(3)異步平衡方式ABM,異步平衡方式ABM是一種允許任何節點來啓動傳輸的操作方式。為了提高鏈路傳輸效率,節點之間在兩個方向上都需要的較高的信息傳輸量。在這種操作方式下任何時候任何站都能啓動傳輸操作,每個站既可作為主站又可作為從站,每個站都是組合站。各站都有相同的一組協議,任何站都可以發送或接收命令,也可以給出應答,並且各站對差錯恢復過程都負有相同的責任。

數據鏈路層幀格式

在HDLC中,數據和控制報文均以幀的標準格式傳送。HDLC中的幀類似於BSC的字符塊,但BSC協議中的數據報文和控制報文是獨立傳輸的,而HDLC中的命令應以統一的格式按幀傳輸。HDLC的完整的幀由標誌字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、幀校驗序列字段(FCS)等組成。
HDLC幀格式 HDLC幀格式
(1)標誌字段(F):標誌字段為01111110的比特模式,用以標誌幀的起始和前一幀的終止。標誌字段也可以作為幀與幀之間的填充字符。通常,在不進行幀傳送的時刻,信道仍處於激活狀態,在這種狀態下,發方不斷地發送標誌字段,便可認為一個新的幀傳送已經開始。採用“0比特插入法”可以實現0數據的透明傳輸。
(2)地址字段(A):地址字段的內容取決於所採用的操作方式。在操作方式中,有主站、從站、組合站之分。每一個從站和組合站都被分配一個唯一的地址。命令幀中的地址字段攜帶的是對方站的地址,而響應幀中的地址字段所攜帶的地址是本站的地址。某一地址也可分配給不止一個站,這種地址稱為組地址,利用一個組地址傳輸的幀能被組內所有擁有該組一焉的站接收。但當一個站或組合站發送響應時,它仍應當用它唯一的地址。還可用全“1”地址來表示包含所有站的地址,稱為廣播地址,含有廣播地址的幀傳送給鏈路上所有的站。另外,還規定全“0”地址為無站地址,這種地址不分配給任何站,僅作作測試。
(3)控制字段(C):控制字段用於構成各種命令和響應,以便對鏈路進行監視和控制。發送方主站或組合站利用控制字段來通知被尋址的從站或組合站執行約定的操作;相反,從站用該字段作對命令的響應,報告已完成的操作或狀態的變化。該字段是HDLC的關鍵。控制字段中的第一位或第一、第二位表示傳送幀的類型,HDLC中有信息幀(I幀)、監控幀(S幀)和無編號幀(U幀)三種不同類型的幀。控制字段的第五位是P/F位,即輪詢/終止(Poll/Final)位。
(4)信息字段(I):信息字段可以是任意的二進制比特串。比特串長度未作限定,其上限由FCS字段或通信站的緩衝器容量來決定,國際上用得較多的是1000~2000比特;而下限可以為0,即無信息字段。但是,監控幀(S幀)中規定不可有信息字段。
(5)幀校驗序列字段(FCS):幀校驗序列字段可以使用16位CRC,對兩個標誌字段之間的整個幀的內容進行校驗。 [2] 

數據鏈路層幀類型

HDLC有信息幀(I幀)、監控幀(S幀)和無編號幀(U幀)三種不同類型的幀。
(1)信息幀(I幀):信息幀用於傳送有效信息或數據,通常簡稱I幀。I幀以控制字第一位為“0”來標誌。信息幀的控制字段中的N(S)用於存放發送幀序號,以使發送方不必等待確認而連續發送多幀。N(R)用於存放接收方下一個預期要接收的幀的序號,N(R)=5,即表示接收方下一幀要接收5號幀,換言之,5號幀前的各幀接收到。
(2)監控幀(S幀):監控幀用於差錯控制和流量控制,通常簡稱S幀。S幀以控制字段第一、二位為“10”來標誌。S幀帶信息字段,只有6個字節即48個比特。S幀的控制字段的第三、四位為S幀類型編碼,共有四種不同編碼,分別表示:
00——接收就緒(RR),由主站或從站發送。主站可以使用RR型S幀來輪詢從站,從站傳輸編號為N(R)的I幀,若存在這樣的幀,便進行傳輸;從站也可用RR型S幀來作響應,表示從站希望從主站那裏接收的下一個I幀的編號是N(R)。
01——拒絕(REJ),由主站或從站發送,用以要求發送方對從編號為N(R)開始的幀及其以後所有的幀進行重發,這也暗示N(R)以前的I幀已被正確接收。
10——接收未就緒(RNR),表示編號小於N(R)的I幀已被收到,但正處於忙狀態,尚未準備好接收編號為N(R)的I幀,這可用來對鏈路流量進行控制。
11——選擇拒絕(SREJ),它要求發送方發送編號為N(R)單個I幀,並暗示它編號的I幀已全部確認
(3)無編號幀(U幀):無編號幀因其控制字段中不包含編號N(S)和N(R)而得名,簡稱U幀。U幀用於提供對鏈路的建立、拆除以及多種控制功能,這些控制功能5個M位(M1、M2、M3、M4、M5,也稱修正位)來定義。5個M位可以定義32種附加的命令功能或32種應答功能,但許多是空缺的。 [2] 

數據鏈路層邏輯鏈路控制層

邏輯鏈路控制子層,我們通過執行一個停止或等待自動重複檢索(ARQ)協議來檢測誤差和請求重傳錯誤幀。源節點A在發送下一幀數據之前等待一個來自目標節點B的回執(ACK)。如果在預置暫停時間內沒接收到回執,A重傳這幀數據。在數據幀來回傳播的時間段內,信道保持空閒。在全雙工通信鏈路,如果節點 A 在等待 ACK 時連續傳送相同的數據幀,網絡吞吐量可以增大。 [1] 
DLSL層子系統依功能可劃分為:DLSL初始化模塊、DLSL狀態機模塊、DLSL數據服務模塊、DLSL管理服務模塊、DLSL處理MAC 層消息模塊、通信調度模塊、信道跳頻模塊和安全模塊。 [3] 

數據鏈路層媒介訪問控制子層

數據鏈路層最關鍵的技術就是媒體訪問控制(MAC)。它的作用是平均分配存在競爭和高吞 吐量節點之間的信道資源。帶衝突避免的多址接入(MACA)協議利用兩個叫做請求 / 發送(RTS) 和清除 / 發送(CTS)的信號幀來檢測衝突。它是 MAC 子層的常用協議。當源節點A想要發送信息到目標節點B時,它會首先發出一個 RTS命令。如果節點B收到RTS,它則會發送回一個CTS命令。如果節點A沒有在預定時間內接收到CTS,它將重新發送 RTS。只要節點 A 一收到CTS,它就立刻開 始傳輸數據幀。任何監聽到CTS的其他節點將會延遲一個數據包長度的時間來避免衝突。
MACAW協議是MACA協議的改良版 ,它提高了UAN 的性能和可靠性。 [1] 
MAC層子系統依功能可劃分為:MAC層初始化模塊、MAC層狀態機模塊、MAC層數據服務功能模塊、MAC 層管理服務功能模塊、MAC層處理RF消息模塊、時隙處理模塊和時間同步模塊。 [3] 
參考資料
  • 1.    海麗萍,王宏雲.水聲網絡數據鏈路層協議[J].科技傳播,2018,10(4):146-147. DOI:10.3969/j.issn.1674-6708.2018.04.075.
  • 2.    全國高等教育自學考試委員會.計算機網絡原理.北京:經濟科學出版社,2011年:83-86頁
  • 3.    韓闖,封岸松,邱雪維.基於WIA-PA的現場設備數據鏈路層的設計與實現[J].瀋陽化工大學學報,2016,30(2):171-176. DOI:10.3969/j.issn.2095-2198.2016.02.015.