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

鏈路層

鎖定
數據鏈路層的最基本的功能是向該層用户提供透明的和可靠的數據傳送基本服務。透明性是指該層上傳輸的數據的內容、格式及編碼沒有限制,也沒有必要解釋信息結構的意義;可靠的 傳輸使用户免去對丟失信息、干擾信息及順序不正確等的擔心。在物理層中這些情況都可能發生,在數據鏈路層中必須用糾錯碼來檢錯與糾錯。數據鏈路層是對物理層傳輸原始比特流的功能的加強,將物理層提供的可能出錯的物理連接改造成為邏輯上無差錯的數據鏈路,使之對網絡層表現為一無差錯的線路。
中文名
鏈路層
外文名
link layer
學    科
計算機網絡
定    義
網絡體系結構最低的一層

鏈路層使用功能

鏈路層幀同步功能

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

鏈路層差錯控制功能

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

鏈路層流量控制功能

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

鏈路層鏈路管理功能

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

鏈路層差錯控制

用以使發送方確定接收方是否正確收到了由它發送的數據信息的方法稱為反饋差錯控制。通常採用反饋檢測和自動重發請求ARQ)兩種基本方法實現。

鏈路層反饋檢測法

反饋檢測法也稱回送校驗或“回聲”法,主要用於面向字符異步傳輸中,如終端與遠程計算機間的通信,這是一種無須使用任何特殊代碼的錯誤檢測法。雙方進行數據傳輸時,接收方將接收到的數據(可以是一個字符,也可以是一幀)重新發回發送方,由發送方檢查是否與原始數據完全相符。若不相符,則發送方發送一個控制字符(如DEL)通知接收方刪去出錯的數據,並重新發送該數據;若相符,則發送下一個數據。反饋檢測法原理簡單、實現容易,也有較高的可靠性,但是,每個數據均被傳輸兩次,信道利用率很低。一般,在面向字符的異步傳輸中,信道效率並不是主要的,所以這種差錯控制方法仍被廣泛使用。

鏈路層自動重發請求法

ARQ法):實用的差錯控制方法,應該既要傳輸可靠性高,又要信道利用率高。為此讓發送方將要發送的數據幀附加一定的冗餘檢錯碼一併發送,接收方則根據檢錯碼對數據幀進行錯誤檢測,若發現錯誤,就返回請求重發的答,發送方收到請求重發的應答後,便重新傳送該數據幀。這種差錯控制方法就稱為自動請求法(Automatic Repeat reQuest),簡稱ARQ法。ARQ法僅返回很少的控制信息,便可有效地確認所發數據幀是否被正確接收。ARQ法有若干種實現方案,如空閒重發請求(Idle RQ)和連續重請求(Continuous RQ)是其中最基本的兩種方案。

鏈路層空閒重發請求

(Idle RQ):空閒重發請求方案也稱停等(stop-and -wait)法,該方案規定發送方每發送一幀後就要停下等待接收方的確認返回,僅當接收方確認正確接收後再繼續發送下一幀。空閒重發請求方案的實現過程如下: 發送方每次僅將當前信息幀作為待確認幀保留在緩衝存儲器中。當發送方開始發送信息幀時,隨即啓動計時器。 當接收方檢測到一個含有差錯的信息幀時,便捨棄該幀。當接收方收到無差錯的信息幀後,即向發送方返回一個確認幀。 若發送方在規定時間內未能收到確認幀(即計時器超時),則應重發存於緩衝器中待確認信息幀。若發送方在規定時間內收到確認幀,即將計時器清零,繼而開始下一幀的發送。從以上過程可以看出,空閒RQ方案的收、發雙方僅須設置一個幀的緩衝存儲空間,便可有效地實現數據重發並保證收接收方接收數據不會重份。空閒RQ方案最主要的優點就是所需的緩衝存儲空間最小,因此在鏈路端使用簡單終端的環境中被廣泛採用。

鏈路層連續重發請求

(Continuous RQ):連續重發請求方案是指發送方可以連續發送一系列信息幀,即不用等前一幀被確認便可發送下一幀。這就需要一個較大的緩衝存儲空間(稱作重發表),用以存放 若干待確認的信息幀。每當發送站收到對某信息幀的確認幀後,便從重發表中將該信息幀刪除。所以,連續RQ方案的鏈路傳輸效率大大提高,但相應地需要更大的緩衝存儲空間。連續RQ方案的實現過程如下:發送方連續發送信息幀而不必等待確認幀的返回。發送方在重發表中保存所發送的每個幀的拷貝。重發表按先進先出(FIFO)隊列規則操作。接收方對每一個正確收到的信息幀返回一個確認幀。每一個確認幀包含一個唯一的序號,隨相應的確認幀返回。接收方保存一個接收次序表,它包含最後正確收到的信息幀序號。當發送方收到相應信息幀的確認幀後,從重發表中刪除該信息幀。當發送方檢測出失序的確認幀(即第n號信息幀和第n+2號信息幀的確認幀已返回,而n+1號的確認幀未返回)後,便重發未被確認的信息幀。實際操作過程中,兩節點間採用雙工方式將確認幀插在雙方的發送信息幀中來傳送的。上面的連續RQ過程是假定在不發生傳輸差錯的情況下描述的。如果差錯出現,如何進一步處理可以有兩種策略,即Go-back-N和選擇重發。 Go-back-N是當接收方檢測出失序的信息幀後,要求發送方重發最後一個正確接收的信息幀之後的所有未被確認的幀,或者當發送方發送了n幀後,若發現該n幀的前一幀在計時器超時後仍未返回其確認信息,則該幀被判定為出錯或丟失。對接收方來説,因為這一幀出錯,就不能以正確的序號向它的高層遞交數據,對其後發送來的n幀也可能都不能接收而丟棄,因此,發送方發現這種情況,就不得不重新發送該出錯幀及其後的n幀,這就是Go-back-N(退回N)法名稱的由來。

鏈路層流量控制

差錯控制數據鏈路層功能中的一個部分,另一個重要部分是流量控制。流量控制涉及鏈路上字符或幀的傳輸速率的控制,以使接收方在接收前有足夠的緩衝存儲空間來接受每一個字符或幀。例如,在面向字符的終端--計算機鏈路中,若遠程計算機為許多台終端服務,它就有可能因不能在高峯時按預定速率傳輸全部字符而暫時過載。同樣,在面向幀的自動重發請求系統中,當待確認幀數量增加時,有可能超出緩衝器存儲容量,也造成過載。

鏈路層方案介紹

增加緩衝存儲空間在某種程度上可以緩解收、發雙方在傳輸速率上的差別,但這是一種被動的和消極的方法,實現起來有諸多的不便和限制。因為一方面系統不允許開設過大的緩衝空間,另一方面對於速率顯著失配並且又傳送大型文件的場合,仍會出現緩衝存儲空間不夠。XON/XOFF方案則是一種相比之下更主動、積極的流量控制方法。XON/XOFF方案中使用一對控制字符來實現流量控制,其中XON採用ASCII字符字集中的控制字符DC1、XOFF採用ASCII字符集中的控制字符DC3。當通信鏈上的接收方發生過過載時便向發送方發送一個XOFF字符後便暫時停止發送數據,等接收方處理完緩衝存儲器中中的數據,過載恢復後,再向發送方發送一個XON字符,以通知發送方恢復數據發送。在一次數據傳輸過程中,XOFF、XON的週期可重複多次,但對用户是透明的。許多異步數據通信軟件包均支持XON/XOFF協議。這種方案也可用於計算機向打印機或其它終端設備發送字符,在這種情況下,打印機或終端設備中的控制部件用以控制字符流量。

鏈路層窗口機制

為了提高信道的有效利用率。如前節所述採用了發送方不等待確認幀返回就連續 發送若干幀的方案,這樣的發送過程就象一條連續的流水線,故又稱為管道(pipelining)技術。由於允許連續發送多個未被確認折幀,幀號就採用多位二進制數才能加以區分。因為凡被髮送出去但沿尚未被確認的幀都可能出錯或丟失而要求重發,因而這些幀都要保留下來。這就要求發送方有較大的發送緩衝區保留可能要求重發的未被確認的幀。但是緩衝區容量總是有限的,如果接收方不能以發送方的發送速率處理收到的幀,則還是可能用完緩衝容量而暫時過載。為此,可引入類似於空閒RQ方案的調整措施,其本質是在收到一確定幀之前,對發送方可發送的幀的數目加以限制,這是由發送方調整保留在重發表中的待確認幀的數目來實現的。如果接收方來不及對收到的幀進行處理,則接收方停發確認信息,此時送方的重發表增長,當達到重發表限度時,就不再發送新幀,直至再次收到確認信息為止。 為了實現此方案,存放未確認幀的重發表中應設置未確認幀數目的最大限度,這一限度被稱為鏈路的發送窗口。顯然,如果窗口設置為1,即發送方緩衝能力公為一個幀,則傳輸控制方案就回到了空閒RQ方案,此時傳輸效率很低,故窗口限度應選為使接收方儘量能處理或接受收到的所有幀。當然選擇時還必須考慮諸如幀的最大長度、可使用的緩衝存容量以及傳輸的比特速率等因素。重發表是一個連續序號的列表,對應發送方已發送但尚未確認的那些幀。這些幀的序號有一個最大值即發送窗口的限度。所謂發送窗口就是指示發送方已發送但尚未確認的幀序號隊列的界,其上、下界分別稱為發送窗口的上、下沿,上、下沿的間距稱為窗口尺寸。接收方類似地有接收窗口,它指示允許接收的幀的序號。接收窗口的上、下界也是隨時間滑動的。
發送方每次發送一幀後,待確認幀的數目便增1;同樣,發送方每收到一個確認信息後,待確認幀的數目便減1。當重發計數值,即待確認幀的數目等於發送窗口時,便停止發送新的幀。一般幀號只取有限位二進制數,到一定時間後就又反覆循環,若幀號配3位二進制,則幀號在0~7間循環。當傳送過程進行時,窗口位置一直在滑動,所以也稱為滑動窗口(Slidding Window),或簡稱為滑窗。
滑動窗口的狀態變化過程可敍述如下(假設發送窗口為2,接收窗口為1)。
初始態,發送方沒有幀發出,發送窗口前後沿相等。接收窗口限度為1,它允許接收0號幀。
發送方已發送0號幀,此時發作口打開(即前沿加1),窗口對準0號,表示已發出但尚未收到確認返回信息。接收窗口狀態同前,指示允許接收0幀。
發送方在未收到0幀的確認返回信息前,繼續發送1號幀。發送窗口狀態不變。
發送方已收到0幀,窗口滑動一格,表示準備接收1號幀。發送窗口狀態不變。
發送方已收到0號幀的確認返回信息,發送窗口後沿加1,表示從重發表中刪除0號幀,接收窗口狀態不變。
發送方繼續發送2幀,發送窗口前沿加1,表示2號幀也納入待確認之列。接收
窗口狀態仍不變。
接收方已收到1號幀,接收窗口滑動一格,表示準備接收2號幀。發送窗口狀態不變。
發送方收到接收方發來的1號幀收畢的確認信息,發送窗口後沿加1,表示從重發表中刪除最早進入的1號幀。接收窗口狀態不變。 一般説來,凡是在一定範圍內到達的幀,那怕不按順序,接收方也要接收下來。若把這個範圍看成是接收窗口的話,則接收窗口的大小應該是大於1的,而Go-back-N正是接收窗口等於1的一個特例。選擇重發也可以看作是一種滑動窗口協議,只不過其發送窗口和接收窗口都大於1。若從滑動窗口的觀點來統一看待空閒RQ、Go-back-N及選擇重發三種協議,它們的差別公在於各自窗口的大小不同而已:
空閒RQ:發送窗口=1,接收窗口=1
Go-back-N:發送窗口>1,接收窗口=1
選擇重發:發送窗口>1,接收窗口>1
若幀序號採用3位二進制編碼,則最大序號為SMAX=2^3-1=7。對於有序接收方式,發送窗口最大尺寸選為SMAX;對於無笆接收方式,發送窗口最大尺寸至多是序號範圍的一半。管理超時控制的計時器應等於發送緩衝器數,而不是序號空間的大小。實際上,每一個緩衝器應對應一個計時器,當計時器超時時,該對應緩衝器的內容重發。按收方必須設置的緩衝器數應該等於接收窗口尺寸,而不是序號空間的大小。

鏈路層協議舉例

數據鏈路控制協議也稱鏈路通信規程,也就是OSI參考模型中的數據鏈路層協議。鏈路控制協議可分為異步協議同步協議兩大類。

鏈路層異步協議

字符為獨立的傳輸信息單位,在每個字符的起始處開始對字符內的比特實現同步,但字符與字符之間的間隔時間是不固定的(即字符之間是異步的)。由於發送器和接收器中近似於同 一頻率的兩個約定時鐘,能夠在一段較短的時間內保持同步,所以可以用字符起始處同步的時鐘來採樣該字符中的各比特,而不需要每個比特同步。異步協議中因為每個傳輸字符都要添加諸如起始位校驗位及停止位等冗餘位,故信道利用率很低,一般用於數據速率較低的場合。同步協議是以許多字符或許多比特組織成的數據塊--幀為傳輸單位,在幀的起始處同步,使幀內維持固定的時鐘。實際上該固定時鐘是發送端通過某種技術將其混合在數據中一併發送出去的,供接收端從輸入數據中分離出時鐘來,實現起來比較複雜,這個功能通常是由調解器來完成。由於採用幀為傳輸單位,所以同步協議能更有效地利用信道,也便於實現差錯控制流量控制等功能。同步協議又可分為面向字符的同步協議、面向比特的同步協議及面向字節計數的同步協議三種類型

鏈路層同步控制協議

面向字符的同步協議是最早提出的同步協議,其典型代表是IBM公司的二進制同步通信(Binary Synchronous Communication、BISYNC或BSC)協議,通常,也稱該協議為基本型協議。隨後,ANSI和ISO都提出類似的相應標準。ISO的標準稱為數據通信系統的基本型控制過程(Basic mode control procedures for data communication Systems),即ISO 1745標準。任何鏈路層協議均可由鏈路建立、數據傳輸和鏈路拆除三部分組成。為實現建鏈、拆鏈等鏈路管理以及同步等各種功能,除了正常傳輸的數據塊和報文外,還需要一些控制字符BSC協議用ASC2或EBCDIC字符集定義的傳輸控制(TC)字符來實現相應功能。這些傳輸控制字符的標記、名稱及ASC2碼值和EBCDIC碼值見表3.1。 各傳輸控制字符的功能如下:
SOH(Start of Head): 序始或標題開始,用於表示報文(塊)的標題信息或報頭的開始。
STX(Start of TEXT):文始,標誌標題信息的結束和報文(塊)文本的開始。
ETX(End of Text): 文終,標誌報文(塊)文本的結束。
EOT(End of Transmission): 送畢,用以表示一個或多個文本塊的結束,並拆除鏈路。
ENQ(Enquire):詢問,用以請求遠程站給出響應,響應可能包括站的身份或狀態。
ACK(Acknowledge): 確認,由接收方發出一肯定確認,作為對正確接收來自發送方的報文(塊)的響應。
DLE(Data Link Escape): 轉義,用以修改緊跟其後的有限個字符的意義。用於在BSC中實現透明方式的數據傳輸,或者當10個傳輸控制字符不夠用時提供新的轉義傳輸控制字符。
NAK(Negative Acknowledge): 否認,由接收方發出的否定確認,作為對未正確接收來自發送方的響應。
SYN(Synchronous): 同字符,在同步協議中,用以實現節點之間的字符同步,或用於在列數據傳輸時保持該同步。 ETB(End of Transmission Block): 塊終或組終,用以表示當報文分成多個數據塊時, 一個數據塊的結束。BSC 協議將在鏈路上傳輸的信息分為數據報文和監控報文又分為正向監控和反向監控兩種。每一種報文中至少包含一個傳輸控制字符,用以確定報文中信息的性質或實現某種控制作用。
數據報文和文本組成。文本是要傳送的有用數據信息,而報文是與文本傳送及處
理有關的輔助信息,報頭有時也右不用,對於不超過長度限制的報文可只用一個數據塊作為一個傳輸單位。接收方對於每一個收到的數據塊都要給予確認,發送方收到返回的確認後,才能發送下一個數據塊。BSC協議為數據塊格式可以有5種。BSC協議中所有發送的數據均跟在至少兩個SYT字符之後,以使接收方能實現字符同步。報頭字段用以説明數據文字段的包識別符(序號)及地址。所有數據塊在塊終限定符(ETX或ETB)之後不有塊驗字符BCC(Block Check Charracter),BCC可以是垂直奇偶校驗或16位CRC,校驗範圍自STX始,至ETX或ETB止。當發送的報文是二進制數據而不是字符串時,二進制數據中形同傳輸控制字符比特串將會引傳輸混亂。為使二進制數據中允許與傳輸控制字符相同的數據(即數據的透明性),可在各幀中真正的傳輸控制字符(SYN除外)前加上DLE轉義字符,在發送時,若文本中也出現與DLE字符相同的二進制比特串,則可插入一個外加的DLE字符加以標記。 在接收端則進行同樣的檢測,若發現單個的DLE字符,則知其後的DLE為數據,在進一步處理前將其中一個刪去。正、反向監控報文有四種格式。監控報文一般由單個傳輸控制字符或由若干個其它字符引導的單個傳輸控制字符組成。引導字符統稱為前綴,它包含識別符(序號)、地址信息、狀態信息以及其它所需的信息。ACKNAK監控報文的作用,首先作為對先前所發數據塊是否正確接收的響應,因而包含識符(序號);其次,用作對選擇監控信息的響應,以ACK表示所選站能接收數據塊,而NAK表示不能接收。ENQ用作輪詢和選擇監控報文,在多結構中,輪詢或選擇的站地址在ENQ字符前。EOT監控報文有用以標誌報文的結束,並在兩站點間除邏輯鏈路。面向字符的同步協議的最大缺點,是它和特定的字符編碼集關係過於密切,不利於兼容性。為了實現數據的透明性而採用的字符填充法,實現起來比較麻煩,且也依賴於採用的字符編碼集。另外,由於BSC是一個半雙工協議,它的鏈路傳輸效率很低,即使物理連路支持全雙工傳輸,BSC也不能加以運用。不過,由於BSC協議需要的緩衝存儲容量最小,因而在面向終端的網絡系統中仍然廣泛使用。

鏈路層控制協議

七十年代初,IBM公司率先提出了面向比特的同步數據鏈路控制規程SDLC。隨後,ANSI和ISO均採納並發展了SDLC,並分別提出了自己的標準:ANSI的高級通信控制過程ADCCP(Advanced Data Control Procedure),ISO的高級數據鏈路控制規程HDLC鏈路控制協議着重於對分段成物理塊或包的數據的邏輯傳輸,塊或包由起始標誌引導並由終止標誌結束,也稱為幀。幀是每個控制、每個響應以及用協議傳輸的所有信息的媒體的工具。所有面向比特的數據鏈路控制協議均採用統一的幀格式,不論是數據還是單獨的控制信息均以幀為單位傳送。
每個幀前、後均有一標誌碼01111110、用作幀的起始、終止指示及幀的同步。標誌碼不允許在幀的內部出現,以免引起畸意。為保證標誌碼的唯一性但又兼顧幀內數據的透明性,可以採用“0比特插入法”來解決。該法在發送端監視除標誌碼以外的所有字段,當發現有連續5個“1”出現時,便在其後添插一個“0”,然後繼續發後繼的比特流。在接收端,同樣監除起始標誌碼以外的所有字段。當連續發現5個“1”出現後,若其後一個比特“0”則自動刪除它,以恢復原來的比特流;若發現連續6個“1”,則可能是插入的“0”發生差錯變成的“1”,也可能是收到了幀的終止標誌碼。後兩種情況,可以進一步通過幀中的幀檢驗序列來加以區分。“0比特插入法”原理簡單,很適合於硬件實現。 在面向比特的協議的幀格式中,有一個8比特的控制字段,可以用它以編碼方式定義豐富的控制命令和應答,相當於起到了BSC協議中眾多傳輸控制字符和轉義序列的功能。作為面向比特的數據鏈路控制協議的典型,HDLC具有如下特點:協議不依賴於任何一種字符編碼集;數據報文可透明傳輸,用於實現透明傳輸的“0比特插入法”易於硬件實現;全雙工通信,不必等待確認便可連續發送數據,有較高的數據鏈路傳輸效率;所有幀均採用CRC校驗,對信息幀進行編號,可紡止漏收或重份,傳輸可靠性高;傳輸控制功能與處理功能分離,具有較大靈活性和較完善的控制功能。由於以上特點,網絡設計普遍使用HDLC作為數據鏈路管制協議。

鏈路層操作方式

HDLC是通用的數據鏈路控制協議,當開始建立數據鏈路時,允許選用特定的操作方式。所謂鏈路操作方式,通俗地講就是某站點以主站方式操作,還是以從站方式操作,或者是二者兼備。在鏈路上用於控制目的站稱為主站,其它的受主站控制的站稱為從站。主站負責對數據流進行組織,半且對鏈路上的差錯實施恢復。由主站發往從站的幀稱為命令幀,而由由站返回主站的幀稱響應幀。連有多個站點的鏈路通常使用輪詢技術,輪詢其它站的站稱為主站,而在點到點燃鏈路中每個站均可為主站。主站需要比從站有更多的邏輯功能,所以當終端與主機相連時,主機一般總是主站。在一個站連接多條鏈中的情況下,該站對於一些鏈路而言可能是主站,而對另外一些鏈路而言又可能是從站。有些可兼備主站和從站的功能,這站稱為組合站,用於組合站之間信息傳輸的協議是對稱的,即在鏈路上主、從站具有同樣的傳輸控制功能,這又稱作平衡操作,在計算機網絡中這是一個非常重要的概念。相對的,那種操作時有主站、從站之分的,且各自功能不同的操作,稱非平衡操作。
HDLC中常用的操作方式有以下三種:(1)正常響應方式NRM是一種非平衡數據鏈路操作方式,有時也稱非平衡正常響應方式。該操作方式適用於面向終端的點到點或一點與多點的鏈路。在這種操作方式,傳輸過程由主站啓動,從站只有收到主站某個命令幀後,才能作為響應向主站傳輸信息。響應信息可以由一個或多個幀組成,若信息 由多個幀組成,則應指出哪一個是最後一幀。主站負責管理整個鏈路,且具有輪詢、選擇從站及向從站發送命令的權利,同時也負責對超時、重發及各類恢復 操作的控制。(2)異步響應方式ARM,異步響應方式ARM也是一種非平衡數據鏈路操作方式,與NRM不同的是,ARM的傳輸過程由從站啓動。從站主動發送給主站的一個或一組幀中可包含有信息,也可以是僅以控制為目的而發的幀。在這種操作方式下,由從站來控制超時和重發。該方式對採用輪詢方式的多站蓮路來説是必不可少的。(3)異步平衡方式ABM,異步平衡方式ABM是一種允許任何節點來啓動傳輸的操作方式。為了提高鏈路傳輸效率,節點之間在兩個方向上都需要的較高的信息傳輸量。在這種操作方式下任何時候任何站都能啓動傳輸操作,每個站既可作為主站又可作為從站,每個站都是組合站。各站都有相同的一組協議,任何站都可以發送或接收命令,也可以給出應答,並且各站對差錯恢復過程都負有相同的責任。

鏈路層幀格式

HDLC中,數據和控制報文均以幀的標準格式傳送。HDLC中的幀類似於BSC的字符塊,但BSC協議中的數據報文和控制報文是獨立傳輸的,而HDLC中的命令應以統一的格式按幀傳輸。HDLC的完整的幀由標誌字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、幀校驗序列字段(FCS)等組成。
(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,對兩個標誌字段之間的整個幀的內容進行校驗。FCS的生成多項式CCITT V4.1建議規定的X16+X12+X5+1。

鏈路層幀類型

HDLC有信息幀(I幀)、監控幀(S幀)和無編號幀(U幀)三種不同類型的幀。
(1)信息幀(I幀):信息幀用於傳送有效信息或數據,通常簡稱I幀。I幀以控制字第一位為“0”來標誌。信息幀的控制字段中的N(S)用於存放發送幀序號,以使發送方不必等待確認而連續發送多幀。N(R)用於存放接收方下一個預期要接收的幀的序號,N(R)=5,即表示接收方下一幀要接收5號幀,換言之,5號幀前的各幀接收到。N(S)和N(R)均為3位二進制編碼,可取值0~7。
(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幀已全部確認。
可以看出,接收就緒RR型S幀和接收未就緒RNR型S幀有兩個主要功能:首先,這兩種類型的S幀用來表示從站已準備好或未準備好接收信息;其次,確認編號小於N(R)的所有接收到的I幀。拒絕REJ和選擇拒絕SREJ型S幀,用於向對方站指出發生了差錯。REJ幀用於GO-back-N策略,用以請求重發N(R)以前的幀已被確認,當收到一個N(S)等於REJ型S幀的N(R)的I幀後,REJ狀態即可清除。SREJ幀用於選擇重發策略,當收到一個N(S)等SREJ幀的N(R)的I幀時,SREJ狀態即應消除。
(3)無編號幀(U幀):無編號幀因其控制字段中不包含編號N(S)和N(R)而得名,簡稱U幀。U幀用於提供對鏈路的建立、拆除以及多種控制功能,這些控制功能5個M位(M1、M2、M3、M4、M5,也稱修正位)來定義。5個M位可以定義32種附加的命令功能或32種應答功能,但許多是空缺的。

鏈路層特點比較

鏈路層適用場合

系統結構而言,HDLC適用於點到點或點到多點式的結構,BSC同樣也能適用於這些結構;就工作方式而方,HDLC適用於半雙工全雙工,而BSC則更適用於半雙工方式(也可擴充為全雙工);就傳輸方式而言,BSC和HDLC兩者都只用於同步傳輸。在傳輸速率方面,BSC和HDLC雖然都沒有限制,但由於它們各自的特點所定,通常BSC用於低、中速傳輸,而HDLC則常用於中、高速傳輸。

鏈路層傳輸效率

HDLC開始發送一幀後,就要連續不斷地發完該幀,而BSC的同一數據塊中的 不同字符之間可能有時間間隔,這些間隔用SYN字符填充。HDLC可以同時確認幾個幀,而BSC則在發完一數據塊後必須要等待確認(即“停一等”方式)。HDLC中的每個幀都含有地址字段A,在多點結構中,每個從站只接收含有本站地址的幀,因此,主站在選中一個從站並與之通信的同時,不用拆鏈,便可選擇其它的站通信,即同時與多個站建立鏈路。而在BSC中,從建鏈開始,兩站之間的鏈路通道就一直保持到傳輸結束為止。由於以上特點,HDLC的傳輸效率高於BSC的傳輸效率。

鏈路層傳輸可靠性

HDLC中所有的幀(包括響應幀)都有FCS,在BSC的監控報文中只有字符校驗能力而無塊校驗能力。HDLC中的I幀按窗口序號順序編號,BSC的數據塊不編號。由於以上特點,HDLD的傳輸可靠性比BSC高。

鏈路層數據透明性

HDLC採用“0比特插入法”對數據實現透明傳輸,傳輸信息的比特組合模式無任何限制。BSC用DLE字符填充法來實現透明傳輸,依賴於採用的字符編碼集,且處理複雜。

鏈路層信息傳輸格式

HDLC採用統一的幀格式來實現數據、命令、響應的傳輸,實施起來方便。而BSC的格式不統一,數據傳送、正反向監控各規定了一套格式,給實施帶來了不便

鏈路層鏈路控制

HDLC利用改變一幀中的控制字段的編碼模式來完成各種規定的鏈路操作功能,提供的是面向比特的傳輸功能。BSC則是通過改變控制字符來完成鏈路操作功能,提供的是面向字符的傳輸功能。

鏈路層子層信息

鏈路層數據鏈路層子層

數據鏈路層包含 LLC邏輯鏈路層子層 和MAC介質訪問控制子層 兩個子層

鏈路層邏輯鏈路

數據鏈路層LLC子層用於設備間單個連接的錯誤控制,流量控制
與MAC層不同,LLC物理媒介全無關係。媒介是CSMA/CD802.3還是802.5令牌環都沒關係。它在LAN中是獨立的802.2。在LLC之上的網絡層可以是無連接、響應的無連接或面向連接的不同業務。
LLC用業務接入點SAP訪問上層協議,有了SAP,站點就能在LLC層只用一個接口同時與幾個高層協議玩。一個SAP是簡單的地址或協議ID,內容則為空的LLC幀。LLC協議數據單元(LLCPDU)即LPDU。它包括:DSAP(目的SAP)/SSAP(源SAP);一個定義吞吐量優先級的控制域(Controlfield);和含帶數據的信息域。在接收方,DSAP例如協議ID就是消息要被遞送的,通常DSAP和SSAP是一樣的,因為兩端只有在同種協議間才能通信。例如當SAP為AA,代表SNAP(子層接入協議)。SNAP是個非標準化的,或廠商特定的協議,用於接入協議的業務。例如當SAP為06,則代表IP協議;當SAP為FO,代表NetBIOS(網絡基本輸入/輸出協議)。SAP為FF表示廣播的Global協議。
SNAP機制
規範種DSAP都只有一個字節,那不足夠區分所有協議了。SNAP就來了,而且它支持在LLC幀上傳廠商的協議。這樣傳遞的協議就被放入所謂SNAP幀中了。SNAP”ㄍ酚形遄紙冢前三字節為廠商號,後兩字節指示協議。
以太網有兩種版本:IEEE(802.2、802.3); DIX(Digital、Intel、Xerox)又稱V2以太網。
DIX幀在源地址之後是兩字節的Type,例如IP。
IEEE以太網幀,在源地址後是幀長度指示,在隨後的數據域中才是標準的LPDU封裝,包括DSAP/SSAP/控制域/Data。在這個Data中會有協議ID、以太類型指示,例如以太類型806表示地址解析協議ARP。以太網卡通過跳針或軟件可以設置需要的以太網版本,DIX通常都設的,因為大約90%的網絡都用此版本。請注意網絡所有要通信的站點應設成相同版本。

鏈路層介質訪問控制

訪問控制是 解決當局域網中共用信道的使用產生競爭時,如何分配信道的使用權問題
邏輯鏈路 Logical Links
Logical Links 邏輯鏈路邏輯鏈路是實際電路或邏輯電路上交換通信信息的兩個端系統之間的一種協議驅動通信會話。協議棧定義了兩個系統在某種介質上的通信。在協議棧低層定義可用的多種不同類型的通信協議,如局域網絡(LAN)、城域網(MAN)和象X.25或幀中繼這樣的分組交換網絡。邏輯鏈路在物理鏈路(可以是銅線、光纖或其他介質)上的兩個通信系統之間形成。根據OSI協議模型,這些邏輯鏈路只在物理層以上存在。你可以認為邏輯鏈路是存在於網絡兩個末斷系統間的線路。
面向連接的服務 為了保證可靠的通信,需要建立邏輯線路,但在兩個端系統間要維持會話。
面向需要應答連接的服務 分組傳輸並有返回信號的邏輯線路。這種服務產生更大的開銷,但更加可靠。
無應答不連接服務 無需應答和預先的傳送。在端系統間沒有會話。
OSI協議棧中的數據鏈路層可進一步細分為較低的介質訪問控制(MAC)子層和較高的邏輯鏈路控制(LLC)子層。當它接收到一個分組後,它從MAC子層向上傳送。如果有多個網絡和設備相連,LLC層可能將分組送給另一個網絡。例如,在一個NetWare服務器上,你可能既安裝了以太網絡適配器又安裝了令牌網絡適配器,NetWare自動地在連接到適配器的網絡間橋接,這樣原來在以太網上的分組就可以傳送到令牌網上的目的地了,LLC層就象網絡段間的交換或鏈路中繼,它將以太網的幀重裝成令牌環網的幀。