鏈路層
網路體系結構最低層
數據鏈路層的最基本的功能是向該層用戶提供透明的和可靠的數據傳送基本服務。透明性是指該層上傳輸的數據的內容、格式及編碼沒有限制,也沒有必要解釋信息結構的意義;可靠的 傳輸使用戶免去對丟失信息、干擾信息及順序不正確等的擔心。在物理層中這些情況都可能發生,在數據鏈路層中必須用糾錯碼來檢錯與糾錯。數據鏈路層是對物理層傳輸原始比特流的功能的加強,將物理層提供的可能出錯的物理連接改造成為邏輯上無差錯的數據鏈路,使之對網路層表現為一無差錯的線路。
為了使傳輸中發生差錯后只將有錯的有限數據進行重發,數據鏈路層將比特流組合成以幀為單位傳送。每個幀除了要傳送的數據外,還包括校驗碼,以使接收方能發現傳輸中的差錯。幀的組織結構必須設計成使接收方能夠 明確地從物理層收到的比特流中對其進行識別,也即能從比特流中區分出幀的起始與終止,這就是幀同步要解決的問題。由於網路傳輸中很難保證計時的正確和一致,所以不可採用依靠時間間隔關係來確定一幀的起始與終止的方法。
(1)位元組計數法:這是一種以一個特殊字元表示一幀的起始並以一個專門欄位來標明幀內位元組數的幀同步方法。接收方可以通過對該特殊字元的識別從比特流中區分出幀的起始並從專門欄位中獲知該幀中隨後跟隨的數據位元組數,從而可確定出幀的終止位置。面向位元組計數的同步規程的典型代表是DEC公司的數字數據通信報文協議DDCMP(Digital Data Communications Message Protocol)。DDCMP採用的幀格式如圖3-1。
控制字元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)法名稱的由來。Co-back-N法操作過程如圖3-2所示。圖中假定發送完8號幀后,發現2號幀的確認返回在計時器超時后還未收到,則發送方只能退回從2號幀開始重發。Go-back-N可能將已正確傳送到目的方的幀再傳一遍,這顯然是一種浪費。另一種更好的策略是當接收方發現某幀出錯后,其後繼續送來的正確的幀雖然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在一個緩衝區中,同時要求發送方重新傳送出錯的那一幀,一旦收到重新傳來的幀后,就可與原已存於緩衝區中的其餘幀一併按正確的順序遞交高層。這種方法稱為選擇重發(Selective repeat),其工作過程如圖3-3所示。圖中2號幀的否認返回信息NAK2要求發送方選擇重發2號幀。顯然,選擇重發減少了浪費但要求接收方有足夠大的緩衝區容量。
差錯控制是數據鏈路層功能中的一個部分,另一個重要部分是流量控制。流量控制涉及鏈路上字元或幀的傳輸速率的控制,以使接收方在接收前有足夠的緩衝存儲空間來接受每一個字元或幀。例如,在面向字元的終端--計算機鏈路中,若遠程計算機為許多台終端服務,它就有可能因不能在高峰時按預定速率傳輸全部字元而暫時過載。同樣,在面向幀的自動重發請求系統中,當待確認幀數量增加時,有可能超出緩衝器存儲容量,也造成過載。
增加緩衝存儲空間在某種程度上可以緩解收、發雙方在傳輸速率上的差別,但這是一種被動的和消極的方法,實現起來有諸多的不便和限制。因為一方面系統不允許開設過大的緩衝空間,另一方面對於速率顯著失配並且又傳送大型文件的場合,仍會出現緩衝存儲空間不夠。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間循環。如果發送窗口限度取值為2,則發送過程如圖3-4所示。圖中發送方陰影表示發送窗口,接收方陰影則相應可視作接收窗口。當傳送過程進行時,窗口位置一直在滑動,所以也稱為滑動窗口(Slidding Window),或簡稱為滑窗。
圖3-4中滑動窗口的狀態變化過程可敘述如下(假設發送窗口為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種,如圖3.5所示。BSC協議中所有發送的數據均跟在至少兩個SYT字元之後,以使接收方能實現字元同步。報頭欄位用以說明數據文欄位的包識別符(序號)及地址。所有數據塊在塊終限定符(ETX或ETB)之後不有塊驗字元BCC(Block Check Charracter),BCC可以是垂直奇偶校驗或16位CRC,校驗範圍自STX始,至ETX或ETB止。當發送的報文是二進位數據而不是字元串時,二進位數據中形同傳輸控制字元的比特串將會引傳輸混亂。為使二進位數據中允許與傳輸控制字元相同的數據(即數據的透明性),可在各幀中真正的傳輸控制字元(SYN除外)前加上DLE轉義字元,在發送時,若文本中也出現與DLE字元相同的二進位比特串,則可插入一個外加的DLE字元加以標記。在接收端則進行同樣的檢測,若發現單個的DLE字元,則知其後的DLE為數據,在進一步處理前將其中一個刪去。正、反向監控報文有四種格式,如圖3-6所示。監控報文一般由單個傳輸控制字元或由若干個其它字元引導的單個傳輸控制字元組成。引導字元統稱為前綴,它包含識別符(序號)、地址信息、狀態信息以及其它所需的信息。ACK和NAK監控報文的作用,首先作為對先前所發數據塊是否正確接收的響應,因而包含識符(序號);其次,用作對選擇監控信息的響應,以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是一種非平衡數據鏈路操作方式,有時也稱非平衡正常響應方式。該操作方式適用於面向終端的點到點或一點與多點的鏈路。在這種操作方式,傳輸過程由主站啟動,從站只有收到主站某個命令幀后,才能作為響應向主站傳輸信息。響應信息可以由一個或多個幀組成,若信息 由多個幀組成,則應指出哪一個是最後一幀。主站負責管理整個鏈路,且具有輪詢、選擇從站及向從站發送命令的權利,同時也負責對超時、重發及各類恢復 操作的控制。NRM操作方式見圖3.7(a)。(2)非同步響應方式ARM,非同步響應方式ARM也是一種非平衡數據鏈路操作方式,與NRM不同的是,ARM的傳輸過程由從站啟動。從站主動發送給主站的一個或一組幀中可包含有信息,也可以是僅以控制為目的而發的幀。在這種操作方式下,由從站來控制超時和重發。該方式對採用輪詢方式的多站蓮路來說是必不可少的。ARM操作方式見圖3.7(b)。(3)非同步平衡方式ABM,非同步平衡方式ABM是一種允許任何節點來啟動傳輸的操作方式。為了提高鏈路傳輸效率,節點之間在兩個方向上都需要的較高的信息傳輸量。在這種操作方式下任何時候任何站都能啟動傳輸操作,每個站既可作為主站又可作為從站,每個站都是組合站。各站都有相同的一組協議,任何站都可以發送或接收命令,也可以給出應答,並且各站對差錯恢復過程都負有相同的責任。ABM操作方式見圖3.7(c). 數據鏈路層
在HDLC中,數據和控制報文均以幀的標準格式傳送。HDLC中的幀類似於BSC的字元塊,但BSC協議中的數據報文和控制報文是獨立傳輸的,而HDLC中的命令應以統一的格式按幀傳輸。HDLC的完整的幀由標誌欄位(F)、地址欄位(A)、控制欄位(C)、信息欄位(I)、幀校驗序列欄位(FCS)等組成,其格式見圖3.8。
(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。
數據鏈路層圖3.9
HDLC有信息幀(I幀)、監控幀(S幀)和無編號幀(U幀)三種不同類型的幀。每一種幀中的控制欄位的格式及比特定義見圖3.9。
(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/CD的802.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層就象網路段間的交換或鏈路中繼,它將乙太網的幀重裝成令牌環網的幀。