第4章 點對點信道的數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層屬于計算機網(wǎng)絡(luò)的低層,它所包含的內(nèi)容較為豐富,因此,我們將這些內(nèi)容分散在以下兩章來討論。 使用點對點信道的數(shù)據(jù)鏈路層。這是本章的內(nèi)容。 使用廣播信道的數(shù)據(jù)鏈路層。這是第5章局域網(wǎng)的內(nèi)容。 本章重點介紹數(shù)據(jù)鏈路層的基本概念和因特網(wǎng)中的數(shù)據(jù)鏈路層協(xié)議PPP。 4.1 數(shù)據(jù)鏈路層的基本概念4.1.1 數(shù)據(jù)鏈路層的簡單模型下面討論兩個主機通過互聯(lián)網(wǎng)進(jìn)行通信時數(shù)據(jù)鏈路層所處的地位。如圖4-1所示。 圖4-1(a)表示用戶主機H1通過電話線上網(wǎng),中間經(jīng)過3個路由器(R1,R2和R3)接入到遠(yuǎn)程主機H2。所經(jīng)過的網(wǎng)絡(luò)可以上多種的,如電話網(wǎng)、局域網(wǎng)和廣域網(wǎng)。當(dāng)主機H1向主機H2發(fā)送數(shù)據(jù)時,從協(xié)議的層次上看,數(shù)據(jù)的流動如圖4—1(b)所示。主機H1和主機H2都有完整的五層協(xié)議棧,但在互聯(lián)網(wǎng)的核心部分的路由器的協(xié)議棧只有下面的3層。數(shù)據(jù)進(jìn)入路由器后要先從物理層E到網(wǎng)絡(luò)層,在轉(zhuǎn)發(fā)表中找到下一跳的地址后,再下到物理轉(zhuǎn)發(fā)出去。因此,數(shù)據(jù)從主機H,傳送到主機H2需要在路徑中的各結(jié)點的協(xié)議棧向上和向下流動多次,如圖中的雙向淺灰色箭頭所示。 然而,當(dāng)我們專門研究數(shù)據(jù)鏈路層的問題時,在許多情況下我們只關(guān)心在協(xié)議棧中水平方向的各數(shù)據(jù)鏈路層。于是,當(dāng)主機H1向主機H2發(fā)送數(shù)據(jù)時,我們可以想像數(shù)據(jù)就是在數(shù)據(jù)鏈路層從左向右沿水平方向傳送,如圖4.2中從左到右的粗箭頭所示,即通過以下這樣的鏈路: H1的鏈路層→Rl的鏈路層→R2的鏈路層→R3的鏈路層→H2的鏈路層
下面再討論一下有關(guān)數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元——幀。 數(shù)據(jù)鏈路層的任務(wù)就是把網(wǎng)絡(luò)層交下來的數(shù)據(jù)發(fā)送到鏈路上,以及把接收到的幀中的數(shù)據(jù)取出并上交給網(wǎng)絡(luò)層。在因特網(wǎng)中,網(wǎng)絡(luò)層協(xié)議數(shù)據(jù)單元就是IP數(shù)據(jù)報(或簡稱為數(shù)據(jù)報、分組或包)。 當(dāng)兩個主機進(jìn)行通信時,應(yīng)用進(jìn)程要把數(shù)據(jù)從應(yīng)用層逐層往下傳,經(jīng)過運輸層再到網(wǎng)絡(luò)層,組成了IP數(shù)據(jù)報,再往下傳到數(shù)據(jù)鏈路層組成幀,然后經(jīng)物理層形成比特流進(jìn)入通信網(wǎng)絡(luò)。數(shù)據(jù)傳輸?shù)穆窂娇赡苡性S多路由器。每一個路由器的物理層在收到比特流后,先由數(shù)據(jù)鏈路層從比特流中找出幀,再從幀中提取出IP數(shù)據(jù)報。路由器在轉(zhuǎn)發(fā)IP數(shù)據(jù)報時要查看IP數(shù)據(jù)報的首部。在找出轉(zhuǎn)發(fā)路由后,又再把IP數(shù)據(jù)報封裝成另一個新的幀,然后交給物理層發(fā)送給下一個路由器。用這樣的方式,經(jīng)過許多路由器的轉(zhuǎn)發(fā),數(shù)據(jù)最后到達(dá)了目的主機的物理層。以后由目的主機的數(shù)據(jù)鏈路層提取出IP數(shù)據(jù)報,再逐層向上傳,最后由應(yīng)用層交給遠(yuǎn)程的應(yīng)用進(jìn)程。 現(xiàn)在,為了把主要精力放在數(shù)據(jù)鏈路層的協(xié)議上,可以采用如圖4-3(a)所示的3層模型。 在這種3層模型中,不管在哪一段鏈路上的通信(主機和路由器之間或兩個路由器之間),我們都看成是結(jié)點和結(jié)點的通信(如圖中的結(jié)點A和結(jié)點B),而每個結(jié)點只有3層——網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。 數(shù)據(jù)鏈路層最主要的功能可歸結(jié)為以下幾點。 (1)結(jié)點A的數(shù)據(jù)鏈路層把網(wǎng)絡(luò)層交下來的IP數(shù)據(jù)報封裝成幀。 (2)結(jié)點A把封裝好的幀發(fā)送給結(jié)點B的數(shù)據(jù)鏈路層。
我們還應(yīng)注意到,數(shù)據(jù)鏈路層不必考慮物理層以下的所有通信細(xì)節(jié)。這時,我們甚至還可以使用如圖4-3(b)所示的更為簡單的模型,即設(shè)想好像是沿著兩個數(shù)據(jù)鏈路層之間的水平方向把幀直接發(fā)送到對方。使用這種簡單的模型有利于我們集中精力討論數(shù)據(jù)鏈路層自身的重要問題。 4.1.2鏈路和數(shù)據(jù)鏈路我們已多次使用過“鏈路”和“數(shù)據(jù)鏈路”這兩個術(shù)語。這里要強調(diào)下,“鏈路”和“數(shù)據(jù)鏈路”并不是一回事。 所謂鏈路(1ink)就是從一個結(jié)點到相鄰結(jié)點的一段物理線路,而中間沒有任何其他的交換結(jié)點。在進(jìn)行數(shù)據(jù)通信時,兩個計算機之間的通信路徑往往要經(jīng)過許多段這樣的鏈路??梢姡溌分皇且粭l路徑的組成部分。 數(shù)據(jù)鏈路(data link)則是另一個概念。這是因為當(dāng)需要在…條線路上傳送數(shù)據(jù)時,除了必須有一條物理線路外,還必須有一些必要的通信協(xié)議來控制這些數(shù)據(jù)的傳輸(這將在后面幾節(jié)討論)。若把實現(xiàn)這些協(xié)議的硬件和軟件加到鏈路上,就構(gòu)成了數(shù)據(jù)鏈路?,F(xiàn)在,最常用的方法是使用網(wǎng)絡(luò)適配器(撥號上網(wǎng)使用撥號適配器,通過以太網(wǎng)上網(wǎng)使用局域網(wǎng)適配器)來實現(xiàn)這些協(xié)議的硬件和軟件。一般的適配器都包括了數(shù)據(jù)鏈路層和物理層這兩層的功能。 也有人采用另外的術(shù)語。這就是把鏈路分為物理鏈路和邏輯鏈路。物理鏈路就是上面所說的鏈路,而邏輯鏈路就是上面的數(shù)據(jù)鏈路,是物理鏈路加上必要的通信協(xié)議。這兩種劃分方法實質(zhì)上是一樣的。 早期的數(shù)據(jù)通信協(xié)議曾叫做通信規(guī)程(procedure)。因此,在數(shù)據(jù)鏈路層,規(guī)程和協(xié)議是同義語。 下面我們討論數(shù)據(jù)鏈路層的二三個基本問題。 4.2 三個基本問題數(shù)據(jù)鏈路層協(xié)議有許多種,但有三個基本問題則是共同的。 1.?dāng)?shù)據(jù)鏈路層的發(fā)送方應(yīng)當(dāng)讓接收方的數(shù)據(jù)鏈路層知道,所發(fā)送的幀是從什么地方開始到從什么地方結(jié)束。這就是幀定界問題。 2.?dāng)?shù)據(jù)鏈路層傳送的數(shù)據(jù)的比特組合必須是不受限制的。數(shù)據(jù)鏈路層協(xié)議不能禁止傳送某種特殊的比特組合。這就是透明傳輸問題。 3.?dāng)?shù)據(jù)鏈路層必須有差錯檢測功能。 下面分別討論這三個基本問題。
4.2.1 幀定界幀定界(framing)就是確定幀的界限。在發(fā)送幀時,發(fā)送方的數(shù)據(jù)鏈路層在幀的前后都各加入事先商定好的標(biāo)記,使得接收方在收到這個幀后,就能根據(jù)這種標(biāo)記識別幀的開始和結(jié)束,以及幀里面裝入的數(shù)據(jù)部分的準(zhǔn)確位置。圖4—4表示用幀首部和幀尾部進(jìn)行幀定界的一般概念。網(wǎng)絡(luò)層的1P數(shù)據(jù)報傳送到數(shù)據(jù)鏈路層就成為幀的數(shù)據(jù)部分。在幀的數(shù)據(jù)部分的前面和后面分別添加上首部和尾部,構(gòu)成了一個完整的幀。因此,幀長等于數(shù)據(jù)部分的長度加上幀首部和幀尾部的長度。首部和尾部的主要作用是進(jìn)行幀定界,但還可以包括一些其他的控制信息。在發(fā)送幀時,是從幀首部開始發(fā)送。各種數(shù)據(jù)鏈路層協(xié)議都要對幀首部和幀尾部的格式有非常明確的規(guī)定。顯然,為了提高幀傳送效率,應(yīng)當(dāng)使幀的數(shù)據(jù)部分長度盡可能地大于首部和尾部的長度。但是,每一種鏈路層協(xié)議都規(guī)定了幀的數(shù)據(jù)部分的長度上限――最大傳送單元MTU(Maximum Transfer Unit)。圖4.4給出了為幀定界用的首部和尾部的位置,以及幀的數(shù)據(jù)部分與MTU的關(guān)系。 當(dāng)數(shù)據(jù)是由可打印的ASCⅡ碼組成的文本文件時,幀定界可以使用特殊的幀定界符。我們知道,ASCⅡ碼是7位編碼,一共可組合成128個不同的ASCII碼,其中可打印的有95個,而不可打印的控制字符有33個。如圖4.5所示的例子可說明幀定界的概念??刂谱址?/span>SOH(Start Of Header)放在一幀的最前面,表示幀的首部開始。另一個控制字符EOT (End Of Transmission)表示幀的結(jié)束。請注意,SOH和EOT分別是這兩個控制字符的名稱。字符SOH和字符EOT的十六進(jìn)制編碼分別是01和04。不要誤認(rèn)為SOH(或EOT)是S、O、H(或E、O、T)三個字符。 對幀進(jìn)行定界是非常必要的??赡苡械淖x者會這樣想:既然發(fā)送方發(fā)送的數(shù)據(jù)是以幀為單位,那么,在接收方就可以從收到的數(shù)據(jù)很自然地找出幀的長度范圍。但是,我們必須考慮到,數(shù)據(jù)在物理層的實際傳送方式可能是多樣的。例如,在物理層常常采用異步傳送,即一次只傳送一個字符(如使用RS.232接口)。因此,在接收方的物理層是斷斷續(xù)續(xù)地接收到單個的數(shù)據(jù)字符(每個字符之間相隔的時間并不確定),而不是一次就收到一個完整的幀。但有了幀定界的控制字符,接收方就可以準(zhǔn)確界定一個幀開始和結(jié)束的位置。. 在同步傳輸?shù)那闆r下,發(fā)送方是連續(xù)地發(fā)送數(shù)據(jù)幀。在接收方怎樣從連續(xù)的比特流中找出每一個幀開始和結(jié)束的位置呢 這還要借助于幀定界的特殊標(biāo)記。 再看一種情況。假定發(fā)送方在尚未發(fā)送完一個幀時突然出現(xiàn)故障,但隨后很快又恢復(fù)正常,于是,重新發(fā)送剛才未發(fā)送完的幀(當(dāng)然必須從頭開始發(fā)送)。由于使用了幀定界符,在接收方就知道前面收到的數(shù)據(jù)是個不完整的幀(只有首部開始符SOH,而沒有傳輸結(jié)束符EOT),必須丟棄。而后面收到的數(shù)據(jù)有明確的幀定界符(SOH和EOT),因此,這是一個完整的幀,應(yīng)當(dāng)收下。
4.2.2 透明傳輸由于幀的開始和結(jié)束的標(biāo)記是使用專門指明的控制字符,因此,所傳輸?shù)臄?shù)據(jù)中的任何一個字符一定不允許和用做幀定界的控制字符一樣,否則就會出現(xiàn)幀定界的錯誤。 當(dāng)傳送的幀是用文本文件組成的幀時(文本文件中的字符都是從鍵盤上輸入的),其數(shù)據(jù)部分顯然不會出現(xiàn)像SOH或EOT這樣的幀定界控制字符??梢?,不管從鍵盤上輸入什么字符都可以放在這樣的幀中傳輸過去,因此這樣的傳輸就是透明傳輸。 但當(dāng)數(shù)據(jù)部分是非ASCII碼的文本文件時(如二進(jìn)制代碼的計算機程序或圖像等),情況就不同了。如果數(shù)據(jù)中的某個字節(jié)的二進(jìn)制代碼恰好和SOH或EOT這種控制字符一樣,如圖4—6所示,數(shù)據(jù)鏈路層就會錯誤地“找到幀的邊界”,把部分幀收下(誤認(rèn)為是個完整的幀),而把剩下的那部分?jǐn)?shù)據(jù)丟棄(這部分找不到幀定界控制字符SOH)。
為了解決透明傳輸問題,就必須設(shè)法使數(shù)據(jù)中可能出現(xiàn)的控制字符“SOH”和“EOT”在接收方不被解釋為控制字符。具體的方法是每當(dāng)在數(shù)據(jù)中出現(xiàn)字符“SOH”或“EOT”時就將其轉(zhuǎn)換為另一個字符,而這個字符是不會被錯誤解釋為控制字符的。這種方法稱為字節(jié)插入。例如,可以采用如下的約定(顯然可以有多種不同的約定): 上面的控制字符“ESC”叫做轉(zhuǎn)義符(escape character),在標(biāo)準(zhǔn)鍵盤的左上角,它的十六進(jìn)制編碼是1 B。為什么對數(shù)據(jù)中出現(xiàn)的“ESC”也必須進(jìn)行轉(zhuǎn)換呢 本來控制字符ESC并不會和幀定界標(biāo)記弄混。但由于我們把SOH和EOT都轉(zhuǎn)換為由ESC開始的兩個字符,因此,如果不對數(shù)據(jù)中出現(xiàn)的ESC進(jìn)行處理,那么,當(dāng)數(shù)據(jù)中碰巧出現(xiàn)“ESC x”或“EOT y”這樣的兩字符組合時,在接收方就會被錯誤地還原為字符SOH或EOT。把ESC轉(zhuǎn)換為兩字符組合ESC z就可以避免出現(xiàn)這樣的情況。圖4—7表示在數(shù)據(jù)中碰巧出現(xiàn)了4個控制字符“ESC”、“EOT”、“ESC”和“SOH”。 可以看出,按以上規(guī)則轉(zhuǎn)換后所發(fā)送的數(shù)據(jù)已經(jīng)不再出現(xiàn)對幀定界的控制字符SOH和EOT了。在接收方,只要進(jìn)行相應(yīng)的逆變換就可以很方便地還原出原來的數(shù)據(jù)。使用這種字節(jié)插入法就可實現(xiàn)透明傳輸。 在4. 3. 2節(jié)我們還要介紹另一種實現(xiàn)透明傳輸?shù)姆椒ā忍夭迦搿?/span>
4.2.3差錯檢測現(xiàn)實的通信鏈路都不會是理想的,這就是說,比特在傳輸過程中可能會產(chǎn)生差錯:1變成了0或0變成了1。在一定的時間內(nèi),傳輸錯誤的比特占所傳輸?shù)谋忍乜倲?shù)的比率稱為誤碼率BER(Bit Error Rate)。例如,誤碼率為10-10時,表示平均每傳送1010個比特就會出現(xiàn)一個比特的差錯。誤碼率與信噪比有很大的關(guān)系。如果設(shè)法提高信噪比,就可以使誤碼率減小。由于實際的通信鏈路并非理想的,它不可能使誤碼率下降到零。因此,為了保證數(shù)據(jù)傳輸?shù)目煽啃?,在計算機網(wǎng)絡(luò)傳輸數(shù)據(jù)時,都必須采用各種差錯檢測措施。在數(shù)據(jù)鏈路層廣泛使用了循環(huán)冗余檢驗CRC(cyclic Redundancy check)的檢錯技術(shù)。 下面我們通過一個簡單的例子來說明循環(huán)冗余檢驗的原理。 在發(fā)送方,設(shè)待傳送的數(shù)據(jù)M=101001(共k位,這里k=6)。在數(shù)據(jù)M的后面添加供差錯檢測用的n位冗余碼一起發(fā)送(即一共發(fā)送k+n位)。在所要發(fā)送的數(shù)據(jù)后面增加n位的冗余碼,雖然增大了數(shù)據(jù)傳輸?shù)拈_銷,但卻可以進(jìn)行差錯檢測。當(dāng)傳輸可能出現(xiàn)差錯時,付出這種代價是必須的。 這n位冗余碼可用以下方法得出。先用二進(jìn)制的模2運算進(jìn)行2n乘M的運算,這相當(dāng)于在M后面添加n個0。得到的(k+n)位的數(shù)除以收發(fā)雙方事先商定的長度為(n+1)位的數(shù)P,得出商是p而余數(shù)是R(n位)。至于P是怎樣選定的,下面還要介紹。在圖4—8所示的例子中,設(shè)n=3,除數(shù)P=1101。經(jīng)模2除法運算后的結(jié)果是:商Q=110101,而余數(shù)R=001(n位)。這個余數(shù)R就作為冗余碼添加在數(shù)據(jù)M的后面發(fā)送出去。這種為了進(jìn)行檢錯而添加的冗余碼常稱為幀檢驗序列FCS(Frame Check Sequence)。因此,加上FCS后發(fā)送的數(shù)據(jù)是101001001(即2nM+FCS),共有(k+n )位。 順便說一下,循環(huán)冗余檢驗CRC和幀檢驗序列FCS并不是同一個概念。CRC是一種檢錯方法,而FCS是添加在數(shù)據(jù)后面的冗余碼,在檢錯方法上可以選用CRC,但也可不選用CRC。
在接收方對接收到的幀進(jìn)行CRC檢驗。把收到的幀除以同樣的P(模2運算),得出余數(shù)R。如果數(shù)據(jù)在傳輸過程中沒有差錯,則得出的余數(shù)顯然應(yīng)為0(讀者可自己進(jìn)行這樣的運算。被除數(shù)現(xiàn)在是101001001,而除數(shù)是P=1101,看余數(shù)是否為0)。若數(shù)據(jù)在傳輸過程中出現(xiàn)誤碼,則得不出余數(shù)為0的結(jié)果?;蛘吒鼑?yán)格地講,這時得出余數(shù)為0的概率極小。實際上只要經(jīng)過仔細(xì)的挑選,并使用位數(shù)足夠多的除數(shù)P,那么,出現(xiàn)CRC檢測不到的差錯概率就可忽略不計。 總之,在接收方經(jīng)過CRC檢驗后, ·若得出的余數(shù)R=0,則認(rèn)為這個幀沒有差錯,就接受(accept)這個幀。 ·若余數(shù)R≠0,則認(rèn)為這個幀有差錯(當(dāng)然無法確定究竟是哪一位或哪幾位出現(xiàn)了差錯),就丟棄這個幀。 一種較方便的方法是用多項式來表示循環(huán)冗余檢驗過程,就是使用多項式相應(yīng)的系數(shù)來表示上述二進(jìn)制數(shù)字中的1和0。例如,可以用多項式P(X)=X3+X2+X+1來表示上面的除數(shù)P=1101(最高位對應(yīng)于X3,最低位對應(yīng)于X)。多項式P(X)稱為生成多項式?,F(xiàn)在廣泛使用的生成多項式P(X)有以下幾種: CRC-16= X16+X15+X2+1 CRC-CCITT= X16+X15+X5+1 CRC-32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1 在數(shù)據(jù)鏈路層,在發(fā)送方幀檢驗序列FCS的生成和在接收方的CRC撿驗都是用硬件完成的,處理很迅速,因此并不會延誤數(shù)據(jù)的傳輸。 最后再強調(diào)一下,循環(huán)冗余檢驗CRC差錯檢測技術(shù)只能做到無差錯接受,即:“凡是接收方數(shù)據(jù)鏈路層接受的幀,我們都能以非常接近于1的概率認(rèn)為這些幀在傳輸過程中沒有產(chǎn)生差錯”(請注意,接收方丟棄的幀雖然曾被暫時接收下來,但最終沒有被接受),或更簡單些,可以近似地認(rèn)為:“凡是接收方數(shù)據(jù)鏈路層接受的幀均無傳輸差錯”。 請注意,采用CRC差錯檢測技術(shù)后,我們并沒有使數(shù)據(jù)鏈路層變成具有“可靠傳輸”的功能。所謂“可靠傳輸”就是發(fā)送方發(fā)送什么,接收方就收到什么。也就是說,接收方接受的幀應(yīng)當(dāng)是無差錯、無丟失、無重復(fù),同時還按發(fā)送的順序接收。例如,發(fā)送方發(fā)送了100個幀。到達(dá)接收方后,能通過CRC檢查的只有一個。那么,接收方就只接受這一個傳輸正確的幀。這仍然是“無差錯接受”,但遠(yuǎn)遠(yuǎn)不是“可靠傳輸”,因為有99個幀由于出現(xiàn)差錯而被接收方丟棄了。 那么,我們應(yīng)不應(yīng)當(dāng)把數(shù)據(jù)鏈路層做成是可靠傳輸?shù)?/span> 以前OSI的觀點是必須把數(shù)據(jù)鏈路層做成是可靠傳輸?shù)?。因此,他們在?/span>CRC檢錯的基礎(chǔ)上,增加了確認(rèn)和重傳機制。意思是收到正確的幀要向發(fā)送方發(fā)送一個確認(rèn)。發(fā)送方在一定的期限內(nèi)若沒有收到確認(rèn),就認(rèn)為出現(xiàn)了差錯,就重傳這個幀,直到收到確認(rèn)為止。這種方法在歷史上曾經(jīng)起到好的作用。但現(xiàn)在的通信線路的質(zhì)量已經(jīng)大大提高了,通信鏈路質(zhì)量不好引起差錯的概率已經(jīng)大大降低。因此,因特網(wǎng)廣泛使用的數(shù)據(jù)鏈路層協(xié)議都不使用確認(rèn)和重傳機制,即不把數(shù)據(jù)鏈路層做成具有可靠傳輸?shù)墓δ?/span>(因為這要付出相當(dāng)大的代價)。如果在數(shù)據(jù)鏈路層傳輸數(shù)據(jù)時出現(xiàn)了差錯,并且需要進(jìn)行改正的話,那么,改正差錯的任務(wù)就由運輸層的TCP協(xié)議來完成。實踐證明,這樣做可以使整個通信效率大大提高。 在本教材的第一版中采用了以前OSI的思路,也就是在數(shù)據(jù)鏈路層增加確認(rèn)和重傳機制(例如停止等待協(xié)議和滑動窗口機制)。但現(xiàn)在看來這已是多余的,因此,我們把確認(rèn)和重傳機制改為在運輸層的TCP中討論。這樣做比較符合因特網(wǎng)的實際情況。
4.3 因特網(wǎng)的點對點協(xié)議PPP4.3.1 PPP協(xié)議的特點對于點對點的鏈路,點對點協(xié)議PPP協(xié)議是目前使用得最廣泛的數(shù)據(jù)鏈路層協(xié)議。我們知道,用戶接入因特網(wǎng)有多種途徑,如通過電話線撥號入網(wǎng)或各種寬帶入網(wǎng),但不管怎樣,總是要通過某個因特網(wǎng)服務(wù)提供者ISP才能接入到因特網(wǎng)。從用戶計算機到ISP的鏈路所使用的數(shù)據(jù)鏈路層協(xié)議就是PPP協(xié)議,如圖4-9所示。
每一個ISP都已經(jīng)從因特網(wǎng)的管理機構(gòu)或從一個更大的ISP申請到一批IP地址。ISP還有與因特網(wǎng)通過高速通信專線相連的路由器。大的ISP擁有屬于自己通信線路,而小的ISP則向電信公司租用通信線路。用戶在某一個ISP繳費登記后(有的ISP是出售上網(wǎng)卡),就可用自己的計算機通過調(diào)制解調(diào)器。、電話線接入到該ISP。用戶在接通ISP后,ISP就分配給該用戶一個臨時的IP地址(IP地址將在第7章中詳細(xì)討論)。用戶計算機在獲得了臨時的IP地址后,就成為連接在因特網(wǎng)上的主機,因而就可使用因特網(wǎng)所提供的各種服務(wù)。當(dāng)用戶結(jié)束通信并斷開連接后,ISP就把剛才分配給該用戶的IP地址收回,以便再分配給后面撥號入網(wǎng)的其他用戶使用。 PPP協(xié)議是IETF在1992年制定的。經(jīng)過1993年和1994年的修訂,現(xiàn)在的PPP協(xié)議已成為因特網(wǎng)的正式標(biāo)準(zhǔn)[RFC 1661]。
1. PPP協(xié)議應(yīng)滿足的需求 IETF認(rèn)為,在設(shè)計PPP協(xié)議時必須考慮以下的多方面需求[RFC 1547]。 (1) 簡單 經(jīng)過非常慎重的考慮,IETF在設(shè)計因特網(wǎng)體系結(jié)構(gòu)時已把其中最復(fù)雜的部分放在TCP協(xié)議中,而網(wǎng)際協(xié)議IP則相對比較簡單,它提供的是不可靠的數(shù)據(jù)報服務(wù)。在這種情況下,數(shù)據(jù)鏈路層沒有必要提供比IP更多的功能。因此,對數(shù)據(jù)鏈路層的幀,不需要糾錯,不需要序號,也不需要流量控制。如果添加這些功能,就會和運輸層的某些功能重復(fù),因而降低了通信效率。當(dāng)然,在誤碼率較高的無線鏈路上可能會需要更為復(fù)雜的鏈路層協(xié)議。因此,IETF把“簡單”作為首要的需求。 簡單的設(shè)計還可使協(xié)議不容易出錯,因而使得不同廠商對_辦議的不同實現(xiàn)的互操作性提高了。我們知道,協(xié)議標(biāo)準(zhǔn)化的一個主要目的就是提高協(xié)議的互操作性。 (2)封裝成幀 PPP協(xié)議必須能夠正確和有效地把網(wǎng)絡(luò)層交下來的分組(即IP數(shù)據(jù)報)封裝成數(shù)據(jù)鏈路層的幀,再發(fā)送出去。接收方在收到幀后,必須能夠準(zhǔn)確地找出幀的開始和結(jié)束位置,以及幀中所封裝的數(shù)據(jù)(即IP分組)的開始和結(jié)束位置。為此,PPP協(xié)議必須規(guī)定特殊的字符作為幀定界符(即標(biāo)志一個幀的開始和結(jié)束的字符)。幀定界是指接收方從收到的比特流中應(yīng)當(dāng)能準(zhǔn)確地找出一幀的開始和結(jié)束在什么地方。 (3)透明性 PPP協(xié)議必須保證數(shù)據(jù)傳輸?shù)耐该餍?。這就是既,不能限制網(wǎng)絡(luò)層交下來的分組中不許出現(xiàn)某種比特組合。只要不出現(xiàn)傳輸差錯,所有的數(shù)據(jù)(包括高層協(xié)議的首部)都必須原封不動地傳送到相鄰結(jié)點。如果數(shù)據(jù)中碰巧出現(xiàn)了和幀定界符一樣的比特組合時,就要采取有效的措施來解決這個問題(見4.2. 2節(jié)關(guān)于透明傳輸?shù)挠懻?/span>)。 (4)多種網(wǎng)絡(luò)層協(xié)議 PPP協(xié)議必須能夠在在同一條物理鏈路上同時支持多種網(wǎng)絡(luò)層協(xié)議(如IP和IPX等)的運行。當(dāng)點對點鏈路所連接的是局域網(wǎng)或路由器時,PPP協(xié)議必須同時支持在鏈路所連接的局域網(wǎng)或路由器上運行的所有協(xié)議。雖然在因特網(wǎng)的環(huán)境下IP是網(wǎng)絡(luò)層的主流協(xié)議,但鏈路層的PPP協(xié)議仍需支持其他的網(wǎng)絡(luò)層協(xié)議。 (5)多種類型鏈路 除了要支持多種網(wǎng)絡(luò)層的協(xié)議外,PPP還必須能夠在多種類型的鏈路上運行。例如,串行的(一次只發(fā)送一個比特)或并行的(一次并行地發(fā)送多個比特),同步的或異步的,低速的或高速的,電的或光的,交換的或非交換的。 這里特別要提到的是在1999年公布的在以太網(wǎng)上運行的PPP,即PPP over Ethernet,簡稱為PPPoE[RFC 2516],這就是PPP協(xié)議能夠適應(yīng)多種類型鏈路的一個例子。PPPoE是為寬帶上網(wǎng)的主機使用的鏈路層協(xié)議。寬帶上網(wǎng)時由于數(shù)據(jù)傳輸速率較高,因此,可以讓多個用戶共享一條寬帶鏈路。例如,一個具有20個人工作的實驗室,他們使用的計算機都連接在一個以太網(wǎng)。這時,可以向ISP只申請一條寬帶上網(wǎng)線路,而大家都使用,PPPoE!數(shù)據(jù)鏈路層協(xié)議。通過連接到ISP的共享寬帶鏈路下載的文件,會按照每個計算機不同的硬件地址(見5.3.1節(jié))而傳送到相應(yīng)的計算機。如果所有的用戶都正好在同一時刻下載文件,那么,每一個用戶分配到的數(shù)據(jù)傳輸速率當(dāng)然也就下降了。 (6)差錯檢測(error detection)PPP協(xié)議必須能夠?qū)邮辗绞盏降膸M(jìn)行檢測,并立即丟棄有差錯的幀。雖然TCP協(xié)議有能保證端到端可靠交付的差錯控制機制,但若在數(shù)據(jù)鏈路層不進(jìn)行差錯檢測,那么,已出現(xiàn)差錯的幀(這種出錯的幀已無用處)就還要在網(wǎng)絡(luò)中繼續(xù)向前轉(zhuǎn)發(fā),因而白白浪費了許多網(wǎng)絡(luò)的資源。因此,在數(shù)據(jù)鏈路層對收到的幀進(jìn)行檢錯并不是多余的。然而,在數(shù)據(jù)鏈路層一般沒有必要去糾錯。糾錯是不僅發(fā)現(xiàn)差錯,而且還把差錯改正過來。在數(shù)據(jù)鏈路層進(jìn)行糾錯的代價太高,通常是得不償失的。 (7)連接的活躍度 PPP協(xié)議必須具有一種機制來自動檢測出鏈路上連接的活躍度(liveness),也就是說,必須能夠及時(不超過幾分鐘)檢測出一條鏈路是處于正常工作狀態(tài),還是已經(jīng)出了故障。當(dāng)出了故障的鏈路隔了…段時間后又重新恢復(fù)正常工作時,這種及時檢測功能特別有用。 (8)最大傳送單元 PPP協(xié)議必須對每一種類型的點對點鏈路設(shè)置最大傳送單元MTU的標(biāo)準(zhǔn)默認(rèn)值。這樣做是為了促進(jìn)各種實現(xiàn)之間的互操作性。如果高層協(xié)議發(fā)送的分組過長并超過MTU的數(shù)值,PPP就要丟棄這樣的幀,并返回差錯。為了有效地傳送以太網(wǎng)的幀,MTU的默認(rèn)值至少是1500字節(jié)。再強調(diào)一下,MTU是數(shù)據(jù)鏈路層的幀可以載荷的數(shù)據(jù)部分的最大長度,而不是幀的總長度。在RFC 1661中,MTU被稱為最大接收單元MRU(Maximum Receive Unit)。 (9)網(wǎng)絡(luò)層地址協(xié)商 PPP協(xié)議必須提供一種機制使通信的兩個網(wǎng)絡(luò)層(例如,兩個IP層)能夠通過協(xié)商知道或配置彼此的網(wǎng)絡(luò)層地址。協(xié)商的算法應(yīng)當(dāng)盡可能簡單,并且能夠在所有的情況下都能得出協(xié)商結(jié)果。這對撥號連接的鏈路特別重要,因為僅僅在鏈路層建立了連接而不知道對方網(wǎng)絡(luò)層地址時,還不能夠保證網(wǎng)絡(luò)層能夠傳送分組。 (10)數(shù)據(jù)壓縮協(xié)商PPP協(xié)議必須提供一種方法來協(xié)商使用數(shù)據(jù)壓縮算法。但PPP協(xié)議并不要求將數(shù)據(jù)壓縮算法進(jìn)行標(biāo)準(zhǔn)化。 2.1lPP協(xié)議不需要的功能 在RFC 1547中還明確了PPP協(xié)議不需要的功能。 (1)糾錯(error correction) 在TCP/IP族中,可靠傳輸由運輸層的TCP協(xié)議負(fù)責(zé),而數(shù)據(jù)鏈路層的PPP協(xié)議則沒有糾錯的責(zé)任。這就是說,PPP協(xié)議是不可靠傳輸協(xié)議。雖然當(dāng)鏈路的誤碼率較高時,增加糾錯功能可阱提高鏈路的性能,但對.PPP協(xié)議的基本實現(xiàn),則不要求有糾錯這一機制。 (2)流量控制 我們知道,發(fā)送方發(fā)送數(shù)據(jù)的速率必須使接收方來得及接收。當(dāng)接收方來不及接收時,到達(dá)接收方緩存的幀就要排隊等候處理。當(dāng)隊列溢出時就發(fā)生幀的丟失。因此,接收方應(yīng)對發(fā)送方發(fā)送數(shù)據(jù)的速率進(jìn)行流量控制。在TCP/IP族中,端到端的流量控銣由TCP負(fù)責(zé),因而鏈路級的PPP協(xié)議就不需要再重復(fù)進(jìn)行流量控制。這樣做符合前面講的PPP協(xié)議的第一個需求―――“簡單”。 (3)序號 PPP協(xié)議不需要序號。許多流行的數(shù)據(jù)鏈路層協(xié)議,如停止等待協(xié)議或連續(xù)ARQ{協(xié)議都是使用序號的。但為了使協(xié)議簡單,PPP協(xié)議并不試圖使協(xié)議向后兼容。在噪聲較大的環(huán)境下,如無線網(wǎng)絡(luò),則可以使用有編號的工作方式,這樣就可以提供可靠傳輸服務(wù)。這種工作方式定義在RFC 1663中,這里不再討論。 (4)多點線路 PPP協(xié)議不支持多點線路(即一個發(fā)送站輪流和鏈路上的多個接收站進(jìn)行通信)。PPP協(xié)議只支持一個發(fā)送方和一個接收方的鏈路通信。 (5)半雙工或單工鏈路 PPP協(xié)議不支持半雙工或單工鏈路(因為這兩種鏈路目前已很少使用),而只支持全雙工鏈路。 3.PPP協(xié)議的組成 PPP協(xié)議有三個組成部分。 (1)一個將IP數(shù)據(jù)報封裝到串行鏈路的方法。PPP既支持異步鏈路(無奇偶檢驗的8比特數(shù)據(jù)),也支持面向比特的同步鏈路。IP數(shù)據(jù)報在PPP幀中就是其信息部分。這個信息部分的長度受最大傳送單元MTU的限制。 (2)一個用來建立、配置和測試數(shù)據(jù)鏈路連接的鏈路控制協(xié)議LCP (Link control Protocol)。通信的雙方可協(xié)商一些選項。在RFC 166l中定義了11種類型的LCP分組。 (3)一套網(wǎng)絡(luò)控制協(xié)議NCP(Network control Protocol),其中的每一個協(xié)議支持不同的網(wǎng)絡(luò)層協(xié)議,如IP、OSI的網(wǎng)絡(luò)層、DECnet、以及AppleTalk等。 4.3.2 PPP協(xié)議的幀格式1.各字段的意義 PPP的幀格式如圖4.10所示。PPP幀的首部和尾部分別為四個和兩個字段。 首部的第一個字段和尾部的第二個字段都是標(biāo)志字段F(Flag),規(guī)定為0x7E(符號“0x”表示它后面的字符是用十六進(jìn)制表示的。十六進(jìn)制的7E的二進(jìn)制表示是01111110)。標(biāo)志字段表示一個幀的開始或結(jié)束。因此,標(biāo)志字段就是PPP幀的定界符。連續(xù)兩幀之間只需要用一個標(biāo)志字段。如果出現(xiàn)連續(xù)兩個標(biāo)志字段,就表示這是一個空幀,應(yīng)當(dāng)丟棄。 首部中的地址字段A規(guī)定為0xtiF(即11111111),控制字段c規(guī)定為0x03(即00000011)。最初曾考慮以后再對這兩個字段的值進(jìn)行其他定義,但至今也沒有給出??梢姡@兩個字段實際上并沒有攜帶PPP幀的信息。 PPP首部的第四個字段是2字節(jié)的協(xié)議字段。當(dāng)協(xié)議字段為0x0021時,PPP幀的信息字段就是IP數(shù)據(jù)報。若為0xC021,則信息字段是PPP鏈路控制協(xié)議LCP的數(shù)據(jù),而0x8021表示這是網(wǎng)絡(luò)層的控制數(shù)據(jù)。。 信息字段的長度是可變的,不超過1500字節(jié)。 尾部中的第一個字段(2字節(jié))是使用CRC的幀檢驗序列FCS。 2.字節(jié)填充 當(dāng)信息字段中出現(xiàn)和標(biāo)志字段一樣的比特(Ox7E)組合時,就必須采取一些措施使這種形式上和標(biāo)志字段一樣的比特組合不出現(xiàn)在信息字段中。 當(dāng)PPP使用異步傳輸時,它把轉(zhuǎn)義符定義為0x7D,并使用字節(jié)填充,具體做法如下。 (1)把信息字段中出現(xiàn)的每一個0x7E字節(jié)轉(zhuǎn)變成為2字節(jié)序列(0x713,0x5E)。 (2)若信息字段中出現(xiàn)一個0x7D的字節(jié)(即出現(xiàn)了和轉(zhuǎn)義字符一樣的比特組合),則把0x7D轉(zhuǎn)變成為2字節(jié)序列(0x7D,0x5D)。 (3)若信息字段中出現(xiàn)ASCⅡ碼的控制字符(即數(shù)值小于0x20的字符),則在該字符前面要加入一個0x7D字節(jié),同時將該字符的編碼加以改變。例如,0如3(在控制字符中是“傳輸結(jié)束”ETX)就要變?yōu)?/span>0x31。這些在RFC 1662中都有詳細(xì)的規(guī)定。這樣做的目的是防止這些表面上的ASCII碼控制符(在被傳輸?shù)臄?shù)據(jù)中當(dāng)然已不是控制符了)被錯誤地解釋為控制符。 由于在發(fā)送方進(jìn)行了字節(jié)填充,因此,在鏈路上傳送的信息字節(jié)數(shù)就超過了原來的信息字節(jié)數(shù)。但接收方在收到數(shù)據(jù)后再進(jìn)行與發(fā)送方字節(jié)填充相反的逆變換,因而可以正確地恢復(fù)出原來的信息。 3,零比特填充 PPP協(xié)議用在SONET/SDH鏈路時,是使用同步傳輸(一連串的比特連續(xù)傳送)而不是異步傳輸(逐個字符地傳送)。在這種情況下,PPP協(xié)議采用零比特填充方法來實現(xiàn)透明傳輸。 零比特填充的具體做法是在發(fā)送方,先掃描整個信息字段(通常是用硬件實現(xiàn),但也可用軟件實現(xiàn),只是會慢些)。只要發(fā)現(xiàn)有5個連續(xù)1,則立即填入一個0。因此,經(jīng)過這種零比特填充后的數(shù)據(jù),就可以保證在信息字段中不會出現(xiàn)6個連續(xù)1。接牧方在收到一個幀時,先找到標(biāo)志字段F以確定一個幀的邊界,接著再用硬件對其中的比特流進(jìn)行掃描。每當(dāng)發(fā)現(xiàn)5個連續(xù)1后的一個0刪除,以還原成原來的信息比特流,如圖4,11所示。這樣就保證了透明傳輸:在所傳送的數(shù)據(jù)比特流中可以傳送任意組合的比特流,而不會引起對幀定界的判斷錯誤。
4.3.3 PPP協(xié)議的工作狀態(tài)上一節(jié)我們通過PPP幀的格式討論了PPP幀是怎樣組成的。但PPP鏈路一開始是怎樣被初始化的t當(dāng)用戶撥號接入ISP眉,就建立了一條物理連接。這時,用戶PC機向ISP發(fā)送一系列的LCP分組(封裝成多個PPP幀)。這些分組及其確應(yīng)選擇了將要使用的一些PPP參數(shù)。接著就進(jìn)行網(wǎng)絡(luò)層配置,NCP給新接入的用戶PC機分配一個臨時的IP地址。這樣,用戶PC機就成為因特網(wǎng)上的一個主機了。 當(dāng)用戶通信完畢時,NCP釋放網(wǎng)絡(luò)層連接,收回原來分配出去的IP地址。接著,LCP釋放數(shù)據(jù)鏈路層連接。最后釋放的是物理層的連接。 上述過程可用圖4.12的狀態(tài)圖來描述。 PPP鏈路的起始和終止?fàn)顟B(tài)永遠(yuǎn)是圖4-12中的“靜止?fàn)顟B(tài)”,這時并不存在物理層的連接。當(dāng)檢測到調(diào)制解調(diào)器的載波信號,并建立物理層連接后,PPP就進(jìn)入鏈路的“建立狀態(tài)”。這時LCP開始協(xié)商…些配置選項,即發(fā)送LCP的配置請求幀(configure-request)。這是個PPP幀,其協(xié)議字段配置為LCP對應(yīng)的代碼,而信息字段包含特定的配置請求。鏈路的另一端可以發(fā)送以下幾種響應(yīng)。 (1)配置確認(rèn)幀(configure-ack):所有選項都接受。 (2)配置否認(rèn)幀(configure-nac):所有選項都理解但不能接受。 (3)配置拒絕幀(configure-reject):選項有的無法識別或不能接受,需要協(xié)商。 LCP配置選項包括鏈路上的最大幀長、所使用的鑒別協(xié)議(authentication protocol)的規(guī)約(如果有的話),以及不使用PPP幀中的地址和控制字段(因為這兩個字段的值是固定的,沒有任何信息量,可以在PPP幀的首部中省略這兩個字節(jié))。 協(xié)商結(jié)束后就進(jìn)入“鑒別狀態(tài)”。若通信的雙方鑒別身份成功,則進(jìn)入“網(wǎng)絡(luò)狀態(tài)”。這就是PPP鏈路的兩端互相交換網(wǎng)絡(luò)層特定的網(wǎng)絡(luò)控制分組。如果在PPP鏈路上運行的是IP,則使用IP控制協(xié)議IPCP(IP Control Protocol)來對PPP鏈路的每一端配置IP模塊(如分配IP地址)。和LCP分組封裝成PPP一樣,IPCP分組也封裝成PPP幀(其中的協(xié)議字段為0x8201)在PPP鏈路上傳送。當(dāng)網(wǎng)絡(luò)層配置完畢后,鏈路就進(jìn)入可進(jìn)行數(shù)據(jù)通信的“打開狀態(tài)”。兩個PPP端點還可發(fā)送回送請求LCP分組(echo-request)和回送回答LCP分組(echo-reply)以檢查鏈路的狀態(tài)。數(shù)據(jù)傳輸結(jié)束后,鏈路的一端發(fā)出終止請求LCP分組(terminate-request)請求終止鏈路連接,而當(dāng)收到對方發(fā)來的終止確認(rèn)LCP分組(terminate-ack)后,就轉(zhuǎn)到“終止?fàn)顟B(tài)”。當(dāng)載波停止后則回到“靜止?fàn)顟B(tài)”。 4.4 HDLC協(xié)議下面簡單介紹一下在歷史上曾起到重要作用的數(shù)據(jù)鏈路層協(xié)議HDLC。然而,目前HDLC協(xié)議已經(jīng)很少使用了。 1974年,IBM公司推出了著名的體系結(jié)構(gòu)SNA。在SNA的數(shù)據(jù)鏈路層規(guī)程采用了面向比特的規(guī)程SDLC(Synchronous Data Link Control)。所謂“面向比特”就是幀首部中的控制信息不是由幾種不同的控制字符組成,而是由首部中各比特的值來決定。由于比特的組合可以是多種多樣的,因此,首部中的控制信息可以得出很多4i同的功能,這就使得SDLC協(xié)議能夠滿足各種用戶的不同需求。此外,SDLC還使用同步傳輸,效率比異步傳輸有了很大的提高。后來,ISO把SDLC修改后稱為HDLC(High-level Data Link Control),譯為高級數(shù)據(jù)鏈路控制,作為國際標(biāo)準(zhǔn)ISO 3309。我國的相應(yīng)國家標(biāo)準(zhǔn)是GB 7496。 原CCITT則將HDLC再修改后稱為鏈路接入規(guī)程LAP (Link Access Procedure、),并作為X.25建議書的一部分(即有關(guān)數(shù)據(jù)鏈路層協(xié)議的部分)。不久,HDLC的新版本又把LAP修改為LAPB,“B”表示平衡型(Balanced),所以LAPB叫做鏈路接入規(guī)程(平衡型)。 下面簡單介紹一下HDLC的幀格式,如圖4.13所示。從網(wǎng)絡(luò)層交下來的分組,變成數(shù)據(jù)鏈路層的數(shù)據(jù)。這就是圖4.13中的信息字段。信息字段的長度沒有具體規(guī)定。數(shù)據(jù)鏈路層在信息字段的頭尾各加上3字節(jié)的控制信息,這樣就構(gòu)成了一個完整的HDLC幀。 HDLC規(guī)定了在幀的開頭(即首部中的第一個字節(jié))和結(jié)尾(即尾部中的最后一個字節(jié))各放入一個標(biāo)志字段,作為一個幀的邊界。標(biāo)志字段是6個連續(xù)1加上兩邊各一個0共8位。在接收方,只要找到標(biāo)志字段,就可以很容易地確定一個幀的位置。 HDLC采用零比特填充法實現(xiàn)透明傳輸。實際上,PPP協(xié)議的首部格式和零比特插入都是來源于HDLC(從歷史上看,是先有HDLC,后有PPP)。 地址字段是8位。全l地址是廣播方式,而全O地址是無效地址。岡此,有效的地址共有254個。因此,HDLC可用于一點對多點的通信(但PPP協(xié)議沒有這種功能)。 控制字段共8位,是最復(fù)雜的字段。HDLC的許多重要功能都靠控制字段來實現(xiàn)。根據(jù)其最前面兩位的取值,可把HDLC幀劃分為3大類,即信息幀、監(jiān)督幀和無編號幀。在控制字段中有幾位用于幀的編號(傳送數(shù)據(jù)的信息幀和確認(rèn)幀都帶有編號),因此,HDLC可用于連續(xù)AR()協(xié)議或選擇重傳AR()協(xié)議,因而實現(xiàn)可靠傳輸。 幀檢驗序列字段共16位。它采用的生成多項式是CRC-CCITT。所檢驗的范圍是從地址字段的第一位起,到信息字段的最后一位為止。 隨著技術(shù)的進(jìn)步,目前通信信道的可靠性比過去已經(jīng)有了非常大的改進(jìn)。我們已經(jīng)沒有必要在數(shù)據(jù)鏈路層使用很復(fù)雜的協(xié)議(包括編號、檢錯重傳等技術(shù))來實現(xiàn)數(shù)據(jù)的可靠傳輸。因此,不可靠的傳輸協(xié)議PPP現(xiàn)已成為數(shù)據(jù)鏈路層的主流協(xié)議,而可靠傳輸?shù)呢?zé)任落到了運輸層的TCP協(xié)議身上。 習(xí) 題1. 數(shù)據(jù)鏈路(即邏輯鏈路)與鏈路(即物理鏈路)有何區(qū)別 “電路接通了”與“數(shù)據(jù)鏈路接通了”的區(qū)別何在? 2.?dāng)?shù)據(jù)鏈路層中的鏈路控制包括哪些功能 3.考察停止等待協(xié)議算法。在接收結(jié)點,當(dāng)執(zhí)行步驟(4)時,若將“否則轉(zhuǎn)到(7)”改為“否則轉(zhuǎn)到(8)”,將產(chǎn)生什么結(jié)果 4.在停止等待協(xié)議算法中,若對出差錯的幀不發(fā)送否認(rèn)幀,該算法應(yīng)作何改動 5.在停止等待協(xié)議算法中,若不使用幀的序號會出現(xiàn)什么后果 6.信道速率為4Kbit/s,采用停止等待協(xié)議。傳播時延tp=20 ms。確認(rèn)幀長度和處理時間均可忽略。問幀長為多少才能使信道利用率達(dá)到至少50% 7.在停止等待協(xié)議中,確認(rèn)幀是否需要序號 請說明理由。 8.試寫出連續(xù)ARQ協(xié)議的算法。 9.試證明:當(dāng)用n個比特進(jìn)行編號時,若接收窗口的大小為1,則只有在發(fā)送窗口的大小Wt<=2n-1時,連續(xù)ARQ協(xié)議才能正確運行。 10.試證明:對于選擇重傳ARQ協(xié)議,若用n比特進(jìn)行編號,則接收窗口的最大值受公式(4-8)的約束。 11.在選擇重傳ARQ協(xié)議中,設(shè)編號用3 bit。再設(shè)發(fā)送窗口W7=6而接收窗口Wr=3,試找出—種情況,使得在此情況下協(xié)議不能正確工作。 12.在連續(xù)ARQ協(xié)議中,設(shè)編號用3 bit,而發(fā)送窗口Wt=8。試找出一種情況,使得在此情況下協(xié)議不能正確工作。 13.在什么條件下,選擇重傳ARQ協(xié)議和連續(xù)ARQ協(xié)議在效果上完全一致 14.在連續(xù)ARQ協(xié)議中,若Wt=7,則發(fā)送端在開始時可連續(xù)發(fā)送7個數(shù)據(jù)幀。因此,在每一幀發(fā)出后,都要置一個超時計時器?,F(xiàn)在計算機里只有一個硬時鐘。設(shè)這7個數(shù)據(jù)幀發(fā)出的時間分別為t0,t1,…,t6,且tout都一樣大。試問如何實現(xiàn)這7個超時計時器(這叫軟時鐘法) 15.衛(wèi)星信道的數(shù)據(jù)率為1M Bit/s。數(shù)據(jù)幀長為2000bit。忽略確認(rèn)幀長和處理時間,并設(shè)衛(wèi)星信道傳播時延為0.25秒。若忽略可能出現(xiàn)的傳輸差錯,試計算下列情況下的信道利用率: (1)停止等待協(xié)議。 (2)連續(xù)ARQ協(xié)議,Wt=7。 (3)連續(xù)ARQ協(xié)議,Wt=127。 (4)連續(xù)ARQ協(xié)議,Wt=255。 16.試簡述HDLC幀各字段的意義。HDLC用什么方法保證數(shù)據(jù)的透明傳輸? 17.HDLC幀可分為哪幾個大類 試簡述各類幀的作用。 18.HDLC規(guī)定,接收序號N(R)表示序號為N(R)(mod 8)的幀以及在這以前的各幀都己正確無誤地收妥了。為什么不定義“N(R)表示序號為N(R)(mod 8)的幀以及在這以前的各幀都已正確無誤地收妥了 ” 19.PPP協(xié)議的主要特點是什么 它適用在什么情況下
|
|