- 數據鏈路層是osi參考模型中的第二層,介乎於物理層和網絡層之間。數據鏈路層在物理層提供的服務的基礎上向網絡層提供服務,其最基本的服務是將源機網絡層來的數據可靠地傳輸到相鄰節點的目標機網絡層。為達到這一目的,數據鏈路必須具備一係列相應的功能,主要有:如何將數據組合成數據塊,在數據鏈路層中稱這種數據塊為幀(frame),幀是數據鏈路層的傳送單位;如何控製幀在物理通道上的傳輸,包括如何處理傳輸差錯,如何調節發送速率以使與接收方相匹配;以及在兩個網絡實體之間提供數據鏈路通路的建立、維持和釋放的管理。
數據鏈路層的最基本的功能是向該層用戶提供透明的和可靠的數據傳送基本服務。透明性是指該層上傳輸的
數據鏈路層
數據的內容、格式及編碼冇有限製,也冇有必要解釋資訊結構的意義;可靠的
數據鏈路層傳輸使用戶免去對丟失資訊、乾擾
資訊及順序不正確等的擔心。在物理層中這些情況都可能發生,在數據鏈路層中必須用糾錯碼來檢錯與糾錯。數據鏈路層是對物理層傳輸原始位元流的功能的加強,將物理層提供的可能出錯的物理連接改造成為邏輯上無差錯的數據鏈路,使之對網絡層表現為一無差錯的線路。
幀同步功能
為了使傳輸中發生差錯後隻將有錯的有限數據進行重發,數據鏈路層將位元流組合成以幀為單位傳送。每個幀除了要傳送的數據外,還包括校驗碼,以使接收方能發現傳輸中的差錯。幀的組織結構必須設計成使接收方能夠明確地從物理層收到的位元流中對其進行識彆,也即能從位元流中區分出幀的起始與終止,這就是幀同步要解決的問題。由於網絡傳輸中很難保證計時的正確和一致,所以不可采用依靠時間間隔關係來確定一幀的起始與終止的方法。
(1)字節計數法:這是一種以一個特殊字元表示一幀的起始並以一個專門欄位來標明幀內字節數的幀同步方法。接收方可以通過對該特殊字元的識彆從位元流中區分出幀的起始並從專門欄位中獲知該幀中隨後跟隨的數據字節數,從而可確定出幀的終止位置。麵向字節計數的同步規程的典型代表是dec公司的數字數據通訊報文協議ddcmp(digitaldatamunicationsmessageprotocol)。ddcmp采用的幀格式如圖3-1。
控製字元soh標誌數據幀的起始。實際傳輸中,soh前還要以兩個或更多個同步字元來確定一幀的起始,有時也允許本幀的頭緊接著上幀的尾,此時兩幀間就不必再加同步字元。count欄位共有14位,用以指示幀中數據段中數據的字節數,14位二進製數的最大值為2-1=16383,所以數據最大長度為8x16383=131064。ddcmp協議就是靠這個字節計數來確定幀的終止位置的。ddcmp幀格式中的ack、seg、addr及flag中的第2位,crc1、crc2分彆對標題部分和數據部分進行雙重校驗,強調標題部分單獨校驗的原因是,一旦標題部分中的conut欄位出錯,即失卻了幀邊界劃分的依據,將造成災難性的後果。由於采用字元計數方法來確定幀的終止邊界不會引起數據及其它資訊的混淆,因而不必采用任何措施便可實現數據的透明性(即任何數據均可不受限製地傳輸)。
(2)使用字元填充的首尾定界符法:該法用一些特定的字元來定界一幀的起始與終止,為了不使數據資訊位中出現的與特定字元相同的字元被誤判為幀的首尾定界符,可以在這種數據字元前填充一個轉義控製字元(dle)以示區彆,從而達到數據的透明性。但這種方法使用起來比較麻煩,而且所用的特定字元過份依賴於所采用的字元編碼集,相容性比較差。
數據鏈路層
數據鏈路層(3)使用位元填充的首尾標誌法:該法以一組特定的位元模式(如
01111110)來標誌一幀的起始與終止。本章稍後要詳細介紹的hdlc規程即采用該法。為了不使資訊位中出現的與特定位元模式相似的位元串被誤判為幀的首尾標誌,可以采用位元填充的方法。比如,采用特定模式01111110,則對資訊位中的任何連續出現的五個“1”,發送方自動在其後插入一個“0”,而接收則做該過程的逆操作,即每接收到連續五個“1”,則自動刪去其後所跟的“0”,以此恢複原始資訊,實現數據傳輸的透明性。位元填充很容易由硬體來實現,效能優於字元填充方法。
(4)違法編碼法:該法在物理層采用特定的位元編碼方法時采用。例如,一種被稱作曼徹斯特編碼的方法,是將數據位元“1”編碼成“高-低”電平對,而將數據位元“0”編碼成“低-高”電平對。而“高-高”電平對和“低-低”電平對在數據位元中是違法的。可以借用這些違法編碼序列來定界幀的起始與終止。局域網ieee802標準中就采用了這種方法。違法編碼法不需要任何填充技術,便能實現數據的透明性,但它隻適用於采用冗餘編碼的特殊編碼環境。由於字節計數法中count欄位的脆弱性以及字元填充法實現上的複雜性和不相容性,目前較普遍使用的幀同步法是位元填充和違法編碼法。
差錯控製功能
一個實用的通訊係統必須具備發現(即檢測)這種差錯的能力,並采取某種措施糾正之,使差錯被控製在所能允許的儘可能小的範圍內,這就是差錯控製過程,也是數據鏈路層的主要功能之一。對差錯編碼(如奇偶校驗碼,檢查和或crc)的檢查,可以判定一幀在傳輸過程中是否發生了錯誤。一旦發現錯誤,一般可以采用反饋重
數據鏈路層圖3.1
發的方法來糾正。這就要求接收方收完一幀後,向發送方
數據鏈路層圖3.1反饋一個接收是否
正確的資訊,使發送方所在此作出是不需要重新發送的決定,也即發送方僅當收到接收方已正確接收的反饋信號後才能認為該幀已經正確發送完畢,否則需重直至正確為止。物理通道的突發噪聲可能完全“淹冇”一幀,即使得整個數據幀或反饋資訊幀丟失,這將導致發送方永遠收不到接收方發來的反饋資訊,從而使傳輸過程停滯.為了避免出現這種情況,通常引入計時器(timer)來限定接收方發回反饋資訊的時間間隔,當發送方發送一幀的同時也啟動計時器,若在限定時間間隔內未能收到接收方的反饋資訊,即計時器超時(tineout),則可認為傳的幀已出錯或丟失,繼而要重新發送。由於同一幀數據可能被重複發送多次,就可能引起接收方多次收到同一幀並將其遞交給網絡層的危險。為了防止發生這種危險,可以采用對發送的幀編號的方法,即賦予每幀一個序號,從而使接收方能從該序號來區分是新發送來的幀還是已經接收但又重新發送來的幀,以此來確定要不要將接收到的幀遞交給網絡層。數據鏈路層通過使用計數器和序號來保證每幀最終都被正確地遞交給目標網絡層一次。
流量控製功能
流量控製並不是數據鏈路層所特有的功能,許多高層協議中也提供流時控功能,隻不過流量控製的對象不同而已。比如,對於數據鏈路層來說,控製的是相鄰兩節點之間數據鏈路上的流量,而對於運輸層來說,控製的則是從源到最終目的之間端的流量。由於收發雙方各自使用的設備工作速率和緩衝存儲的空間的差異,可能出現發送方發送能力大於接收方接收能力的現象,如若此時不對發送方的發送速率(也即鏈路上的資訊流量)作適當的限製,前麵來不及接收的幀將被後麵不斷髮送來的幀“淹冇”,從而造成幀的丟失而出錯。由此可見,流量控製實際上是對發送方數據流量的控製,使其發送率不致超過接收方所能承受的能力。這個過程需要通過某種反饋機製使發送方知道接收方是否能跟上發送方,也即需要有一些規則使得發送方知道在什麼情況下可以接著發送下一幀,而在什麼情況下必須暫停發送,以等待收到某種反饋資訊後繼續發送。
鏈路管理功能
數據鏈路層
鏈路管理功能主要用於麵向連接的服務。當鏈路兩端的節點要進行通訊前,必須首
數據鏈路層先確認對方已處於就緒狀
態,並交換一些必要的資訊以對幀序號初始化,然後才能建立連接,在傳輸過程中則要能維持該連接。如果出現差錯,需要重新初始化,重新自動建立連接。傳輸完畢後則要釋放連接。數據連路層連接的建立維持和釋放就稱作鏈路管理。在多個站點共享同一物理通道的情況下(例如在lan中)如何在要求通訊的站點間分配和管理通道也屬於數據鏈路層管理的範疇。
差錯控製
用以使發送方確定接收方是否正確收到了由它發送的數據資訊的方法稱為反饋差錯控製。通常采用反饋檢測和自動重發請求(arq)兩種基本方法實現。
反饋檢測法
反饋檢測法也稱回送校驗或“回聲”法,主要用於麵向字元的異步傳輸中,如終端與遠程計算機間的通訊,這是一種無須使用任何特殊代碼的錯誤檢測法。雙方進行數據傳輸時,接收方將接收到的數據(可以是一個字元,也可以是一幀)重新發回發送方,由發送方檢查是否與原始數據完全相符。若不相符,則發送方發送一個控製字元(如del)通知接收方刪去出錯的數據,並重新發送該數據;若相符,則發送下一個數據。反饋檢測法原理簡單、實現容易,也有較高的可靠性,但是,每個數據均被傳輸兩次,通道利用率很低。一般,在麵向字元的異步傳輸中,通道效率並不是主要的,所以這種差錯控製方法仍被廣泛使用。
自動重發請求法
(arq法):實用的差錯控製方法,應該既要傳輸可靠性高,又要通道利用率高。為此讓發送方將要發送的數據幀附加一定的冗餘檢錯碼一併發送,接收方則根據檢錯碼對數據幀進行錯誤檢測,若發現錯誤,就返回請求重發的答,發送方收到請求重發的應答後,便重新傳送該數據幀。這種差錯控製方法就稱為自動請求法(automaticrepeatrequest),簡稱arq法。arq法僅返回很少的控製資訊,便可有效地確認所發數據幀是否被正確接收。arq法有若乾種實現方案,如空閒重發請求(idlerq)和連續重請求(continuousrq)是其中最基本的兩種方案。
空閒重發請求
(idlerq):空閒重發請求方案也稱停等(stop-and-wait)法,該方案規定發送方每發送一幀後就要停下等待接收方的確認返回,僅當接收方確認正確接收後再繼續發送下一幀。空閒重發請求方案的實現過程如下:發送方每次僅將當前資訊幀作為待確認幀保留在緩衝存儲器中。當發送方開始發送資訊幀時,隨即啟動計時器。當接收方檢測到一個含有差錯的資訊幀時,便捨棄該幀。當接收方收到無差錯的資訊幀後,即向發送方返回一個確認幀。若發送方在規定時間內未能收到確認幀(即計時器超時),則應重發存於緩衝器中待確認資訊幀。若發送方在規定時間內收到確認幀,即將計時器清零,繼而開始下一幀的發送。從以上過程可以看出,空閒rq方案的收、發雙方僅須設置一個幀的緩衝存儲空間,便可有效地實現數據重發並保證收接收方接收數據不會重份。空閒rq方案最主要的優點就是所需的緩衝存儲空間最小,因此在鏈路端使用簡單終端的環境中被廣泛采用。
連續重發請求
(continuousrq):連續重發請求方案是指發送方可以連續發送一係列資訊幀,即不用等前一幀被確認便可
數據鏈路層圖3-2
發送下一幀。這就需要一個較大的緩衝存儲空間(稱作重發表),用以存放
數據鏈路層圖3-2
若乾待確認的資訊幀。每當發送站收到對某資訊幀的確認幀後,便從重發表中將該資訊幀刪除。所以,連續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可能將已正確傳送到目的方的幀再傳一遍,這顯然是一種浪費。另一種更好的策略是當接收方發現某幀出錯後,其後繼續送來的正確的幀雖然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在一個緩衝區中,同時要求發送方重新傳送出錯的那一幀,一旦收到重新傳來的幀後,就可與原已存於緩衝區中的其餘幀一併按正確的順序遞交高層。這種方法稱為選擇重發(selectiverepeat),其工作過程如圖3-3所示。圖中2號幀的否認返回資訊nak2要求發送方選擇重發2號幀。顯然,選擇重發減少了浪費但要求接收方有足夠大的緩衝區容量。
流量控製
差錯控製是數據鏈路層功能中的一個部分,另一個重要部分是流量控製。流量控製涉及鏈路上字元或幀的傳輸速率的控製,以使接收方在接收前有足夠的緩衝存儲空間來接受每一個字元或幀。例如,在麵向字元的終端--計算機鏈路中,若遠程計算機為許多台終端服務,它就有可能因不能在高峰時按預定速率傳輸全部字元而暫時過載。同樣,在麵向幀的自動重發請求係統中,當待確認幀數量增加時,有可能超出緩衝器存儲容量,也造成過載。
xonxoff方案
增加緩衝存儲空間在某種程度上可以緩解收、發雙方在傳輸速率上的差彆,但這是一種被動的和消極的方法,實現起來有諸多的不便和限製。因為一方麵係統不允許開設過大的緩衝空間,另一方麵對於速率顯著失配並且又傳送大型檔案的場合,仍會出現緩衝存儲空間不夠。xonxoff方案則是一種相比之下更主動、積極的流量控製方法。xonxoff方案中使用一對控製字元來實現流量控製,其中xon采用ascii字元字集中的控製字元dc1、xoff采用ascii字元集中的控製字元dc3。當通訊鏈上的接收方發生過過載時便向發送方發送一個xoff字元後便暫時停止發送數據,等接收方處理完緩衝存儲器中中的數據,過載恢複後,再向發送方發送一個xon字元,以通知發送方恢複數據發送。在一次數據傳輸過程中,xoff、xon的週期可重複多次,但對用戶是透明的。許多異步數據通訊軟件包均支援xonxoff協議。這種方案也可用於計算機向列印機或其它終端設備發送字元,在這種情況下,列印機或終端設備中的控製部件用以控製字元流量。
視窗機製
數據鏈路層圖3-4
為了提高通道的有效利用率。如前節所述采用了發送方不等待確認幀返回就連續
數據鏈路層圖3-4發送若乾幀的方案,這樣的
發送過程就象一條連續的流水線,故又稱為管道(piprlining)技術。由於允許連續發送多個未被確認折幀,幀號就采用多位二進製數才能加以區分。因為凡被髮送出去但沿尚未被確認的幀都可能出錯或丟失而要求重發,因而這些幀都要保留下來。這就要求發送方有較大的發送緩衝區保留可能要求重發的未被確認的幀。但是緩衝區容量總是有限的,如果接收方不能以發送方的發送速率處理收到的幀,則還是可能用完緩衝容量而暫時過載。為此,可引入類似於空閒rq方案的調整措施,其本質是在收到一確定幀之前,對發送方可發送的幀的數目加以限製,這是由發送方調整保留在重發表中的待確認幀的數目來實現的。如果接收方來不及對收到的幀進行處理,則接收方停發確認資訊,此時送方的重發表增長,當達到重發表限度時,就不再發送新幀,直至再次收到確認資訊為止。為了實現此方案,存放未確認幀的重發表中應設置未確認幀數目的最大限度,這一限度被稱為鏈路的發送視窗。顯然,如果視窗設置為1,即發送方緩衝能力公為一個幀,則傳輸控製方案就回到了空閒rq方案,此時傳輸效率很低,故視窗限度應選為使接收方儘量能處理或接受收到的所有幀。當然選擇時還必須考慮諸如幀的最大長度、可使用的緩衝存容量以及傳輸的位元速率等因素。重發表是一個連續序號的列表,對應發送方已發送但尚未確認的那些幀。這些幀的序號有一個最大值即發送視窗的限度。所謂發送視窗就是指示發送方已發送但尚未確認的幀序號隊列的界,其上、下界分彆稱為發送視窗的上、下沿,上、下沿的間距稱為視窗尺寸。接收方類似地有接收視窗,它指示允許接收的幀的序號。接收視窗的上、下界也是隨時間滑動的。
發送方每次發送一幀後,待確認幀的數目便增1;同樣,發送方每收到一個確認資訊後,待確認幀的數目便減1。當重發計數值,即待確認幀的數目等於發送視窗時,便停止發送新的幀。一般幀號隻取有限位二進製數,到一定時間後就又反覆循環,若幀號配3位二進製,則幀號在0~7間循環。如果發送視窗限度取值為2,則發送過程如圖3-4所示。圖中發送方陰影表示發送視窗,接收方陰影則相應可視作接收視窗。當傳送過程進行時,視窗位置一直在滑動,所以也稱為滑動視窗(sliddingwindow),或簡稱為滑窗。
圖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=23-1=7。對於有序接收方式,發送視窗最大尺寸選為smax;對於無笆接收方式,發送視窗最大尺寸至多是序號範圍的一半。管理超時控製的計時器應等於發送緩衝器數,而不是序號空間的大小。實際上,每一個緩衝器應對應一個計時器,當計時器超時時,該對應緩衝器的內容重發。按收方必須設置的緩衝器數應該等於接收視窗尺寸,而不是序號空間的大小。
數據鏈路控製協議舉例
數據鏈路控製協議也稱鏈路通訊規程,也就是osi參考模型中的數據鏈路層協議。鏈路控製協議可分為異步協議和同步協議兩大類。
數據鏈路層的主要協議有:
(1)point-to-pointprotocal;
(2)ether;
(3)high-leveldatalinkprotocal;
(4)framerelay;
(5)asynchronaustransferde;
異步協議:
以字元為獨立的傳輸資訊單位,在每個字元的起始處開始對字元內的位元實現同步,但字元與字元之間的間
數據鏈路層表3.1
隔時間是不固定的(即字元之間是異步的)。由於發送器和接收器中近似於同
數據鏈路層表3.1一頻率的兩個約定時鐘,能夠在一
段較短的時間內保持同步,所以可以用字元起始處同步的時鐘來采樣該字元中的各位元,而不需要每個位元同步。異步協議中因為每個傳輸字元都要新增諸如起始位、校驗位及停止位等冗餘位,故通道利用率很低,一般用於數據速率較低的場合。同步協議是以許多字元或許多位元組織成的數據塊--幀為傳輸單位,在幀的起始處同步,使幀內維持固定的時鐘。實際上該固定時鐘是發送端通過某種技術將其混合在數據中一併發送出去的,供接收端從輸入數據中分離出時鐘來,實現起來比較複雜,這個功能通常是由調解器來完成。由於采用幀為傳輸單位,所以同步協議能更有效地利用通道,也便於實現差錯控製、流量控製等功能。同步協議又可分為麵向字元的同步協議、麵向位元的同步協議及麵向字節計數的同步協議三種類型。
麵向字元的同步控製協議:
麵向字元的同步協議是最早提出的同步協議,其典型代表是ibm公司的二進製同步通訊(binarysynchronousmunication、bisync或bsc)協議,通常,也稱該協議為基本型協議。隨後,ansi和iso都提出類似的相應標準。iso的標準稱為數據通訊係統的基本型控製過程(basicdecontrolproceduresfordatamunicationsystems),即iso1745標準。任何鏈路層協議均可由鏈路建立、數據傳輸和鏈路拆除三部分組成。為實現建鏈、拆鏈等鏈路管理以及同步等各種功能,除了正常傳輸的數據塊和報文外,還需要一些控製字元。bsc協議用asc2或ebcdic字元集定義的傳輸控製(tc)字元來實現相應功能。這些傳輸控製字元的標記、名稱及asc2碼值和ebcdic碼值見表3.1。各傳輸控製字元的功能如下:
soh(startofhead):序始或標題開始,用於表示報文(塊)的標題資訊或報頭的開始。
stx(startoftext):文始,標誌標題資訊的結束和報文(塊)文字的開始。
etx(endoftext):文終,標誌報文(塊)文字的結束。
eot(endoftransmission):送畢,用以表示一個或多個文字塊的結束,並拆除鏈路。
enq(enquire):詢問,用以請求遠程站給出響應,響應可能包括站的身份或狀態。
ack(acknowledge):確認,由接收方發出一肯定確認,作為對正確接收來自發送方的報文(塊)的響應。
dle(datalinkescape):轉義,用以修改緊跟其後的有限個字元的意義。用於在bsc中實現透明方式的數據傳輸,或者當10個傳輸控製字元不夠用時提供新的轉義傳輸控製字元。
nak(negativeacknowledge):否認,由接收方發出的否定確認,作為對未正確接收來自發送方的響應。
syn(synchronous):同字元,在同步協議中,用以實現節點之間的字元同步,或用於在列數據傳輸時保持該同步。etb(endoftransmissionblock):塊終或組終,用以表示當報文分成多個數據塊時,一個數據塊的結束。bsc協議將在鏈路上傳輸的資訊分為數據報文和監控報文又分為正向監控和反向監控兩種。每一種報文中至少包含一個傳輸控製字元,用以確定報文中資訊的性質或實現某種控製作用。
數據報文和文字組成。文字是要傳送的有用數據資訊,而報文是與文字傳送及處
數據鏈路層圖3.5
數據鏈路層圖3.5理有關的輔助資訊,報頭有時也右不用,對於不超過長度限製的報文可隻用一
個數據塊作為一個傳輸單位。接收方對於每一個收到的數據塊都要給予確認,發送方收到返回的確認後,才能發送下一個數據塊。bsc協議為數據塊格式可以有5種,如圖3.5所示。bsc協議中所有發送的數據均跟在至少兩個syt字元之後,以使接收方能實現字元同步。報頭欄位用以說明數據文欄位的包識彆符(序號)及地址。所有數據塊在塊終限定符(etx或etb)之後不有塊驗字元b(blockcheckcharracter),b可以是垂直奇偶校驗或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的高級通訊控製過程p(advanceddatacontrolprocedure),iso的高級數據鏈路控製規程hdlc。鏈路控製協議著重於對分段成物理塊或包的數據的邏輯傳輸,塊或包由起始標誌引導並由終止標誌結束,也稱為幀。幀是每個控製、每個響應以及用協議傳輸的所有資訊的媒體的工具。所有麵向位元的數據鏈路控製協議均采用統一的幀格式,不論是數據還是單獨的控製資訊均以幀為單位傳送。
每個幀前、後均有一標誌碼01111110、用作幀的起始、終止指示及幀的同步。標誌碼不允許在幀的內部出現,以免引起畸意。為保證標誌碼的唯一性但又兼顧幀內數據的透明性,可以采用“0位元插入法”來解決。該法在發送端監視除標誌碼以外的所有欄位,當發現有連續5個“1”出現
數據鏈路層圖3-6
數據鏈路層圖3-6時,便在其後添插一個“0”,然後繼續發後繼的位元流。在接收端,同樣
監除起始標誌碼以外的所有欄位。當連續發現5個“1”出現後,若其後一個位元“0”則自動刪除它,以恢複原來的位元流;若發現連續6個“1”,則可能是插入的“0”發生差錯變成的“1”,也可能是收到了幀的終止標誌碼。後兩種情況,可以進一步通過幀中的幀檢驗序列來加以區分。“0位元插入法”原理簡單,很適合於硬體實現。在麵向位元的協議的幀格式中,有一個8位元的控製欄位,可以用它以編碼方式定義豐富的控製命令和應答,相當於起到了bsc協議中眾多傳輸控製字元和轉義序列的功能。作為麵向位元的數據鏈路控製協議的典型,hdlc具有如下特點:協議不依賴於任何一種字元編碼集;數據報文可透明傳輸,用於實現透明傳輸的“0位元插入法”易於硬體實現;全雙工通訊,不必等待確認便可連續發送數據,有較高的數據鏈路傳輸效率;所有幀均采用crc校驗,對資訊幀進行編號,可紡止漏收或重份,傳輸可靠性高;傳輸控製功能與處理功能分離,具有較大靈活性和較完善的控製功能。由於以上特點,目前網絡設計普遍使用hdlc作為數據鏈路管製協議。
hdlc的操作方式
hdlc是通用的數據鏈路控製協議,當開始建立數據鏈路時,允許選用特定的操作方式。所謂鏈路操作方式,通俗地講就是某站點以主站方式操作,還是以從站方式操作,或者是二者兼備。在鏈路上用於控製目的站稱為主站,其它的受主站控製的站稱為從站。主站負責對數據流進行組織,半且對鏈路上的差錯實施恢複。由主站發往從站的幀稱為命令幀,而由由站返回主站的幀稱響應幀。連有多個站點的鏈路通常使用輪詢技術,輪詢其它站的站稱為主站,而在點到點燃鏈路中每個站均可為主站。主站需要比從站有更多的邏輯功能,所以當終端與主機相連時,主機一般總是主站。在一個站連接多條鏈中的情況下,該站對於一些鏈路而言可能是主站,而對另外一些鏈路而言又可能是從站。有些可兼備主站和從站的功能,這站稱為組合站,用於組合站之間資訊傳輸的協議是對稱的,即在鏈路上主、從站具有同樣的傳輸控製功能,這又稱作平衡操作,在計算機網絡中這是一個非常重要的概念。相對的,那種操作時有主站、從站之分的,且各自功能不同的操作,稱非平衡操作。
hdlc中常用的操作方式有以下三種:(1)正常響應方式nrm是一種非平衡數據鏈路操作方式,有時也稱非平衡正常響應方式。該操作方式適用於麵向終端的點到點或一點與多點的鏈路。在這種操作方式,傳輸過程由主站啟動,從站隻有收到主站某個命令幀後,才能作為響應向主站傳輸資訊。響應資訊可以由一個或多個幀組成,若資訊由多個幀組成,則應指出哪一個是最後一幀。主站負責管理整個鏈路,且具有輪詢、選擇從站及向從站發送
數據鏈路層圖3.7
命令的權利,同時也負責對超時、重發及各類恢複
數據鏈路層圖3.7操作的控製。nrm操作方
式見圖3.7(a)。(2)異步響應方式arm,異步響應方式arm也是一種非平衡數據鏈路操作方式,與nrm不同的是,arm的傳輸過程由從站啟動。從站主動發送給主站的一個或一組幀中可包含有資訊,也可以是僅以控製爲目的而發的幀。在這種操作方式下,由從站來控製超時和重發。該方式對采用輪詢方式的多站蓮路來說是必不可少的。arm操作方式見圖3.7(b)。(3)異步平衡方式abm,異步平衡方式abm是一種允許任何節點來啟動傳輸的操作方式。為了提高鏈路傳輸效率,節點之間在兩個方向上都需要的較高的資訊傳輸量。在這種操作方式下任何時候任何站都能啟動傳輸操作,每個站既可作為主站又可作為從站,每個站都是組合站。各站都有相同的一組協議,任何站都可以發送或接收命令,也可以給出應答,並且各站對差錯恢複過程都負有相同的責任。abm操作方式見圖3.7(c).數據鏈路層
hdlc的幀格式
在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幀)三種不同類型的幀。控製欄位的第五位是pf位,即輪詢終止(pollfinal)位。(4)資訊欄位(i):資訊欄位可以是任意的二進製位元串。位元串長度未作限定,其上限由fcs欄位或通訊站的緩衝器容量來決定,目前國際上用得較多的是1000~2000位元;而下限可以為0,即無資訊欄位。但是,監控幀(s幀)中規定不可有資訊欄位。(5)幀校驗序列欄位(fcs):幀校驗序列欄位可以使用16位crc,對兩個標誌欄位之間的整個幀的內容進行校驗。fcs的生成多項式ittv4.1建議規定的x16 x12 x5 1。
數據鏈路層圖3.9
hdlc的幀類型:
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幀已被收到,但目前正處於忙狀態,尚未準備好接收
數據鏈路層圖3.9
編號為n(r)的i幀,這可用來對鏈路流量進行控製。
數據鏈路層圖3.911——選擇拒絕
(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種應答功能,但目前許多是空缺的。
3bsc和hdlc特點的比較
適用場合
就係統結構而言,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邏輯鏈路控製子層
數據鏈路層的llc子層用於設備間單個連接的錯誤控製,流量控製。
與mac層不同,llc和物理媒介全無關係。媒介是csmacd的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,代表bios(網絡基本輸入輸出協議)。sap為ff表示廣播的global協議。
snap機製
規範種dsap都隻有一個字節,那不足夠區分所有協議了。snap就來了,而且它支援在llc幀上傳廠商的協議。這樣傳遞的協議就被放入所謂snap幀中了。snap”ㄍ酚形遄紙塚前三字節為廠商號,後兩字節指示協議。
以太網有兩種版本:ieee(802.2、802.3);dix(digital、intel、xerox)又稱v2以太網。
dix幀在源地址之後是兩字節的type,例如ip。
ieee以太網幀,在源地址後是幀長度指示,在隨後的數據域中纔是標準的lpdu封裝,包括dsapssap控製域data。在這個data中會有協議id、以太類型指示,例如以太類型806表示地址解析協議arp。以太網卡通過跳針或軟件可以設置需要的以太網版本,dix通常都設的,因為大約90%的網絡都用此版本。請注意網絡所有要通訊的站點應設成相同版本。
mac介質訪問控製子層
質訪問控製是解決當局域網ong用通道的使用產生競爭時,如何分配通道的使用權問題
邏輯鏈路logicallinks
logicallinks邏輯鏈路邏輯鏈路是實際電路或邏輯電路上交換通訊資訊的兩個端係統之間的一種協議驅動通訊會話。協議棧定義了兩個係統在某種介質上的通訊。在協議棧低層定義可用的多種不同類型的通訊協議,如局域網絡(lan)、城域網(man)和象x.25或幀中繼這樣的分組交換網絡。邏輯鏈路在物理鏈路(可以是銅線、光纖或其他介質)上的兩個通訊係統之間形成。根據osi協議模型,這些邏輯鏈路隻在物理層以上存在。你可以認為邏輯鏈路是存在於網絡兩個末斷係統間的線路。
麵向連接的服務為了保證可靠的通訊,需要建立邏輯線路,但在兩個端係統間要維持會話。
麵向需要應答連接的服務分組傳輸並有返回信號的邏輯線路。這種服務產生更大的開銷,但更加可靠。
無應答不連接服務無需應答和預先的傳送。在端係統間冇有會話。
osi協議棧中的數據鏈路層可進一步細分為較低的介質訪問控製(mac)子層和較高的邏輯鏈路控製(llc)子層。當它接收到一個分組後,它從mac子層向上傳送。如果有多個網絡和設備相連,llc層可能將分組送給另一個網絡。例如,在一個ware服務器上,你可能既安裝了以太網絡適配器又安裝了令牌網絡適配器,ware自動地在連接到適配器的網絡間橋接,這樣原來在以太網上的分組就可以傳送到令牌網上的目的地了,llc層就象網絡段間的交換或鏈路中繼,它將以太網的幀重裝成令牌環網的幀。-