七層協(xié)議
OSI模型有7層結(jié)構(gòu),每層都可以有幾個子層。 OSI的7層從上到下分別是 7應(yīng)用層6表示層5 會話層 4傳輸層3網(wǎng)絡(luò)層2數(shù)據(jù)鏈路層1物理層
應(yīng)用層
與其它計算機(jī)進(jìn)行通訊的一個應(yīng)用,它是對應(yīng)應(yīng)用程序的通信服務(wù)的。例如,一個沒有通信功能的字處理程序就不能執(zhí)行通信的代碼,從事字處理工作的程序員也不關(guān)心OSI的第7層。但是,如果添加了一個傳輸文件的選項,那么字處理器的程序員就需要實現(xiàn)OSI的第7層。示例:telnet,HTTP,FTP,NFS,SMTP等。
表示層
這一層的主要功能是定義數(shù)據(jù)格式及加密。例如,FTP允許你選擇以二進(jìn)制或ASCII格式傳輸。如果選擇二進(jìn)制,那么發(fā)送方和接收方不改變文件的內(nèi)容。如果選擇ASCII格式,發(fā)送方將把文本從發(fā)送方的字符集轉(zhuǎn)換成標(biāo)準(zhǔn)的ASCII后發(fā)送數(shù)據(jù)。在接收方將標(biāo)準(zhǔn)的ASCII轉(zhuǎn)換成接收方計算機(jī)的字符集。示例:加密,ASCII等。
會話層
它定義了如何開始、控制和結(jié)束一個會話,包括對多個雙向消息的控制和管理,以便在只完成連續(xù)消息的一部分時可以通知應(yīng)用,從而使表示層看到的數(shù)據(jù)是連續(xù)的,在某些情況下,如果表示層收到了所有的數(shù)據(jù),則用數(shù)據(jù)代表表示層。示例:RPC,SQL等。
傳輸層
這層的功能包括是否選擇差錯恢復(fù)協(xié)議還是無差錯恢復(fù)協(xié)議,及在同一主機(jī)上對不同應(yīng)用的數(shù)據(jù)流的輸入進(jìn)行復(fù)用,還包括對收到的順序不對的數(shù)據(jù)包的重新排序功能。示例:TCP,UDP,SPX。
網(wǎng)絡(luò)層
這層對端到端的包傳輸進(jìn)行定義,它定義了能夠標(biāo)識所有結(jié)點的邏輯地址,還定義了路由實現(xiàn)的方式和學(xué)習(xí)的方式。為了適應(yīng)最大傳輸單元長度小于包長度的傳輸介質(zhì),網(wǎng)絡(luò)層還定義了如何將一個包分解成更小的包的分段方法。示例:IP,IPX等。
數(shù)據(jù)鏈路層
它定義了在單個鏈路上如何傳輸數(shù)據(jù)。這些協(xié)議與被討論的各種介質(zhì)有關(guān)。示例:ATM,FDDI等。
數(shù)據(jù)鏈路層:是為了提供功能上和規(guī)程上的方法,以便建立、維護(hù)和釋放網(wǎng)絡(luò)實體間的數(shù)據(jù)鏈路 。
物理鏈路(物理線路):是由傳輸介質(zhì)與設(shè)備組成的。原始的物理傳輸線路是指沒有采用高層差錯控制的基本的物理傳輸介質(zhì)與設(shè)備。
數(shù)據(jù)鏈路(邏輯線路):在一條物理線路之上,通過一些規(guī)程或協(xié)議來控制這些數(shù)據(jù)的傳輸,以保證被傳輸數(shù)據(jù)的正確性。實現(xiàn)這些規(guī)程或協(xié)議的硬件和軟件加到物理線路,這樣就構(gòu)成了數(shù)據(jù)鏈路。從數(shù)據(jù)發(fā)送點到數(shù)據(jù)接收點(點到點 point to point)所經(jīng)過的傳輸途徑。
當(dāng)采用復(fù)用技術(shù)時,一條物理鏈路上可以有多條數(shù)據(jù)鏈路。[1]
物理層
OSI的物理層規(guī)范是有關(guān)傳輸介質(zhì)的特性標(biāo)準(zhǔn),這些規(guī)范通常也參考了其他組織制定的標(biāo)準(zhǔn)。連接頭、幀、幀的使用、電流、編碼及光調(diào)制等都屬于各種物理層規(guī)范中的內(nèi)容。物理層常用多個規(guī)范完成對所有細(xì)節(jié)的定義。示例:Rj45,802.3等。[2]
基本功能
設(shè)計數(shù)據(jù)鏈路層的原因
1、在原始的物理線路上傳輸數(shù)據(jù)信號是有差錯的。
2、設(shè)計數(shù)據(jù)鏈路層的主要目的就是在原始的、有差錯的物理傳輸線路的基礎(chǔ)上,采取差錯檢測、差錯控制與流量控制等方法,將有差錯的物理線路改進(jìn)成邏輯上無差錯的數(shù)據(jù)鏈路,向網(wǎng)絡(luò)層提供高質(zhì)量的服務(wù)。
3、從網(wǎng)絡(luò)參考模型的角度看,物理層之上的各層都有改善數(shù)據(jù)傳輸質(zhì)量的責(zé)任,數(shù)據(jù)鏈路層是最重要的一層。[1]
數(shù)據(jù)鏈路層的最基本的功能是向
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層
該層用戶提供透明的和可靠的數(shù)據(jù)傳送基本服務(wù)。透明性是指該層上傳輸?shù)臄?shù)據(jù)的內(nèi)容、格式及編碼沒有限制,也沒有必要解釋信息結(jié)構(gòu)的意義;可靠的傳輸使用戶免去對丟失信息、干擾信息及順序不正確等的擔(dān)心。在物理層中這些情況都可能發(fā)生,在數(shù)據(jù)鏈路層中必須用糾錯碼來檢錯與糾錯。數(shù)據(jù)鏈路層是對物理層傳輸原始比特流的功能的加強(qiáng),將物理層提供的可能出錯的物理連接改造成為邏輯上無差錯的數(shù)據(jù)鏈路,使之對網(wǎng)絡(luò)層表現(xiàn)為一無差錯的線路。如果您想用盡量少的詞來記住數(shù)據(jù)鏈路層,那就是:“幀和介質(zhì)訪問控制”。
幀同步
為了使傳輸中發(fā)生差錯后只將有錯的有限數(shù)據(jù)進(jìn)行重發(fā),數(shù)據(jù)鏈路層將比特流組合成以幀為單位傳送。每個幀除了要傳送的數(shù)據(jù)外,還包括校驗碼,以使接收方能發(fā)現(xiàn)傳輸中的差錯。幀的組織結(jié)構(gòu)必須設(shè)計成使接收方能夠 明確地從物理層收到的比特流中對其進(jìn)行識別,也即能從比特流中區(qū)分出幀的起始與終止,這就是幀同步要解決的問題。由于網(wǎng)絡(luò)傳輸中很難保證計時的正確和一致,所以不可采用依靠時間間隔關(guān)系來確定一幀的起始與終止的方法。
(1)字節(jié)計數(shù)法:這是一種以一個特殊字符表示一幀的起始并以一個專門字段來標(biāo)明幀內(nèi)字節(jié)數(shù)的幀同步方法。接收方可以通過對該特殊字符的識別從比特流中區(qū)分出幀的起始并從專門字段中獲知該幀中隨后跟隨的數(shù)據(jù)字節(jié)數(shù),從而可確定出幀的終止位置。面向字節(jié)計數(shù)的同步規(guī)程的典型代表是DEC公司的數(shù)字?jǐn)?shù)據(jù)通信報文協(xié)議DDCMP(Digital Data Communications Message Protocol)。DDCMP采用的幀格式如圖3-1。
控制字符SOH標(biāo)志數(shù)據(jù)幀的起始。實際傳輸中,SOH前還要以兩個或更多個同步字符來確定一幀的起始,有時也允許本幀的頭緊接著上幀的尾,此時兩幀間就不必再加同步字符。 count字段共有14位,用以指示幀中數(shù)據(jù)段中數(shù)據(jù)的字節(jié)數(shù),14位二進(jìn)制數(shù)的最大值為2-1=16383,所以數(shù)據(jù)最大長度為8×16383=131064。DDCMP協(xié)議就是靠這個字節(jié)計數(shù)來確定幀的終止位置的。DDCMP幀格式中的ACK、SEG、ADDR及FLAG中的第2位,CRC1、CRC2分別對標(biāo)題部分和數(shù)據(jù)部分進(jìn)行雙重校驗,強(qiáng)調(diào)標(biāo)題部分單獨校驗的原因是,一旦標(biāo)題部分中的CONUT字段出錯,即失卻了幀邊界劃分的依據(jù),將造成災(zāi)難性的后果。由于采用字符計數(shù)方法來確定幀的終止邊界不會引起數(shù)據(jù)及其它信息的混淆,因而不必采用任何措施便可實現(xiàn)數(shù)據(jù)的透明性(即任何數(shù)據(jù)均可不受限制地傳輸)。
(2)使用字符填充的首尾定界符法:該法用一些特定的字符來定界一幀的起始與終止,為了不使數(shù)據(jù)信息位中出現(xiàn)的與特定字符相同的字符被誤判為幀的首尾定界符,可以在這種數(shù)據(jù)字符前填充一個轉(zhuǎn)義控制字符(DLE)以示區(qū)別,從而達(dá)到數(shù)據(jù)的透明性。但這種方法使用起來比較麻煩,而且所用的特定字符過份依賴于所采用的字符編碼集,兼容性比較差。
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層
(3)使用比特填充的首尾標(biāo)志法:該法以一組特定的比特模式(如01111110)來標(biāo)志一幀的起始與終止。本章稍后要詳細(xì)介紹的HDLC規(guī)程即采用該法。為了不使信息位中出現(xiàn)的與特定比特模式相似的比特串被誤判為幀的首尾標(biāo)志,可以采用比特填充的方法。比如,采用特定模式01111110,則對信息位中的任何連續(xù)出現(xiàn)的五個“1”,發(fā)送方自動在其后插入一個“0”,而接收則做該過程的逆操作,即每接收到連續(xù)五個“1”,則自動刪去其后所跟的“0”,以此恢復(fù)原始信息,實現(xiàn)數(shù)據(jù)傳輸?shù)耐该餍?。比特填充很容易由硬件來實現(xiàn),性能優(yōu)于字符填充方法。
(4)違法編碼法:該法在物理層采用特定的比特編碼方法時采用。例如,一種被稱作曼徹斯特編碼的方法,是將數(shù)據(jù)比特“1”編碼成“高-低”電平對,而將數(shù)據(jù)比特“0”編碼成“低-高”電平對。而“高-高”電平對和“低-低”電平對在數(shù)據(jù)比特中是違法的。可以借用這些違法編碼序列來定界幀的起始與終止。局域網(wǎng)IEEE 802標(biāo)準(zhǔn)中就采用了這種方法。違法編碼法不需要任何填充技術(shù),便能實現(xiàn)數(shù)據(jù)的透明性,但它只適用于采用冗余編碼的特殊編碼環(huán)境。由于字節(jié)計數(shù)法中COUNT字段的脆弱性以及字符填充法實現(xiàn)上的復(fù)雜性和不兼容性,較普遍使用的幀同步法是比特填充和違法編碼法。
差錯控制
一個實用的通信系統(tǒng)必須具備發(fā)現(xiàn)(即檢測)這種差錯的能力,并采取某種措施糾正之,使差錯被控制在所能允許的盡可能小的范圍內(nèi),這就是差錯控制過程,也是數(shù)據(jù)鏈路層的主要功能之一。對差錯編碼(如奇偶校驗碼,檢查和或CRC)的檢查,可以判定一幀在傳輸過程中是否發(fā)生了錯誤。一旦發(fā)現(xiàn)錯誤,一般可以采用反饋重發(fā)的方法來糾正。這就要求接收方收完一幀后,向發(fā)送方
數(shù)據(jù)鏈路層圖3.1
數(shù)據(jù)鏈路層圖3.1
反饋一個接收是否正確的信息,使發(fā)送方所在此作出是不需要重新發(fā)送的決定,也即發(fā)送方僅當(dāng)收到接收方已正確接收的反饋信號后才能認(rèn)為該幀已經(jīng)正確發(fā)送完畢,否則需要重新發(fā)送直至正確為止。物理信道的突發(fā)噪聲可能完全“淹沒”一幀,即使得整個數(shù)據(jù)幀或反饋信息幀丟失,這將導(dǎo)致發(fā)送方永遠(yuǎn)收不到接收方發(fā)來的反饋信息,從而使傳輸過程停滯.為了避免出現(xiàn)這種情況,通常引入計時器(Timer)來限定接收方發(fā)回反饋信息的時間間隔,當(dāng)發(fā)送方發(fā)送一幀的同時也啟動計時器,若在限定時間間隔內(nèi)未能收到接收方的反饋信息,即計時器超時(Timeout),則可認(rèn)為傳的幀已出錯或丟失,繼而要重新發(fā)送。由于同一幀數(shù)據(jù)可能被重復(fù)發(fā)送多次,就可能引起接收方多次收到同一幀并將其遞交給網(wǎng)絡(luò)層的危險。為了防止發(fā)生這種危險,可以采用對發(fā)送的幀編號的方法,即賦予每幀一個序號,從而使接收方能從該序號來區(qū)分是新發(fā)送來的幀還是已經(jīng)接收但又重新發(fā)送來的幀,以此來確定要不要將接收到的幀遞交給網(wǎng)絡(luò)層。數(shù)據(jù)鏈路層通過使用計數(shù)器和序號來保證每幀最終都被正確地遞交給目標(biāo)網(wǎng)絡(luò)層一次。
流量控制
流量控制并不是數(shù)據(jù)鏈路層所特有的功能,許多高層協(xié)議中也提供流時控功能,只不過流量控制的對象不同而已。比如,對于數(shù)據(jù)鏈路層來說,控制的是相鄰兩節(jié)點之間數(shù)據(jù)鏈路上的流量,而對于運輸層來說,控制的則是從源到最終目的之間端的流量。由于收發(fā)雙方各自使用的設(shè)備工作速率和緩沖存儲的空間的差異,可能出現(xiàn)發(fā)送方發(fā)送能力大于接收方接收能力的現(xiàn)象,如若此時不對發(fā)送方的發(fā)送速率(也即鏈路上的信息流量)作適當(dāng)?shù)南拗?,前面來不及接收的幀將被后面不斷發(fā)送來的幀“淹沒”,從而造成幀的丟失而出錯。由此可見,流量控制實際上是對發(fā)送方數(shù)據(jù)流量的控制,使其發(fā)送率不致超過接收方所能承受的能力。這個過程需要通過某種反饋機(jī)制使發(fā)送方知道接收方是否能跟上發(fā)送方,也即需要有一些規(guī)則使得發(fā)送方知道在什么情況下可以接著發(fā)送下一幀,而在什么情況下必須暫停發(fā)送,以等待收到某種反饋信息后繼續(xù)發(fā)送。
鏈路管理
鏈路管理功能主要用于面向連接的服
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層
務(wù)。當(dāng)鏈路兩端的節(jié)點要進(jìn)行通信前,必須首先確認(rèn)對方已處于就緒狀態(tài),并交換一些必要的信息以對幀序號初始化,然后才能建立連接,在傳輸過程中則要能維持該連接。如果出現(xiàn)差錯,需要重新初始化,重新自動建立連接。傳輸完畢后則要釋放連接。數(shù)據(jù)連路層連接的建立維持和釋放就稱作鏈路管理。在多個站點共享同一物理信道的情況下(例如在LAN中)如何在要求通信的站點間分配和管理信道也屬于數(shù)據(jù)鏈路層管理的范疇。
差錯控制
用以使發(fā)送方確定接收方是否正確收到了由它發(fā)送的數(shù)據(jù)信息的方法稱為反饋差錯控制。通常采用反饋檢測和自動重發(fā)請求(ARQ)兩種基本方法實現(xiàn)。
反饋檢測法
反饋檢測法也稱回送校驗或“回聲”法,主要用于面向字符的異步傳輸中,如終端與遠(yuǎn)程計算機(jī)間的通信,這是一種無須使用任何特殊代碼的錯誤檢測法。雙方進(jìn)行數(shù)據(jù)傳輸時,接收方將接收到的數(shù)據(jù)(可以是一個字符,也可以是一幀)重新發(fā)回發(fā)送方,由發(fā)送方檢查是否與原始數(shù)據(jù)完全相符。若不相符,則發(fā)送方發(fā)送一個控制字符(如DEL)通知接收方刪去出錯的數(shù)據(jù),并重新發(fā)送該數(shù)據(jù);若相符,則發(fā)送下一個數(shù)據(jù)。反饋檢測法原理簡單、實現(xiàn)容易,也有較高的可靠性,但是,每個數(shù)據(jù)均被傳輸兩次,信道利用率很低。一般,在面向字符的異步傳輸中,信道效率并不是主要的,所以這種差錯控制方法仍被廣泛使用。
自動重發(fā)法
(ARQ法):實用的差錯控制方法,應(yīng)該既要傳輸可靠性高,又要信道利用率高。為此讓發(fā)送方將要發(fā)送的數(shù)據(jù)幀附加一定的冗余檢錯碼一并發(fā)送,接收方則根據(jù)檢錯碼對數(shù)據(jù)幀進(jìn)行錯誤檢測,若發(fā)現(xiàn)錯誤,就返回請求重發(fā)的答,發(fā)送方收到請求重發(fā)的應(yīng)答后,便重新傳送該數(shù)據(jù)幀。這種差錯控制方法就稱為自動請求法(Automatic Repeat reQuest),簡稱ARQ法。ARQ法僅返回很少的控制信息,便可有效地確認(rèn)所發(fā)數(shù)據(jù)幀是否被正確接收。ARQ法有若干種實現(xiàn)方案,如空閑重發(fā)請求(Idle RQ)和連續(xù)重請求(Continuous RQ)是其中最基本的兩種方案。
空閑重發(fā)請求
(Idle RQ):空閑重發(fā)請求方案也稱停等(stop-and -wait)法,該方案規(guī)定發(fā)送方每發(fā)送一幀后就要停下等待接收方的確認(rèn)返回,僅當(dāng)接收方確認(rèn)正確接收后再繼續(xù)發(fā)送下一幀??臻e重發(fā)請求方案的實現(xiàn)過程如下: 發(fā)送方每次僅將當(dāng)前信息幀作為待確認(rèn)幀保留在緩沖存儲器中。當(dāng)發(fā)送方開始發(fā)送信息幀時,隨即啟動計時器。 當(dāng)接收方檢測到一個含有差錯的信息幀時,便舍棄該幀。當(dāng)接收方收到無差錯的信息幀后,即向發(fā)送方返回一個確認(rèn)幀。 若發(fā)送方在規(guī)定時間內(nèi)未能收到確認(rèn)幀(即計時器超時),則應(yīng)重發(fā)存于緩沖器中待確認(rèn)信息幀。若發(fā)送方在規(guī)定時間內(nèi)收到確認(rèn)幀,即將計時器清零,繼而開始下一幀的發(fā)送。從以上過程可以看出,空閑RQ方案的收、發(fā)雙方僅須設(shè)置一個幀的緩沖存儲空間,便可有效地實現(xiàn)數(shù)據(jù)重發(fā)并保證收接收方接收數(shù)據(jù)不會重份。空閑RQ方案最主要的優(yōu)點就是所需的緩沖存儲空間最小,因此在鏈路端使用簡單終端的環(huán)境中被廣泛采用。
連續(xù)重發(fā)請求
(Continuous RQ):連續(xù)重發(fā)請求方案是指發(fā)送方可以連續(xù)發(fā)送一系列信息幀,即不用等前一幀被確認(rèn)便可發(fā)送下一幀。這就需要一個較大的緩沖存儲空間(稱作重發(fā)表),用以存放
數(shù)據(jù)鏈路層圖3-2
數(shù)據(jù)鏈路層圖3-2
若干待確認(rèn)的信息幀。每當(dāng)發(fā)送站收到對某信息幀的確認(rèn)幀后,便從重發(fā)表中將該信息幀刪除。所以,連續(xù)RQ方案的鏈路傳輸效率大大提高,但相應(yīng)地需要更大的緩沖存儲空間。連續(xù)RQ方案的實現(xiàn)過程如下:發(fā)送方連續(xù)發(fā)送信息幀而不必等待確認(rèn)幀的返回。發(fā)送方在重發(fā)表中保存所發(fā)送的每個幀的拷貝。重發(fā)表按先進(jìn)先出(FIFO)隊列規(guī)則操作。接收方對每一個正確收到的信息幀返回一個確認(rèn)幀。每一個確認(rèn)幀包含一個唯一的序號,隨相應(yīng)的確認(rèn)幀返回。接收方保存一個接收次序表,它包含最后正確收到的信息幀的序號。當(dāng)發(fā)送方收到相應(yīng)信息幀的確認(rèn)幀后,從重發(fā)表中刪除該信息幀。當(dāng)發(fā)送方檢測出失序的確認(rèn)幀(即第n號信息幀和第n+2號信息幀的確認(rèn)幀已返回,而n+1號的確認(rèn)幀未返回)后,便重發(fā)未被確認(rèn)的信息幀。實際操作過程中,兩節(jié)點間采用雙工方式將確認(rèn)幀插在雙方的發(fā)送信息幀中來傳送的。上面的連續(xù)RQ過程是假定在不發(fā)生傳輸差錯的情況下描述的。如果差錯出現(xiàn),如何進(jìn)一步處理可以有兩種策略,即Go-back-N和選擇重發(fā)。 Go-back-N是當(dāng)接收方檢測出失序的信息幀后,要求發(fā)送方重發(fā)最后一個正確接收的信息幀之后的所有未被確認(rèn)的幀,或者當(dāng)發(fā)送方發(fā)送了n幀后,若發(fā)現(xiàn)該n幀的前一幀在計時器超時后仍未返回其確認(rèn)信息,則該幀被判定為出錯或丟失。對接收方來說,因為這一幀出錯,就不能以正確的序號向它的高層遞交數(shù)據(jù),對其后發(fā)送來的n幀也可能都不能接收而丟棄,因此,發(fā)送方發(fā)現(xiàn)這種情況,就不得不重新發(fā)送該出錯幀及其后的n幀,這就是Go-back-N(退回N)法名稱的由來。Co-back-N法操作過程如圖3-2所示。圖中假定發(fā)送完8號幀后,發(fā)現(xiàn)2號幀的確認(rèn)返回在計時器超時后還未收到,則發(fā)送方只能退回從2號幀開始重發(fā)。Go-back-N可能將已正確傳送到目的方的幀再傳一遍,這顯然是一種浪費。另一種更好的策略是當(dāng)接收方發(fā)現(xiàn)某幀出錯后,其后繼續(xù)送來的正確的幀雖然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在一個緩沖區(qū)中,同時要求發(fā)送方重新傳送出錯的那一幀,一旦收到重新傳來的幀后,就可與原已存于緩沖區(qū)中的其余幀一并按正確的順序遞交高層。這種方法稱為選擇重發(fā)(Selective repeat),其工作過程如圖3-3所示。圖中2號幀的否認(rèn)返回信息NAK2要求發(fā)送方選擇重發(fā)2號幀。顯然,選擇重發(fā)減少了浪費但要求接收方有足夠大的緩沖區(qū)容量。
流量控制
差錯控制是數(shù)據(jù)鏈路層功能中的一個部分,另一個重要部分是流量控制。流量控制涉及鏈路上字符或幀的傳輸速率的控制,以使接收方在接收前有足夠的緩沖存儲空間來接受每一個字符或幀。例如,在面向字符的終端--計算機(jī)鏈路中,若遠(yuǎn)程計算機(jī)為許多臺終端服務(wù),它就有可能因不能在高峰時按預(yù)定速率傳輸全部字符而暫時過載。同樣,在面向幀的自動重發(fā)請求系統(tǒng)中,當(dāng)待確認(rèn)幀數(shù)量增加時,有可能超出緩沖器存儲容量,也造成過載。
XON/XOFF方案
增加緩沖存儲空間在某種程度上可以緩解收、發(fā)雙方在傳輸速率上的差別,但這是一種被動的和消極的方法,實現(xiàn)起來有諸多的不便和限制。因為一方面系統(tǒng)不允許開設(shè)過大的緩沖空間,另一方面對于速率顯著失配并且又傳送大型文件的場合,仍會出現(xiàn)緩沖存儲空間不夠。XON/XOFF方案則是一種相比之下更主動、積極的流量控制方法。XON/XOFF方案中使用一對控制字符來實現(xiàn)流量控制,其中XON采用ASCII字符字集中的控制字符DC1、XOFF采用ASCII字符集中的控制字符DC3。當(dāng)通信鏈上的接收方發(fā)生過過載時便向發(fā)送方發(fā)送一個XOFF字符后便暫時停止發(fā)送數(shù)據(jù),等接收方處理完緩沖存儲器中中的數(shù)據(jù),過載恢復(fù)后,再向發(fā)送方發(fā)送一個XON字符,以通知發(fā)送方恢復(fù)數(shù)據(jù)發(fā)送。在一次數(shù)據(jù)傳輸過程中,XOFF、XON的周期可重復(fù)多次,但對用戶是透明的。許多異步數(shù)據(jù)通信軟件包均支持XON/XOFF協(xié)議。這種方案也可用于計算機(jī)向打印機(jī)或其它終端設(shè)備發(fā)送字符,在這種情況下,打印機(jī)或終端設(shè)備中的控制部件用以控制字符流量。
窗口機(jī)制
為了提高信道的有效利用率。如前節(jié)所述采用了發(fā)送方不等待確認(rèn)幀返回就連續(xù)
數(shù)據(jù)鏈路層圖3-4
數(shù)據(jù)鏈路層圖3-4
發(fā)送若干幀的方案,這樣的發(fā)送過程就象一條連續(xù)的流水線,故又稱為管道(pipelining)技術(shù)。由于允許連續(xù)發(fā)送多個未被確認(rèn)折幀,幀號就采用多位二進(jìn)制數(shù)才能加以區(qū)分。因為凡被發(fā)送出去但沿尚未被確認(rèn)的幀都可能出錯或丟失而要求重發(fā),因而這些幀都要保留下來。這就要求發(fā)送方有較大的發(fā)送緩沖區(qū)保留可能要求重發(fā)的未被確認(rèn)的幀。但是緩沖區(qū)容量總是有限的,如果接收方不能以發(fā)送方的發(fā)送速率處理收到的幀,則還是可能用完緩沖容量而暫時過載。為此,可引入類似于空閑RQ方案的調(diào)整措施,其本質(zhì)是在收到一確定幀之前,對發(fā)送方可發(fā)送的幀的數(shù)目加以限制,這是由發(fā)送方調(diào)整保留在重發(fā)表中的待確認(rèn)幀的數(shù)目來實現(xiàn)的。如果接收方來不及對收到的幀進(jìn)行處理,則接收方停發(fā)確認(rèn)信息,此時送方的重發(fā)表增長,當(dāng)達(dá)到重發(fā)表限度時,就不再發(fā)送新幀,直至再次收到確認(rèn)信息為止。 為了實現(xiàn)此方案,存放未確認(rèn)幀的重發(fā)表中應(yīng)設(shè)置未確認(rèn)幀數(shù)目的最大限度,這一限度被稱為鏈路的發(fā)送窗口。顯然,如果窗口設(shè)置為1,即發(fā)送方緩沖能力公為一個幀,則傳輸控制方案就回到了空閑RQ方案,此時傳輸效率很低,故窗口限度應(yīng)選為使接收方盡量能處理或接受收到的所有幀。當(dāng)然選擇時還必須考慮諸如幀的最大長度、可使用的緩沖存容量以及傳輸?shù)谋忍厮俾实纫蛩?。重發(fā)表是一個連續(xù)序號的列表,對應(yīng)發(fā)送方已發(fā)送但尚未確認(rèn)的那些幀。這些幀的序號有一個最大值即發(fā)送窗口的限度。所謂發(fā)送窗口就是指示發(fā)送方已發(fā)送但尚未確認(rèn)的幀序號隊列的界,其上、下界分別稱為發(fā)送窗口的上、下沿,上、下沿的間距稱為窗口尺寸。接收方類似地有接收窗口,它指示允許接收的幀的序號。接收窗口的上、下界也是隨時間滑動的。
發(fā)送方每次發(fā)送一幀后,待確認(rèn)幀的數(shù)目便增1;同樣,發(fā)送方每收到一個確認(rèn)信息后,待確認(rèn)幀的數(shù)目便減1。當(dāng)重發(fā)計數(shù)值,即待確認(rèn)幀的數(shù)目等于發(fā)送窗口時,便停止發(fā)送新的幀。一般幀號只取有限位二進(jìn)制數(shù),到一定時間后就又反復(fù)循環(huán),若幀號配3位二進(jìn)制,則幀號在0~7間循環(huán)。如果發(fā)送窗口限度取值為2,則發(fā)送過程如圖3-4所示。圖中發(fā)送方陰影表示發(fā)送窗口,接收方陰影則相應(yīng)可視作接收窗口。當(dāng)傳送過程進(jìn)行時,窗口位置一直在滑動,所以也稱為滑動窗口(Slidding Window),或簡稱為滑窗。
圖3-4中滑動窗口的狀態(tài)變化過程可敘述如下(假設(shè)發(fā)送窗口為2,接收窗口為1)。
初始態(tài),發(fā)送方?jīng)]有幀發(fā)出,發(fā)送窗口前后沿相等。接收窗口限度為1,它允許接收0號幀。
發(fā)送方已發(fā)送0號幀,此時發(fā)作口打開(即前沿加1),窗口對準(zhǔn)0號,表示已發(fā)出但尚未收到確認(rèn)返回信息。接收窗口狀態(tài)同前,指示允許接收0幀。
發(fā)送方在未收到0幀的確認(rèn)返回信息前,繼續(xù)發(fā)送1號幀。發(fā)送窗口狀態(tài)不變。
接收方已收到0幀,窗口滑動一格,表示準(zhǔn)備接收1號幀。發(fā)送窗口狀態(tài)不變。
發(fā)送方已收到0號幀的確認(rèn)返回信息,發(fā)送窗口后沿加1,表示從重發(fā)表中刪除0號幀,接收窗口狀態(tài)不變。
發(fā)送方繼續(xù)發(fā)送2幀,發(fā)送窗口前沿加1,表示2號幀也納入待確認(rèn)之列。接收
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層
窗口狀態(tài)仍不變。
接收方已收到1號幀,接收窗口滑動一格,表示準(zhǔn)備接收2號幀。發(fā)送窗口狀態(tài)不變。
發(fā)送方收到接收方發(fā)來的1號幀收畢的確認(rèn)信息,發(fā)送窗口后沿加1,表示從重發(fā)表中刪除最早進(jìn)入的1號幀。接收窗口狀態(tài)不變。 一般說來,凡是在一定范圍內(nèi)到達(dá)的幀,那怕不按順序,接收方也要接收下來。若把這個范圍看成是接收窗口的話,則接收窗口的大小應(yīng)該是大于1的,而Go-back-N正是接收窗口等于1的一個特例。選擇重發(fā)也可以看作是一種滑動窗口協(xié)議,只不過其發(fā)送窗口和接收窗口都大于1。若從滑動窗口的觀點來統(tǒng)一看待空閑RQ、Go-back-N及選擇重發(fā)三種協(xié)議,它們的差別公在于各自窗口的大小不同而已:
空閑RQ:發(fā)送窗口=1,接收窗口=1
Go-back-N:發(fā)送窗口>1,接收窗口=1
選擇重發(fā):發(fā)送窗口>1,接收窗口>1
若幀序號采用3位二進(jìn)制編碼,則最大序號為SMAX=2^3-1=7。對于有序接收方式,發(fā)送窗口最大尺寸選為SMAX;對于無笆接收方式,發(fā)送窗口最大尺寸至多是序號范圍的一半。管理超時控制的計時器應(yīng)等于發(fā)送緩沖器數(shù),而不是序號空間的大小。實際上,每一個緩沖器應(yīng)對應(yīng)一個計時器,當(dāng)計時器超時時,該對應(yīng)緩沖器的內(nèi)容重發(fā)。按收方必須設(shè)置的緩沖器數(shù)應(yīng)該等于接收窗口尺寸,而不是序號空間的大小。
鏈路控制規(guī)程
數(shù)據(jù)鏈路控制協(xié)議也稱鏈路通信規(guī)程,也就是OSI參考模型中的數(shù)據(jù)鏈路層協(xié)議。鏈路控制協(xié)議可分為異步協(xié)議和同步協(xié)議兩大類。
數(shù)據(jù)鏈路層的主要協(xié)議有:
(1)點對點協(xié)議(Point-to-Point Protocol);
(2)以太網(wǎng)(Ethernet);
(3)高級數(shù)據(jù)鏈路協(xié)議(High-Level Data Link Protocol);
(4) 幀中繼(Frame Relay);
(5) 異步傳輸模式(Asynchronous Transfer Mode);
異步協(xié)議
以字符為獨立的信息傳輸單位,在每個字符的起始處開始對字符內(nèi)的比特實現(xiàn)同步,但字符與字符之間的間隔時間是不固定的(即字符之間是異步的)。由于發(fā)送器和接收器中近似于同 一頻率的兩個約定時鐘,能夠在一段較短的時間內(nèi)保持同步,所以可以用字符起始處同步的時鐘來采樣該字符中的各比特,而不需要每個比特再用其它方法同步。異步協(xié)議中因為每個傳輸字符都要添加諸如起始位、校驗位及停止位等冗余位,故信道利用率很低,一般用于數(shù)據(jù)速率較低的場合。
同步協(xié)議
同步協(xié)議是以許多字符或許多比特組織成的數(shù)據(jù)塊--幀為傳輸單位,在幀的起始處同步,使幀內(nèi)維持固定的時鐘。實際上該固定時鐘是發(fā)送端通過某種技術(shù)將其混合在數(shù)據(jù)中一并發(fā)送出去的,供接收端從輸入數(shù)據(jù)中分離出時鐘來,實現(xiàn)起來比較復(fù)雜,這個功能通常是由調(diào)解器來完成。由于采用幀為傳輸單位,所以同步協(xié)議能更有效地利用信道,也便于實現(xiàn)差錯控制、流量控制等功能。同步協(xié)議又可分為面向字符的同步協(xié)議、面向比特的同步協(xié)議及面向字節(jié)計數(shù)的同步協(xié)議三種類型。
二進(jìn)制協(xié)議
面向字符的同步協(xié)議是最早提出的同步協(xié)議,其典型代表是IBM公司的二進(jìn)制同步通信(Binary Synchronous Communication、BISYNC或BSC)協(xié)議,通常,也稱該協(xié)議為基本型協(xié)議。隨后,ANSI和ISO都提出類似的相應(yīng)標(biāo)準(zhǔn)。ISO的標(biāo)準(zhǔn)稱為數(shù)據(jù)通信系統(tǒng)的基本型控制過程(Basic mode control procedures for data communication Systems),即ISO 1745標(biāo)準(zhǔn)。任何鏈路層協(xié)議均可由鏈路建立、數(shù)據(jù)傳輸和鏈路拆除三部分組成。為實現(xiàn)建鏈、拆鏈等鏈路管理以及同步等各種功能,除了正常傳輸?shù)臄?shù)據(jù)塊和報文外,還需要一些控制字符。 BSC協(xié)議用ASC2或EBCDIC字符集定義的傳輸控制(TC)字符來實現(xiàn)相應(yīng)功能。這些傳輸控制字符的標(biāo)記、名稱及ASC2碼值和EBCDIC碼值見表3.1。 各傳輸控制字符的功能如下:
SOH(Start of Head): 序始或標(biāo)題開始,用于表示報文(塊)的標(biāo)題信息或報頭的開始。
STX(Start of TEXT):文始,標(biāo)志標(biāo)題信息的結(jié)束和報文(塊)文本的開始。
ETX(End of Text): 文終,標(biāo)志報文(塊)文本的結(jié)束。
EOT(End of Transmission): 送畢,用以表示一個或多個文本塊的結(jié)束,并拆除鏈路。
ENQ(Enquire):詢問,用以請求遠(yuǎn)程站給出響應(yīng),響應(yīng)可能包括站的身份或狀態(tài)。
ACK(Acknowledge): 確認(rèn),由接收方發(fā)出一肯定確認(rèn),作為對正確接收來自發(fā)送方的報文(塊)的響應(yīng)。
DLE(Data Link Escape): 轉(zhuǎn)義,用以修改緊跟其后的有限個字符的意義。用于在BSC中實現(xiàn)透明方式的數(shù)據(jù)傳輸,或者當(dāng)10個傳輸控制字符不夠用時提供新的轉(zhuǎn)義傳輸控制字符。
NAK(Negative Acknowledge): 否認(rèn),由接收方發(fā)出的否定確認(rèn),作為對未正確接收來自發(fā)送方的響應(yīng)。
SYN(Synchronous): 同字符,在同步協(xié)議中,用以實現(xiàn)節(jié)點之間的字符同步,或用于在列數(shù)據(jù)傳輸時保持該同步。
ETB(End of Transmission Block): 塊終或組終,用以表示當(dāng)報文分成多個數(shù)據(jù)塊時, 一個數(shù)據(jù)塊的結(jié)束。
BSC 協(xié)議將在鏈路上傳輸?shù)?a href='http://tools.kfqgw-jgdw.cn/DetailInfo.aspx?nid=1928' target='_blank'>信息分為數(shù)據(jù)報文和監(jiān)控報文又分為正向監(jiān)控和反向監(jiān)控兩種。每一種報文中至少包含一個傳輸控制字符,用以確定報文中信息的性質(zhì)或?qū)崿F(xiàn)某種控制作用。
數(shù)據(jù)報文和文本組成。文本是要傳送的有用數(shù)據(jù)信息,而報文是與文本傳送及處
數(shù)據(jù)鏈路層圖3.5
數(shù)據(jù)鏈路層圖3.5
理有關(guān)的輔助信息,報頭有時也可不用,對于不超過長度限制的報文可只用一個數(shù)據(jù)塊作為一個傳輸單位。接收方對于每一個收到的數(shù)據(jù)塊都要給予確認(rèn),發(fā)送方收到返回的確認(rèn)后,才能發(fā)送下一個數(shù)據(jù)塊。BSC協(xié)議為數(shù)據(jù)塊格式可以有5種,如圖3.5所示。
BSC協(xié)議中所有發(fā)送的數(shù)據(jù)均跟在至少兩個SYT字符之后,以使接收方能實現(xiàn)字符同步。報頭字段用以說明數(shù)據(jù)文字段的包識別符(序號)及地址。所有數(shù)據(jù)塊在塊終限定符(ETX或ETB)之后不有塊驗字符BCC(Block Check Charracter),BCC可以是垂直奇偶校驗或16位CRC,校驗范圍自STX始,至ETX或ETB止。
當(dāng)發(fā)送的報文是二進(jìn)制數(shù)據(jù)而不是字符串時,二進(jìn)制數(shù)據(jù)中形同傳輸控制字符的比特串將會引傳輸混亂。為使二進(jìn)制數(shù)據(jù)中允許與傳輸控制字符相同的數(shù)據(jù)(即數(shù)據(jù)的透明性),可在各幀中真正的傳輸控制字符(SYN除外)前加上DLE轉(zhuǎn)義字符,在發(fā)送時,若文本中也出現(xiàn)與DLE字符相同的二進(jìn)制比特串,則可插入一個外加的DLE字符加以標(biāo)記。 在接收端則進(jìn)行同樣的檢測,若發(fā)現(xiàn)單個的DLE字符,則知其后的DLE為數(shù)據(jù),在進(jìn)一步處理前將其中一個刪去。
正、反向監(jiān)控報文有四種格式。
(1)肯定確認(rèn)和選擇響應(yīng):
SYN | SYN | ACK
(2)否定確認(rèn)和選擇響應(yīng):
SYN | SYN | NAK
(3)輪詢/選擇請求:
SYN | SYN | P/S前綴 | 站地址 | ENQ
(4)拆鏈:
SYN | SYN | EOT
監(jiān)控報文一般由單個傳輸控制字符或由若干個其它字符引導(dǎo)的單個傳輸控制字符組成。引導(dǎo)字符統(tǒng)稱為前綴,它包含識別符(序號)、地址信息、狀態(tài)信息以及其它所需的信息。ACK和NAK監(jiān)控報文的作用,首先作為對先前所發(fā)數(shù)據(jù)塊是否正確接收的響應(yīng),因而包含識符(序號);其次,用作對選擇監(jiān)控信息的響應(yīng),以ACK表示所選站能接收數(shù)據(jù)塊,而NAK表示不能接收。ENQ用作輪詢和選擇監(jiān)控報文,在多結(jié)構(gòu)中,輪詢或選擇的站地址在ENQ字符前。EOT監(jiān)控報文有用以標(biāo)志報文的結(jié)束,并在兩站點間除邏輯鏈路。
面向字符的同步協(xié)議的最大缺點,是它和特定的字符編碼集關(guān)系過于密切,不利于兼容性。為了實現(xiàn)數(shù)據(jù)的透明性而采用的字符填充法,實現(xiàn)起來比較麻煩,且也依賴于采用的字符編碼集。另外,由于BSC是一個半雙工協(xié)議,它的鏈路傳輸效率很低,即使物理連路支持全雙工傳輸,BSC也不能加以運用。不過,由于BSC協(xié)議需要的緩沖存儲容量最小,因而在面向終端的網(wǎng)絡(luò)系統(tǒng)中仍然廣泛使用。
高級控制協(xié)議
七十年代初,IBM公司率先提出了面向比特的同步數(shù)據(jù)鏈路控制規(guī)程SDLC。隨后,ANSI和ISO均采納并發(fā)展了SDLC,并分別提出了自己的標(biāo)準(zhǔn):ANSI的高級通信控制過程ADCCP(Advanced Data Control Procedure),ISO的高級數(shù)據(jù)鏈路控制規(guī)程HDLC。鏈路控制協(xié)議著重于對分段成物理塊或包的數(shù)據(jù)的邏輯傳輸,塊或包由起始標(biāo)志引導(dǎo)并由終止標(biāo)志結(jié)束,也稱為幀。幀是每個控制、每個響應(yīng)以及用協(xié)議傳輸?shù)乃?a href='http://tools.kfqgw-jgdw.cn/DetailInfo.aspx?nid=1928' target='_blank'>信息的媒體的工具。所有面向比特的數(shù)據(jù)鏈路控制協(xié)議均采用統(tǒng)一的幀格式,不論是數(shù)據(jù)還是單獨的控制信息均以幀為單位傳送。
每個幀前、后均有一標(biāo)志碼01111110、用作幀的起始、終止指示及幀的同步。標(biāo)志碼不允許在幀的內(nèi)部出現(xiàn),以免引起畸意。為保證標(biāo)志碼的唯一性但又兼顧幀內(nèi)數(shù)據(jù)的透明性,可以采用“0比特插入法”來解決。該法在發(fā)送端監(jiān)視除標(biāo)志碼以外的所有字段,當(dāng)發(fā)現(xiàn)有連續(xù)5個“1”出現(xiàn)
數(shù)據(jù)鏈路層圖3-6
數(shù)據(jù)鏈路層圖3-6
時,便在其后添插一個“0”,然后繼續(xù)發(fā)后繼的比特流。在接收端,同樣監(jiān)除起始標(biāo)志碼以外的所有字段。當(dāng)連續(xù)發(fā)現(xiàn)5個“1”出現(xiàn)后,若其后一個比特“0”則自動刪除它,以恢復(fù)原來的比特流;若發(fā)現(xiàn)連續(xù)6個“1”,則可能是插入的“0”發(fā)生差錯變成的“1”,也可能是收到了幀的終止標(biāo)志碼。后兩種情況,可以進(jìn)一步通過幀中的幀檢驗序列來加以區(qū)分。“0比特插入法”原理簡單,很適合于硬件實現(xiàn)。 在面向比特的協(xié)議的幀格式中,有一個8比特的控制字段,可以用它以編碼方式定義豐富的控制命令和應(yīng)答,相當(dāng)于起到了BSC協(xié)議中眾多傳輸控制字符和轉(zhuǎn)義序列的功能。作為面向比特的數(shù)據(jù)鏈路控制協(xié)議的典型,HDLC具有如下特點:協(xié)議不依賴于任何一種字符編碼集;數(shù)據(jù)報文可透明傳輸,用于實現(xiàn)透明傳輸?shù)摹?/span>0比特插入法”易于硬件實現(xiàn);全雙工通信,不必等待確認(rèn)便可連續(xù)發(fā)送數(shù)據(jù),有較高的數(shù)據(jù)鏈路傳輸效率;所有幀均采用CRC校驗,對信息幀進(jìn)行編號,可紡止漏收或重份,傳輸可靠性高;傳輸控制功能與處理功能分離,具有較大靈活性和較完善的控制功能。由于以上特點,網(wǎng)絡(luò)設(shè)計普遍使用HDLC作為數(shù)據(jù)鏈路管制協(xié)議。
HDLC的操作方式
HDLC是通用的數(shù)據(jù)鏈路控制協(xié)議,當(dāng)開始建立數(shù)據(jù)鏈路時,允許選用特定的操作方式。所謂鏈路操作方式,通俗地講就是某站點以主站方式操作,還是以從站方式操作,或者是二者兼?zhèn)?。在鏈路上用于控制目的站稱為主站,其它的受主站控制的站稱為從站。主站負(fù)責(zé)對數(shù)據(jù)流進(jìn)行組織,半且對鏈路上的差錯實施恢復(fù)。由主站發(fā)往從站的幀稱為命令幀,而由由站返回主站的幀稱響應(yīng)幀。連有多個站點的鏈路通常使用輪詢技術(shù),輪詢其它站的站稱為主站,而在點到點燃鏈路中每個站均可為主站。主站需要比從站有更多的邏輯功能,所以當(dāng)終端與主機(jī)相連時,主機(jī)一般總是主站。在一個站連接多條鏈中的情況下,該站對于一些鏈路而言可能是主站,而對另外一些鏈路而言又可能是從站。有些可兼?zhèn)渲髡竞蛷恼镜墓δ?,這站稱為組合站,用于組合站之間信息傳輸?shù)膮f(xié)議是對稱的,即在鏈路上主、從站具有同樣的傳輸控制功能,這又稱作平衡操作,在計算機(jī)網(wǎng)絡(luò)中這是一個非常重要的概念。相對的,那種操作時有主站、從站之分的,且各自功能不同的操作,稱非平衡操作。
HDLC中常用的操作方式有以下三種:(1)正常響應(yīng)方式NRM是一種非平衡數(shù)據(jù)鏈路操作方式,有時也稱非平衡正常響應(yīng)方式。該操作方式適用于面向終端的點到點或一點與多點的鏈路。在這種操作方式,傳輸過程由主站啟動,從站只有收到主站某個命令幀后,才能作為響應(yīng)向主站傳輸信息。響應(yīng)信息可以由一個或多個幀組成,若信息 由多個幀組成,則應(yīng)指出哪一個是最后一幀。主站負(fù)責(zé)管理整個鏈路,且具有輪詢、選擇從站及向從站發(fā)送命令的權(quán)利,同時也負(fù)責(zé)對超時、重發(fā)及各類恢復(fù)
數(shù)據(jù)鏈路層圖3.7
數(shù)據(jù)鏈路層圖3.7
操作的控制。NRM操作方式見圖3.7(a)。(2)異步響應(yīng)方式ARM,異步響應(yīng)方式ARM也是一種非平衡數(shù)據(jù)鏈路操作方式,與NRM不同的是,ARM的傳輸過程由從站啟動。從站主動發(fā)送給主站的一個或一組幀中可包含有信息,也可以是僅以控制為目的而發(fā)的幀。在這種操作方式下,由從站來控制超時和重發(fā)。該方式對采用輪詢方式的多站蓮路來說是必不可少的。ARM操作方式見圖3.7(b)。(3)異步平衡方式ABM,異步平衡方式ABM是一種允許任何節(jié)點來啟動傳輸?shù)牟僮鞣绞?。為了提高鏈路傳輸效率,?jié)點之間在兩個方向上都需要的較高的信息傳輸量。在這種操作方式下任何時候任何站都能啟動傳輸操作,每個站既可作為主站又可作為從站,每個站都是組合站。各站都有相同的一組協(xié)議,任何站都可以發(fā)送或接收命令,也可以給出應(yīng)答,并且各站對差錯恢復(fù)過程都負(fù)有相同的責(zé)任。
HDLC的幀格式
在HDLC中,數(shù)據(jù)和控制報文均以幀的標(biāo)準(zhǔn)格式傳送。HDLC中的幀類似于BSC的字符塊,但BSC協(xié)議中的數(shù)據(jù)報文和控制報文是獨立傳輸?shù)?,?/span>HDLC中的命令應(yīng)以統(tǒng)一的格式按幀傳輸。HDLC的完整的幀由標(biāo)志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、幀校驗序列字段(FCS)等組成,其格式見圖3.8。
(1)標(biāo)志字段(F):標(biāo)志字段為01111110的比特模式,用以標(biāo)志幀的起始和前一幀的終止。標(biāo)志字段也可以作為幀與幀之間的填充字符。通常,在不進(jìn)行幀傳送的時刻,信道仍處于激活狀態(tài),在這種狀態(tài)下,發(fā)方不斷地發(fā)送標(biāo)志字段,便可認(rèn)為一個新的幀傳送已經(jīng)開始。采用“0比特插入法”可以實現(xiàn)0數(shù)據(jù)的透明傳輸。
(2)地址字段(A):地址字段的內(nèi)容取決于所采用的操作方式。在操作方式中,有主站、從站、組合站之分。每一個從站和組合站都被分配一個唯一的地址。命令幀中的地址字段攜帶的是對方站的地址,而響應(yīng)幀中的地址字段所攜帶的地址是本站的地址。某一地址也可分配給不止一個站,這種地址稱為組地址,利用一個組地址傳輸?shù)膸鼙唤M內(nèi)所有擁有該組一焉的站接收。但當(dāng)一個站或
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層
組合站發(fā)送響應(yīng)時,它仍應(yīng)當(dāng)用它唯一的地址。還可用全“1”地址來表示包含所有站的地址,稱為廣播地址,含有廣播地址的幀傳送給鏈路上所有的站。另外,還規(guī)定全“0”地址為無站地址,這種地址不分配給任何站,僅作作測試。
(3)控制字段(C):控制字段用于構(gòu)成各種命令和響應(yīng),以便對鏈路進(jìn)行監(jiān)視和控制。發(fā)送方主站或組合站利用控制字段來通知被尋址的從站或組合站執(zhí)行約定的操作;相反,從站用該字段作對命令的響應(yīng),報告已完成的操作或狀態(tài)的變化。該字段是HDLC的關(guān)鍵??刂谱侄沃械牡谝晃换虻谝?、第二位表示傳送幀的類型,HDLC中有信息幀(I幀)、監(jiān)控幀(S幀)和無編號幀(U幀)三種不同類型的幀??刂谱侄蔚牡谖逦皇?/span>P/F位,即輪詢/終止(Poll/Final)位。
(4)信息字段(I):信息字段可以是任意的二進(jìn)制比特串。比特串長度未作限定,其上限由FCS字段或通信站的緩沖器容量來決定,國際上用得較多的是1000~2000比特;而下限可以為0,即無信息字段。但是,監(jiān)控幀(S幀)中規(guī)定不可有信息字段。(5)幀校驗序列字段(FCS):幀校驗序列字段可以使用16位CRC,對兩個標(biāo)志字段之間的整個幀的內(nèi)容進(jìn)行校驗。FCS的生成多項式CCITT V4.1建議規(guī)定的X^16+X^12+X^5+1。
HDLC的幀類型
HDLC有信息幀(I幀)、監(jiān)控幀(S幀)和無編號幀(U幀)三種不同類型的幀。每一種幀中的控制字段的格式及比特定義見圖3.9。
(1)信息幀(I幀):信息幀用于傳送有效信息或數(shù)據(jù),通常簡稱I幀。I幀以控制字第一位為“0”來標(biāo)志。信息幀的控制字段中的N(S)用于存放發(fā)送幀序號,以使發(fā)送方不必等待確認(rèn)而連續(xù)發(fā)送多幀。N(R)用于存放接收方下一個預(yù)期要接收的幀的序號,N(R)=5,即表示接收方下一幀要接收5號幀,換言之,5號幀前的各幀接收到。N(S)和N(R)均為3位二進(jìn)制編碼,可取值0~7。
(2)監(jiān)控幀(S幀):監(jiān)控幀用于差錯控制和流量控制,通常簡稱S幀。S幀以控制字段第一、二位為“10”來標(biāo)志。S幀帶信息字段,只有6個字節(jié)即48個比特。S幀的控制字段的第三、四位為S幀類型編碼,共有四種不同編碼,分別表示:
00——接收就緒(RR),由主站或從站發(fā)送。主站可以使用RR型S幀來輪詢從站,即希望從站傳輸編號為N(R)的I幀,若存在這樣的幀,便進(jìn)行傳輸;從站也可用RR型S幀來作響應(yīng),表示從站希望從主站那里接收的下一個I幀的編號是N(R)。
01——拒絕(REJ),由主站或從站發(fā)送,用以要求發(fā)送方對從編號為N(R)開始的幀及其以后所有的幀進(jìn)行重發(fā),這也暗示N(R)以前的I幀已被正確接收。
10——接收未就緒(RNR),表示編號小于N(R)的I幀已被收到,但正處于忙狀態(tài),尚未準(zhǔn)備好接收編號為N(R)的I幀,這可用來對鏈路流量進(jìn)行控制。
數(shù)據(jù)鏈路層圖3.9
數(shù)據(jù)鏈路層圖3.9
11——選擇拒絕(SREJ),它要求發(fā)送方發(fā)送編號為N(R)單個I幀,并暗示它編號的I幀已全部確認(rèn)。
可以看出,接收就緒RR型S幀和接收未就緒RNR型S幀有兩個主要功能:首先,這兩種類型的S幀用來表示從站已準(zhǔn)備好或未準(zhǔn)備好接收信息;其次,確認(rèn)編號小于N(R)的所有接收到的I幀。拒絕REJ和選擇拒絕SREJ型S幀,用于向?qū)Ψ秸局赋霭l(fā)生了差錯。REJ幀用于GO-back-N策略,用以請求重發(fā)N(R)以前的幀已被確認(rèn),當(dāng)收到一個N(S)等于REJ型S幀的N(R)的I幀后,REJ狀態(tài)即可清除。SREJ幀用于選擇重發(fā)策略,當(dāng)收到一個N(S)等SREJ幀的N(R)的I幀時,SREJ狀態(tài)即應(yīng)消除。
(3)無編號幀(U幀):無編號幀因其控制字段中不包含編號N(S)和N(R)而得名,簡稱U幀。U幀用于提供對鏈路的建立、拆除以及多種控制功能,這些控制功能5個M位(M1、M2、M3、M4、M5,也稱修正位)來定義。5個M位可以定義32種附加的命令功能或32種應(yīng)答功能,但許多是空缺的。[3]
比較
適用場合
就系統(tǒng)結(jié)構(gòu)而言,HDLC適用于點到點或點到多點式的結(jié)構(gòu),BSC同樣也能適用于這些結(jié)構(gòu);就工作方式而方,HDLC適用于半雙工或全雙工,而BSC則更適用于半雙工方式(也可擴(kuò)充為全雙工);就傳輸方式而言,BSC和HDLC兩者都只用于同步傳輸。在傳輸速率方面,BSC和HDLC雖然都沒有限制,但由于它們各自的特點所定,通常BSC用于低、中速傳輸,而HDLC則常用于中、高速傳輸。
傳輸效率
HDLC開始發(fā)送一幀后,就要連續(xù)不斷地發(fā)完該幀,而BSC的同一數(shù)據(jù)塊中的
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層
不同字符之間可能有時間間隔,這些間隔用SYN字符填充。HDLC可以同時確認(rèn)幾個幀,而BSC則在發(fā)完一數(shù)據(jù)塊后必須要等待確認(rèn)(即“停一等”方式)。HDLC中的每個幀都含有地址字段A,在多點結(jié)構(gòu)中,每個從站只接收含有本站地址的幀,因此,主站在選中一個從站并與之通信的同時,不用拆鏈,便可選擇其它的站通信,即同時與多個站建立鏈路。而在BSC中,從建鏈開始,兩站之間的鏈路通道就一直保持到傳輸結(jié)束為止。由于以上特點,HDLC的傳輸效率高于BSC的傳輸效率。
傳輸可靠性
HDLC中所有的幀(包括響應(yīng)幀)都有FCS,在BSC的監(jiān)控報文中只有字符校驗?zāi)芰Χ鵁o塊校驗?zāi)芰Α?/span>HDLC中的I幀按窗口序號順序編號,BSC的數(shù)據(jù)塊不編號。由于以上特點,HDLD的傳輸可靠性比BSC高。
數(shù)據(jù)透明性
HDLC采用“0比特插入法”對數(shù)據(jù)實現(xiàn)透明傳輸,傳輸信息的比特組合模式無任何限制。BSC用DLE字符填充法來實現(xiàn)透明傳輸,依賴于采用的字符編碼集,且處理復(fù)雜。
信息傳輸格式
HDLC采用統(tǒng)一的幀格式來實現(xiàn)數(shù)據(jù)、命令、響應(yīng)的傳輸,實施起來方便。而BSC的格式不統(tǒng)一,數(shù)據(jù)傳送、正反向監(jiān)控各規(guī)定了一套格式,給實施帶來了不便
鏈路控制
HDLC利用改變一幀中的控制字段的編碼模式來完成各種規(guī)定的鏈路操作功能,提供的是面向比特的傳輸功能。BSC則是通過改變控制字符來完成鏈路操作功能,提供的是面向字符的傳輸功能。
分類
數(shù)據(jù)鏈路層包含 LLC邏輯鏈路層子層 和MAC介質(zhì)訪問控制子層 兩個子層
邏輯控制子層
數(shù)據(jù)鏈路層的LLC子層用于設(shè)備間單個連接的錯誤控制,流量控制。
與MAC層不同,LLC和物理媒介全無關(guān)系。媒介是CSMA/CD的802.3還是802.5的令牌環(huán)都沒關(guān)系。它在LAN中是獨立的802.2。在LLC之上的網(wǎng)絡(luò)層可以是無連接、響應(yīng)的無連接或面向連接的不同業(yè)務(wù)。
LLC用業(yè)務(wù)接入點SAP訪問上層協(xié)議,有了SAP,站點就能在LLC層只用一個接口同時與幾個高層協(xié)議玩。一個SAP是簡單的地址或協(xié)議ID,內(nèi)容則為空的LLC幀。LLC協(xié)議數(shù)據(jù)單元(LLCPDU)即LPDU。它包括:DSAP(目的SAP)/SSAP(源SAP);一個定義吞吐量優(yōu)先級的控制域(Controlfield);和含帶數(shù)據(jù)的信息域。在接收方,DSAP例如協(xié)議ID就是消息要被遞送的,通常DSAP和SSAP是一樣的,因為兩端只有在同種協(xié)議間才能通信。例如當(dāng)SAP為AA,代表SNAP(子層接入?yún)f(xié)議)。SNAP是個非標(biāo)準(zhǔn)化的,或廠商特定的協(xié)議,用于接入?yún)f(xié)議的業(yè)務(wù)。例如當(dāng)SAP為06,則代表IP協(xié)議;當(dāng)SAP為FO,代表NetBIOS(網(wǎng)絡(luò)基本輸入/輸出協(xié)議)。SAP為FF表示廣播的Global協(xié)議。
SNAP機(jī)制
規(guī)范種DSAP都只有一個字節(jié),那不足夠區(qū)分所有協(xié)議了。SNAP就來了,而且它支持在LLC幀上傳廠商的協(xié)議。這樣傳遞的協(xié)議就被放入所謂SNAP幀中了。SNAP”ㄍ酚形遄紙冢前三字節(jié)為廠商號,后兩字節(jié)指示協(xié)議。
以太網(wǎng)有兩種版本:IEEE(802.2、802.3); DIX(DEC、Intel、Xerox)又稱V2以太網(wǎng)。
DIX幀在源地址之后是兩字節(jié)的Type,例如IP。
IEEE以太網(wǎng)幀,在源地址后是幀長度指示,在隨后的數(shù)據(jù)域中才是標(biāo)準(zhǔn)的LPDU封裝,包括DSAP/SSAP/控制域/Data。在這個Data中會有協(xié)議ID、以太類型指示,例如以太類型806表示地址解析協(xié)議ARP。以太網(wǎng)卡通過跳針或軟件可以設(shè)置需要的以太網(wǎng)版本,DIX通常都設(shè)的,因為大約90%的網(wǎng)絡(luò)都用此版本。請注意網(wǎng)絡(luò)所有要通信的站點應(yīng)設(shè)成相同版本。
介質(zhì)訪問層
介質(zhì)訪問控制是解決當(dāng)局域網(wǎng)中共用信道的使用產(chǎn)生競爭時,如何分配信道的使用權(quán)問題。
邏輯鏈路 Logical Links
Logical Links 邏輯鏈路邏輯鏈路是實際電路或邏輯電路上交換通信信息的兩個端系統(tǒng)之間的一種協(xié)議驅(qū)動通信會話。協(xié)議棧定義了兩個系統(tǒng)在某種介質(zhì)上的通信。在協(xié)議棧低層定義可用的多種不同類型的通信協(xié)議,如局域網(wǎng)絡(luò)(LAN)、城域網(wǎng)(MAN)和象X.25或幀中繼這樣的分組交換網(wǎng)絡(luò)。邏輯鏈路在物理鏈路(可以是銅線、光纖或其他介質(zhì))上的兩個通信系統(tǒng)之間形成。根據(jù)OSI協(xié)議模型,這些邏輯鏈路只在物理層以上存在。你可以認(rèn)為邏輯鏈路是存在于網(wǎng)絡(luò)兩個末斷系統(tǒng)間的線路。
面向連接的服務(wù) 為了保證可靠的通信,需要建立邏輯線路,但在兩個端系統(tǒng)間要維持會話。
面向需要應(yīng)答連接的服務(wù) 分組傳輸并有返回信號的邏輯線路。這種服務(wù)產(chǎn)生更大的開銷,但更加可靠。
無應(yīng)答不連接服務(wù) 無需應(yīng)答和預(yù)先的傳送。在端系統(tǒng)間沒有會話。
OSI協(xié)議棧中的數(shù)據(jù)鏈路層可進(jìn)一步細(xì)分為較低的介質(zhì)訪問控制(MAC)子層和較高的邏輯鏈路控制(LLC)子層。當(dāng)它接收到一個分組后,它從MAC子層向上傳送。如果有多個網(wǎng)絡(luò)和設(shè)備相連,LLC層可能將分組送給另一個網(wǎng)絡(luò)。例如,在一個NetWare服務(wù)器上,你可能既安裝了以太網(wǎng)絡(luò)適配器又安裝了令牌網(wǎng)絡(luò)適配器,NetWare自動地在連接到適配器的網(wǎng)絡(luò)間橋接,這樣原來在以太網(wǎng)上的分組就可以傳送到令牌網(wǎng)上的目的地了,LLC層就象網(wǎng)絡(luò)段間的交換或鏈路中繼,它將以太網(wǎng)的幀重裝成令牌環(huán)網(wǎng)的幀。
數(shù)據(jù)鏈路層
Uu接口為UE(User Equipment)與
UU口協(xié)議結(jié)構(gòu)
UU口協(xié)議結(jié)構(gòu)
UTRAN(UMTS Terrestrial Radio Access Network)之
間的接口,是UMTS系統(tǒng)的空中接口,也是最重要的接口。Uu接口可分為三個協(xié)議層:物理層(L1)、數(shù)據(jù)鏈路層(L2)和網(wǎng)絡(luò)層(L3)。
L2包括MAC、RLC、PDCP、BMC四個子層,各部分實現(xiàn)功能不同
MAC(媒體接入控制)
MAC(Medium Access Control)子層主要功能是調(diào)度,把邏輯信道映射到傳輸信道,負(fù)責(zé)根據(jù)邏輯信道的瞬時源速率為各個傳輸信道選擇適當(dāng)?shù)膫鬏敻袷剑?/span>TF,Transport Format)。MAC層主要有3類邏輯實體,第一類是MAC-b,負(fù)責(zé)處理廣播信道數(shù)據(jù);第二類是MAC-c,負(fù)責(zé)處理公共信道數(shù)據(jù);第三類是MAC-d,負(fù)責(zé)處理專用信道數(shù)據(jù)。
MAC子層功能包括:
邏輯信道和傳輸信道之間的映射;
為每個傳輸信道選擇適當(dāng)?shù)膫魉透袷剑?/span>
UE數(shù)據(jù)流之間的優(yōu)先級處理;
UE之間采用動態(tài)預(yù)調(diào)度方法的優(yōu)先級處理;
FACH上幾個用戶的數(shù)據(jù)流之間的優(yōu)先級處理;
公共傳輸信道上UE的標(biāo)識;
將高層PDU復(fù)接為通過傳輸信道傳送給物理層的傳送塊,并將來自物理層的傳送塊復(fù)接
為高層PDU;
業(yè)務(wù)量檢測;
動態(tài)傳輸信道類型切換;
透明RLC加密;
接入業(yè)務(wù)級別選擇。
RLC(無線鏈路控制)
RLC(Radio Link Control)子層不僅承載控制面的數(shù)據(jù),而且也承載用戶面的數(shù)據(jù)。RLC子層有三種工作模式,分別是透明模式(TM,Transparent Mode)、非確認(rèn)模式(UM,Unacknowledged Mode)和確認(rèn)模式(AM,Acknowledged Mode),針對不同的業(yè)務(wù)采用不同的模式。
RLC子層功能包括:
數(shù)據(jù)的分割和重組,串聯(lián),填充,用戶數(shù)據(jù)的傳送;
錯誤檢測,按序發(fā)送高層PDU,副本檢測;
流量控制;
非證實數(shù)據(jù)傳送模式序號檢查;
協(xié)議錯誤檢測和恢復(fù);
加密;
掛起和恢復(fù)功能。
BMC(廣播/組播控制)
BMC(廣播/組播控制)Broadcast/MulticastControl protocol)負(fù)責(zé)控制多播/組播業(yè)務(wù)。
BMC子層功能包括:
小區(qū)廣播消息的存儲;
業(yè)務(wù)量監(jiān)測和為CBS請求無線資源;
BMC消息的調(diào)度;
向UE發(fā)送BMC消息;
向高層(NAS)傳遞小區(qū)廣播消息。
PDCP(分組數(shù)據(jù)匯聚協(xié)議)
PDCP(分組數(shù)據(jù)匯聚協(xié)議,PacketData Converge Protocol )負(fù)責(zé)對IP包的報頭進(jìn)行壓縮和解壓縮,以提高空中接口無線資源的利用率。
PDCP子層功能包括:
在發(fā)送與接收實體中分別執(zhí)行IP數(shù)據(jù)流的頭部壓縮與解壓縮;
傳輸用戶數(shù)據(jù);
將非接入層送來的PDCP-SDU轉(zhuǎn)發(fā)到RLC層,將多個不同的RB復(fù)用到同一個RLC實
體。
后來為解決EthernetII與802.3幀的兼容問題推出的Ethernet SNAP格式。
常用的數(shù)據(jù)鏈路層
TCP/IP支持多種不同的數(shù)據(jù)鏈路層協(xié)議,這取決于網(wǎng)絡(luò)使用的硬件,如以太網(wǎng)、令牌環(huán)、FDDI等局域網(wǎng),串行線路、X.25、幀中繼FR、ATM等廣域網(wǎng)。
早期,由于各網(wǎng)絡(luò)公司的競爭,局域網(wǎng)沒有形成統(tǒng)一標(biāo)準(zhǔn),為了將各種局域網(wǎng)融合,將鏈路層拆分成兩層,邏輯鏈路層(LLC)和媒體接入控制(MAC)(802.3封裝:SAP),
90年代,以太網(wǎng)取得壟斷地位,以太網(wǎng)成為局域網(wǎng)代名詞。數(shù)據(jù)鏈路層僅需要MAC層,采用以太網(wǎng)幀格式(Ethernet V2封裝:ARPA)。
|