大綱要求
(一)數據鏈路層的功能
(二)組幀
(三)差錯控制
- 檢錯編碼
- 糾錯編碼
(四)流量控制與可靠傳輸機制
-
流量控制、可靠傳輸與滑動窗口機制
-
停止-等待協議
-
后退N幀(GBN)協議
-
選擇重傳(SR)協議
(五)介質訪問控制
-
信道划分介質訪問控制
頻分多路復用、時分多路復用、波分多路復用、碼分多路復用的概念和基本原理 -
隨機訪問介質訪問控制
ALOHA協議、CSMA協議、CSMA/CD 協議、CSMACA 協議 -
輪詢訪問介質訪問控制∶令牌傳遞協議
(六)局域網
- 局域網的基本概念與體系結構
- 以太網與IEE802.3
- IEEE 802.1
- 令牌環網的基本原理
(七)廣域網
-
廣域網的基本概念
-
PPP
-
HDLC協議
(八)數據鏈路層設備
-
網橋的概念和基本原理
-
局域網交換機及其工作原理
核心考點
- (★★★★★)流量控制與可靠傳輸機制、CSMA/CD原理,特別是爭用期和截斷二進制指數退避算法
- (★★★★)網橋的概念和基本原理
- (★★)組幀機制和差錯控制機制,特別是循環冗余碼和海明碼需重點掌握
- (★★★★)以太網的MAC 幀格式
數據鏈路層的功能
數據鏈路層在物理層所提供服務的基礎上向網絡層提供服務,即將原始的、有差錯的物理線路改進成邏輯上無差錯的數據鏈路,從而向網絡層提供高質量的服務。它一般包括3種基本服務∶無確認的無連接服務、有確認的無連接服務和有確認的有連接服務(記憶方式∶有連接就一定要有確認,因為對方主機必須確認才可建立連接,即不存在無確認的有連接服務)。至於以上3種服務的詳細講解可參考第1章的1.2.4小節。
具體地說,數據鏈路層的主要功能如下。
- 鏈路管理∶負責數據鏈路的建立、維持和釋放,主要用於面向連接的服務。
- 幀同步∶接收方確定收到的比特流中一幀的開始位置與結束位置。
- 差錯控制∶用於使接收方確定接收到的數據就是由發送方發送的數據。
- 透明傳輸∶假設在圖 3-1中的透明傳輸區間里出現了011110這樣的比特組合,也就是與幀定界符相同,豈不是會被誤認為是傳輸結束而丟棄后面的數據?顯然,這樣的情況是絕對不允許發生的,於是就發明了透明傳輸來解決此問題。其實,透明傳輸就是不管數據是什么樣的比特組合,都應當能在鏈路上傳送。本章后面還會對透明傳輸用圖文並茂的形式進行詳細解釋,此處了解即可。
補充知識點∶幀定界。
解析∶當兩個主機互相傳送信息時,網絡層的分組必須將封裝成幀,並以幀的格式進行傳送。將一段數據的前后分別添加首部和尾部,就構成了幀。首部和尾部中含有很多控制信息,這些信息的重要作用之一是確定幀的界限,即幀定界。例如,在HDLC協議中的幀格式使用標志F(01110)來標識幀的開始和結束,如圖3-1所示(有關HDLC協議在本章3.7.3小節會有詳細講解)。
可能疑問點∶在近兩年的答疑過程中,編者發現大部分考生存在着一些共同的矛盾問題,也正因為這些問題導致考生復習完數據鏈路層后總是處在矛盾之中,於是在論壇頻繁出現下面這個問題。
常見問題一∶舊版的《計算機網絡》教材認為數據鏈路層的任務是在兩個相鄰節點之間的線路上無差錯地傳送以幀(Frame)為單位的數據。數據鏈路層可以把一條有可能出差錯的實際鏈路,轉變為讓網絡層向下看起來好像是一條不出差錯的鏈路。但《計算機網絡》(第5 版)中對數據鏈路層的提法改變了∶數據鏈路層的傳輸不能讓網絡層向下看起來好像是一條不出差錯的鏈路。到底哪種說法是正確的?
解析∶首先需要回到第1章講解的OSI體系結構和TCP/IP體系結構。舊版的《計算機網絡》教材對數據鏈路層的闡述都是基於OSI體系結構的,OSI體系結構的數據鏈路層采用的是面向連接的HDLC協議(后面講),它提供可靠傳輸的服務。因此,舊版的《計算機網絡》教材的提法對OSI體系結構是正確的,也就是說,以前確實是數據鏈路層向網絡層提供了一條不出差錯的鏈路。
2003年以后出的新版《計算機網絡》教材更加突出了TCP/IP體系結構。現在互聯網的數據鏈路層協議使用得最多的就是PPP和CSMA/CD協議(這種情況就是使用撥號入網或使用以太網入網)。這兩種協議都不使用序號和確認機制,因此也就不能"讓網絡層向下看起來好像是一條不出差錯的鏈路。"
因此,新版的《計算機網絡》教材的提法符合當前計算機網絡的現狀。當接收端通過差錯檢測發現幀在傳輸中出了差錯后,或者默默丟棄而不進行任何其他處理(當使用 PPP 或CSMA/CD 協議時),這是現在的大多數情況;或者使用重傳機制要求發送方重傳(當使用HDLC協議時),但這種情況現在很少使用。如果需要可靠傳輸,那么就由高層的TCP(后面講)負責重傳。但數據鏈路層並不知道這是重傳的幀,所以還是默認可靠傳輸由傳輸層的TCP 負責,而不是數據鏈路層。
但是很多同學就可能會問,當數據鏈路層使用PPP或CSMA/CD協議時,既然不保證可靠傳輸,那么為什么對所傳輸的幀進行差錯檢驗呢?這不是多此一舉嗎?
其實不是這樣的。當數據鏈路層使用PPP或 CSMA/CD協議時,在數據鏈路層的接收端對所傳輸的幀進行差錯檢驗是為了不將已經發現了有差錯的幀(不管是什么原因造成的)收下來。如果在接收端不進行差錯檢驗,那么接收端上交給主機的幀就可能包括在傳輸中出了差錯的幀,而這樣的幀對接收端主機是沒有用處的。換言之,接收端進行差錯檢驗的目的是保證"上交主機的幀都是沒有傳輸差錯的,有差錯的都已經丟棄了(丟棄的不重傳,所以不可靠)"。或者更加嚴格地說,應當是"我們以很接近於1的概率認為,凡是上交主機的幀都是沒有傳輸差錯的"。
常見問題二∶數據鏈路層有流量控制嗎?
解析∶數據鏈路層到底有沒有流量控制,不能一概而論,而需要看討論的前提。在 OSI 體系結構中,數據鏈路層肯定有流量控制,而在TCP/IP體系結構中,數據鏈路層的流量控制被移到了傳輸層,那么就沒有必要再在數據鏈路層設置流量控制了。
在謝希仁的《計算機網絡》第7版中,已經將流量控制放到了傳輸層進行講解,但是由於考研中考試大綱仍然將這部分內容放到了數據鏈路層,且在數據鏈路層進行流量控制講解,有助於考生理解滑動窗口機制,故我們仍然把這部分知識點放在這一章。
組幀
為什么要組幀?直接傳送比特流不就可以了,還免去了幀同步、幀定界、透明傳輸等問題。
但是反過來思考,萬一傳送比特流出錯了呢?那就得重傳全部的比特流。
而組幀的優點是,如果出錯了,只需發送出錯的幀即可,這相對於增加了幀同步、幀定界、透明傳輸問題是值得的。
組幀也不能隨意組合,要讓接收方看得懂才可以,所以就需要依據一定的規則將網絡層遞交下來的分組組裝成幀。通常情況下,只需掌握以下4種組幀方法。
4種組幀方法包括字符計數法、字節填充的首尾界符法、比特填充的首尾標志法、物理編碼違例法。
可能疑問點∶為什么組幀的時候既要加首部,又要加尾部?而報文切割成分組只加首部?
解析∶因為在網絡中是以幀為最小單位進行傳輸的,所以接收端要正確地收到幀,必須要清楚該幀在一串比特流中是從哪里開始到哪里結束的(因為接收端收到的是一串比特流,沒有首部和尾部是不能正確區分幀的)。而分組(也稱為IP數據報)僅僅是包含在幀的數據部分(后面將詳細講解),所以不需要加尾部來定界。
字符計數法
字符計數法是用一個特殊的字符來表示一幀的開始,然后用一個計數字段來表明該幀包含的字節數。當目的主機接收到該幀時,根據此字段提供的字節數,便可知道該幀的結束位和下一幀的開始位,如圖3-2所示。
注意∶從圖3-2中可以看出,計數字段提供的字節數包含自身所占的一個字節。字符計數法存在的問題∶如果計數字段在傳輸中出現差錯,接收方就無法判斷所傳輸幀的結束位,當然也無法知道下一幀的開始位,這樣就無法幀同步了。由於此原因,字符計數法很少被使用。
字節填充的首尾界符法
其實可以將其拆開理解,首先討論一下首尾界符法。
由C語言的知識可以知道ASCⅡ碼是7位編碼,可以組成128個不同的ASCI碼,但是可以打印(就是可以從鍵盤輸入的字符)的只有95個字符,那么當傳送的幀是文本文件(都是從鍵盤輸入的)時,就可以在剩下的33個控制字符中選定2個字符(教材中選用了SOH 與EOT分別作為幀開始符和幀結束符)作為每一幀的開始和結束,這樣接收端只需要判斷這兩個控制字符出現的位置就能准確地分割成幀,如圖3-3所示。
注意∶字符SOH代表Start of Header(首部開始),而EOT代表Endof Transmision(傳輸結束)。SOH和EOT都是ASCⅡ碼中的控制字符。SOH的十六進制編碼是01,而EOT的士六進制編碼是04。不要誤認為SOH是"S""O""H"3個字符,也不要誤認為EOT是"E""O""T"3個字符。
這種方式對於幀數據為文本文件是絕對沒有問題的。但是還有一種情況就比較麻煩了,假設要傳送的幀不是文本文件,即幀數據部分可能包含控制字符,就不能僅僅使用控制字符去進行幀定界了,否則將會導致錯誤地"找到幀的邊界",把部分幀收下(誤認為是一個完整的幀),如圖3-4所示。
從圖3-3中可以看出確實解決了幀定界問題,但是從圖3-4中看得出並不是所有比特流都可以被正確地傳輸,所以說此時透明傳輸問題仍未得到解決,首尾界符法是不嚴謹的,於是出現了字節填充的首尾界符法。
字節填充的首尾界符法設法將數據中可能出現的控制字符"SOH"和"EOT"在接收端不解釋為控制字符。其方法如下:
在數據中出現字符"SOH"或"EOT"時就將其轉換為另一個字符,而這個字符是不會被錯誤解釋的。但所有字符都有可能在數據中出現,於是就將數據中出現的字符"SOH"轉換為"ESC"和"x"兩個字符,將數據中出現的字符"EOT"轉換為"ESC"和"y"兩個字符。而當數據中出現了控制字符"ESC"時,就將其轉換為"ESC"和"z"兩個字符。這種轉換方法能夠在接收端將收到的數據正確地還原為原來的數據。"ESC"是轉義符,它的十六進制編碼是 1B.
如圖3-5所示,在上方的數據中出現了4個控制字符"ESC""EOT""ESC"和"SOH"。按以上規則轉換后的數據即為圖3-5 下方的數據。
讀者可以很容易地看出,在接收端只要按照以上轉換規則進行相反的轉換,就能夠還原出原來的數據(如遇到"ESC"和"z",就還原為"ESC")。
提醒∶近幾年有不少考生在論壇里提出疑問,為什么謝希仁的教材和圖3-5的方法不一樣?教材上是將EOT轉換成 ESC EOT等。其實解決透明傳輸的方法有很多種,只要合理就行,即與接收方約定一種方式。在可以創新的情況下不要一味地追求權威,你應該相信自己對該原理的理解。
比特填充的首尾標志法
比特填充的首尾標志法是使用01111110作為幀的開始和結束標志,似乎幀定界又解決了,但是如果幀數據部分出現了01111110怎么辦?透明傳輸仍然是個問題。其解決方法如下∶
不難發現01111110中有6個連續的"1"",只要數據幀檢測到有5個連續的"1",馬上在其后插入"0",而接收方做該過程的逆操作,即每收到5個連續的"1",自動刪除后面緊跟的"0",以恢復原始數據。因此,此方法又稱為零比特填充法,具體可見下面的模擬過程。
模擬過程∶
- 原始數據∶0110101111110010111111011(數據中出現兩次011110)。
- 零比特填充后的數據∶011010111110010111101011(加下畫線的0表示填充的0)。
- 接收方收到數據,一旦遇到5個連續的"I"就將后面的"0"去掉,即可得到原始數據。
物理編碼違例法
物理編碼違例法利用物理介質上編碼的違法標志來區分幀的開始與結束,例如,在曼徹斯特編碼中,碼元1編碼成高-低電平,碼元0編碼成低-高電平,而高-高和低-低電平的編碼方式是無效的,可以分別用來作為幀的起始標志和結束標志。
注意∶
- 在使用字節填充的首尾界符法時,並不是所有形式的幀都需要幀開始符和幀結束符,如MAC 幀就不需要幀結束符。因為以太網在傳送幀時,各幀之間還必須有一定的間隙,所以,接收端只要找到幀開始定界符。其后面的連續到達的比特流就都屬於同一個MAC 幀,可見以太網不需要使用幀結束定界符,也不需要使用字節插入來保證透明傳輸。
- PPP幀用來進行幀定界的字段為Ox7E。一些考生在做習題時問怎么沒有發現"1B""1B"是謝希仁教材中對於普通幀透明傳輸的處理,即轉義字符"ESC"的十六進制編碼。
差錯控制
檢錯編碼
檢錯編碼∶通過一定的編碼和解碼,能夠在接收端解碼時檢查出傳輸的錯誤,但不能糾正錯誤。常見的檢錯編碼有奇偶校驗碼和循環冗余碼(CRC)。
奇偶校驗碼
奇偶校驗碼就是在信息碼后面加一位校驗碼,分奇校驗和偶校驗。
奇校驗∶添加一位校驗碼后,使得整個碼字里面1的個數是奇數。接收端收到數據后就校驗數據里1的個數,若檢測到奇數個1,則認為傳輸沒有出錯;若檢測到偶數個1,則說明傳輸過程中,數據發生了改變,要求重發。
偶校驗∶添加一位校驗碼后,使得整個碼字里面1的個數是偶數。接收端收到數據后就校驗數據里1的個數,若檢測到偶數個1,則認為傳輸沒有出錯;若檢測到奇數個1,則說明傳輸過程中,數據發生了改變,要求重發。
可見,當數據中有一位數據發生改變時,通過奇偶校驗能夠檢測出來,但並不知道是哪一位出錯了;如果數據中同時有兩位數據發生了改變,此時奇偶校驗是檢測不到數據出錯的,所以它的查錯能力有限。
例如,信息數據是1100010,經過奇校驗編碼后,就變成100100,如果收到數據變成01000100,因為1的個數不為奇數,所以檢測出數據出錯了,但如果收到的數據是01100100,則無法檢測出它出錯了。
補充知識點∶奇偶校驗碼實際使用時又分為垂直奇偶校驗、水平奇偶校驗與水平垂直奇偶校驗,上面講的屬於水平奇偶校驗,垂直奇偶校驗與水平垂直奇偶校驗不需要掌握,知道有即可。
循環冗余碼
奇偶校驗碼的檢錯率極低,不實用。目前,在計算機網絡和數據通信中,用得最廣泛的是檢錯率極高、開銷小、易實現的循環冗余碼(CRC)。
循環冗余碼的原理比較簡單,這里就不再贅述了,教材講解得很細致。以下僅給出考生求解循環冗余碼過程中遇到的一個最常見疑問的解答,即循環冗余碼中的二進制除法,參考例3-1。
【例3-1】試計算10110010000/11001。
解析∶解題技巧有以下3點。
- 0±1=1,0±0=0,1±0=1,1±1=0(可以簡化為做異或運算,在除法過程中,計算部分余數,全部使用異或操作,相同則為0,不同則為1)。
- 上商的規則是看部分余數的首位,如果為1,商上1;如果為0,商上0。
- 當部分余數的位數小於除數的位數時,該余數即為最后余數。
解題算術過程如圖3-6所示。
步驟分析∶首先將10110010000中的前5位10110看成部分余數,首位為1,商上1;結果為11110,首位為1,商仍然上1;結果為01111,首位為0,商上0,圖3-6中省略了這一步(平常做普通十進制除法時,也會省去),直接到11110,首位為1,商上1;然后為01110,首位為0,商上0,圖3-6中仍然省略了這一步,又直接到1100,首位為1,商上1;得到01010,首位為0,商上0,得到1010,部分余數小於除數的位數,即最后的余數為1010。
循環冗余碼進行檢錯的重要特性(以下性質不要試圖證明,也不要問為什么是這樣,無法給解釋,記住就好,記不住就不記)∶
- 有r檢測位的多項式能夠檢測出所有小於或等於r的突發錯誤。
- 長度大於r+1的錯誤逃脫的概率是1/2。
注意∶
-
循環冗余碼僅能做到無差錯接收,那么無差錯接收和可靠傳輸有什么區別?請參考3.42小節。
-
循環冗余碼(CRC)是具有糾錯功能的,可能在計算機網絡這門學科中一般不使用CRC的糾錯,如果出錯,直接重傳。因此,默認CRC為檢錯碼,而不是糾錯碼。盡管在《計算機組成原理》中將會提到CRC糾錯,但是CRC糾錯絕對不是重點,糾錯碼的重點應放在海明碼上,所以大部分輔導書會將CRC的糾錯省略。
糾錯編碼
糾錯編碼∶在接收端不但能檢查錯誤,而且能糾正檢查出來的錯誤。常見的糾錯編碼是海明碼。
海明碼∶又稱為漢明碼,它是在信息字段中插入若干位數據,用於監督碼字里的哪一位數據發生了變化,具有一位糾錯能力。假設信息位有k位,整個碼字的長度就是k+r位;
每一位的數據只有兩種狀態,不是1就是0,有r位數據就能表示出2r種狀態。如果每一種狀態代表一個碼元發生了錯誤,有k+r位碼元,就要有k+r種狀態來表示,另外還要有一種狀態來表示數據正確的情況,所以2r-1≥k+r才能檢查一位錯誤,即2r≥k+r+1。
例如,信息數據有4位,由2r≥k+r+1得r≥3,也就是至少需要3位監督數據才能發現並改正1位錯誤。例如,給8個學員進行編號,可以用3位數來編碼∶學號為000、001、…、11;也可以用5位數來編碼∶學號為0000、00001、00010、…、0011,但是沒有必要用5位,只要能滿足編碼的要求就可以了,所以只需求出滿足條件的最小的k值即可。
海明碼求解的具體步驟如下∶
- 確定校驗碼的位數r。
- 確定校驗碼的位置。
- 確定數據的位置。
- 求出校驗位的值。
下面開始實戰練習。假設要推導D=101101這串二進制數的海明碼,應按照以下步驟進行。
-
確定校驗碼的位數r。數據的位數k=6,按照公式來計算滿足條件時r的最小值,如下∶
2r-1≥k+r
2r≥7+r解此不等式,滿足不等式的最小r為4,也就是D=101101的海明碼應該有(6+4)位=10 位,其中原數據6位,校驗碼4位。
-
確定校驗碼的位置。不妨假設這4位校驗碼分別為P1、P2、P2、P4;數據從左到右為D1、D2、…、D6。編碼后的數據共有6+4=10位,設為M1、M2、…、M10。
校驗碼Pi(i取1,2,3,4)在編碼中的位置為2i-1,見表3-1。
-
確定數據的位置。除了校驗碼的位置,其余的就是數據的位置,填充進去即可,於是可以把數據信息先填進去,見表3-2的"乙"行。
-
求出校驗位的值。這個公式不難,99%左右的考生都能看懂海明碼的求解過程,但是能夠過目不忘的就是極少數了,很多考生抱怨記不住。與其這樣,倒不如考前幾天突擊一下。其實完全沒有必要死記硬背,該公式是有規律可循的,但基本沒有任何教材講過,編者也是無意中在一篇論文中看到的,現分享給大家。
假設出錯位為e1、e2、e3、e4,現在需要做的就是將M1、M2、…、M10和e1、e2、e3、e4 的關系對應出來,只要這個關系對應出來了,所有問題就都解決了。演示幾個,剩下的考生自己推導(看了肯定會)。
M1下標中的1可以表示成0001,這里的0001分別對應e4、e3、e2、e1(倒過來看),由於e1的值為1,因此M1只和e1有關;M3下標中的3可以表示成0011,因此M3和e1、e2有關;M7下標中的7可以表示成0111,因此M7和e1、e2、e3有關。其他以此類推,只需要將這些有關的用異或符號連接起來即可,最后可得以下公式∶
故101101的海明碼為001001101。
但是知道了怎么編寫海明碼,還需要知道怎么校驗,方法如下∶
現在假設第5位出錯了,也就是第5位在傳輸的過程中被改為"1",即得到的數據為00101101。現在要找出錯誤的位置(假設現在不知道出錯的位置)。
繼續使用∶
補充知識點∶
海明碼如果要檢測出d位錯誤,需要一個海明距為d+1的編碼方案;如果要糾正d位錯誤,需要一個海明距為2d+1的編碼方案。對於以上知識點,考生應該理解到什么樣的程度?
解析∶首先,解釋碼距的概念。它反映的是兩個碼字不一樣的程度,就是把兩個碼字對齊以后,有幾位不相同,則稱為碼距,又稱為海明距。例如,碼字110和碼字111 對齊之后,發現只有第三位不一樣,則碼距為1。什么是海明距為1的編碼方案?一個編碼方案一般都對應許多碼字,而定義許多碼字的海明距只需要看最小的即可。如,某個編碼方案中有碼字110、001、11,盡管110和001的碼距為3,但是110和111 的碼距為1,所以取最小的。以此類推,考生應該不難理解海明距為d+1的編碼方案。從這里應該可以得到一個很明顯的結論,對於海明距為1的編碼方案是不能檢測出任何錯誤的,只要d 取0即可。
其次,考生在教材中肯定見到過以下公式∶
L-1=D+C 且D≥C
如果要糾正d位錯誤,說明至少要檢測出d位錯誤(當然可以檢測得更多),代入即可得到L-1=d+d,即L=2d+1。同理,如果==只要求檢測出d位錯誤(默認糾錯為0,即C等於0),代入即可得到L=d+1,於是就有了補充知識點1)。
海明碼的糾錯能力桓小於或等於檢錯能力(見上面的公式)。
為什么誤碼率和信噪比有關?
解析∶因為信噪比越高,失真就會越小,到達接收端之后波形的變化就會很小,這樣就不會將0譯碼成1、1譯碼成0了,自然誤碼率就低了。
流量控制與可靠傳輸機制
流量控制
申明∶流量控制與可靠傳輸機制其實是屬於傳輸層的功能,但是作為知識點的講解放在哪里講都無所謂,因為該知識點不以后續章節的知識點為基礎,所以就直接按照大綱知識點的順序來講解了。如果考生習慣按照謝希仁《計算機網絡》第7版的講解順序進行理解和復習,可以先不看這部分內容,復習到傳輸層的5.3.3和5.3.4小節的時候,再來復習這部分知識點。
流量控制就是要控制發送方發送數據的速率,使接收方來得及接收。
一個基本的方法是由接收方控制發送方的數據流。常見的有兩種方式∶停止-等待流量控制和滑動窗口流量控制。
停止-等待流量控制。它是流量控制中最簡單的形式。停止-等待流量控制的工作原理就是發送方發出一幀,然后等待應答信號到達再發送下一幀;接收方每收到一幀后,返回一個應答信號,表示可以接收下一幀,如果接收方不返回應答,則發送方必須一直等待。
故事助記∶某個班有40個人,周日下午需要召開一次緊急班會,班長需要拿出通訊錄聯系每一個人(學號為1~40號)。這位班長聯系了1號,一定要等1號回復了短信確定參加,再依次聯系后面同學,而不用群發。這位班長用的就是停止-等待流量控制。
滑動窗口流量控制。停止-等待流量控制中每次只允許發送一幀,然后就陷入等待接收方確認信息的過程中,傳輸效率很低。而滑動窗口流量控制允許一次發送多個幀。
滑動窗口流量控制的工作原理就是在任意時刻,發送方都維持了一組連續的允許發送的幀的序號,稱為發送窗口。同時,接收方也維持了一組連續的允許接收的幀的序號,稱為接收窗口。發送窗口和接收窗口的序號的上下界不一定要一樣,甚至大小也可以不同。發送方窗口內的序列號代表了那些已經被發送但是還沒有被確認的幀,或者是那些可以被發送的幀。發送端每收到一個幀的確認,發送窗口就向前滑動一個幀的位置。當發送窗口尺寸達到最大尺寸時,發送方會強行關閉網絡層,直到有一個空閑緩沖區出來。在接收端只有當收到的數據幀的發送序號落入接收窗口內才允許將該數據幀收下,並將窗口前移一個位置。若接收到的數據幀落在接收窗口之外(就是說收到的幀號在接收窗口中找不到相應的該幀號),則一律將其丟棄。
圖3-7和圖3-8所示分別為滑動窗口流量控制的發送窗口和接收窗口示意圖。
如圖3-7a所示,在發送端,發送窗口的大小為5,在發送開始時,允許發送5個幀,幀序號為0~4。每發送一幀之后,若未收到確認,發送窗口自動減1,如圖3-7b所示。
若序號為0~4的幀都已發送完畢,且未收到確認幀,則無法繼續發送后續的幀,如圖3-7c所示。
而當發送端每收到一個確認幀后,發送窗口就向前滑動一個幀的位置,圖3-7d給出了收到3 個幀的確認之后的發送窗口示意,此時可繼續發送序號為5~7的3個幀。
接收窗口的大小與發送窗口無關,當接收窗口大小為1時,如圖3-8所示,收到一個數據幀后,將窗口向前移動一個位置,並發送確認幀。若收到的數據幀落在接收窗口之外,則一律丟棄該數據幀。
可靠傳輸機制
可靠傳輸與無差錯接收的區別總結。
解析∶在數據鏈路層若僅僅使用循環冗余碼檢驗差錯檢測技術,只能做到對幀的無差錯接收,即"凡是接收端數據鏈路層接收的幀,都能以非常接近於1的概率認為這些幀在傳輸過程中沒有產生差錯"。
接收端雖然收到了幀,但最終還是因為有差錯被丟棄,即沒有被接收。以上所述可以近似地表述為"凡是接收端數據鏈路層接收的幀均無差錯"。
注意∶現在並沒有要求數據鏈路層向網絡層提供"可靠傳輸"的服務。所謂"可靠傳輸",就是數據鏈路層的發送端發送什么,接收端就接收什么。
傳輸差錯可分為兩大類,一類就是比特差錯(可以通過CRC來檢測),而另一類傳輸差錯更復雜,這就是收到的幀並沒有出現比特差錯,但卻出現了幀丟失(如發送1、2、3,收到1、3)、幀重復(如發送1、2、3,收到1、2、2、3)、幀失序(如發送1、2、3,收到1、3、2)。這3種情況都屬於"出現傳輸差錯",但都不是這些幀里有"比特差錯"。
幀丟失很容易理解,但是幀重復、幀失序的情況較為復雜,在這里暫不討論,學完可靠傳輸的工作原理后,就會知道在什么情況下接收端可能會出現幀重復或幀失序。
總之,"無比特差錯"和"無傳輸差錯"並不是同樣的概念,在數據鏈路層使用CRC檢驗只能實現無比特差錯的傳輸,但這還不是可靠傳輸。
也許會有人提出∶既然會丟失那就讓接收端不管收到還是沒收到都給回復,即確認。如果沒接到回復就再發一次,直到對方確認。對於幀失序只要給發的幀編號,等所有幀均收到再排序。以上說的都是對的,但是為什么現在不使用呢?原因有以下兩個∶
- 以前在數據鏈路層使用這種方式是因為以前的通信質量太差了,所以確認和重傳機制會起到很好的效果,但是現在的通信質量已經大大提高了,由通信鏈路質量不好引起差錯的概率已經大大降低,再使用這種確認機制代價就太大了,完全不合算。
- 即使數據鏈路層能夠實現無差錯的傳輸,可能端到端的傳輸也會出現差錯,這樣得不償失,還不如把數據鏈路層做得簡單點,可靠的傳輸由上層協議來完成。也許看了這些還不是很清楚,為了使大家更清楚理解將數據鏈路層的可靠傳輸移到高層的原因,我們將網絡月的一個知識點先放在這里講解,見2)。
互聯網使用的IP是無連接的,因此其傳輸是不可靠的。這樣容易使人們感到互聯網很不可靠。那么為什么當初不把互聯網的傳輸設計成為可靠的?
解析∶這個問題很重要,需要多一些篇幅來討論。
先打一個比方∶郵局寄送的平信很像無連接的IP數據報。每封平信可能走不同的傳送路徑,同時平信也不保證不丟失。當發現收信人沒有收到寄出的平信時,去找郵局索賠是沒有用的。郵局會說∶"平信不保證不丟失。如果擔心丟失,就請您寄掛號信。"但是大家並不會將所有信件都用掛號方式郵寄,這是因為郵局從來不會隨意地將平信丟棄,而丟失平信的概率並不大,況且寄掛號信成本高。總之,盡管寄平信有可能會丟失,但絕大多數的信件還是平信,因為寄平信方便、便宜。
傳統的電信網最主要的用途是進行電話通信。普通的電話機很簡單,沒有什么智能功能。因此,電信公司就不得不把電信網設計得非常好,這種電信網可以保證用戶通話時的通信質量。這點對使用非常簡單的電話機的用戶是非常方便的,但電信公司為了建設能夠確保傳輸質量的電信網則付出了巨大的代價(使用昂貴的程控交換機和網管系統)。數據的傳送顯然必是非常可靠的。當初美國國防部在設計ARPAnet時有一個很重要的討論內容就是"誰應當負責數據傳輸的可靠性?"
這時出現了兩種對立的意見∶一種意見是主張應當像電信網,由通信網絡負責數據傳輸的可靠性(因為電信網的發展歷史及其技術水平已經證明了人們可以將網絡設計得相當可靠);另一種意見則堅決主張由用戶的主機負責數據傳輸的可靠性。這里最重要的理由是,這樣可以使計算機網絡便宜、靈活,同時還可以滿足軍事上的各種特殊的需求。
下面用一個簡單例子來說明這一問題。設主機A通過互聯網向主機B傳送文件,如圖3-9所示。
怎樣才能實現文件數據的可靠傳輸呢?
如果按照電信網的思路,就是設法將不可靠的互聯網做成可靠的互聯網(成本高)。但設計計算機網絡的人采用了另外一種思路,即設法實現端到端的可靠傳輸。
提出這種思路的人認為,計算機網絡和電信網的一個重大區別就是終端設備的性能差別很大。電信網的終端是非常簡單的,是沒有什么智能的電話機。因此,電信網的不可靠必然會嚴重地影響人們利用電話通信。但計算機網絡的終端是有很多智能的主機,這樣就使得計算機網絡和電信網有兩個重要區別。
-
第一,即使傳送數據的因特網有一些缺陷(如造成比特差錯或分組丟失),但具有很多智能的終端主機仍然有辦法實現可靠的數據傳輸(如能夠及時發現差錯並通知發送方重傳剛才出錯的數據)。
-
第二,即使網絡可以實現100%的無差錯傳輸,端到端的數據傳輸仍然有可能出現差錯。
可以用一個簡單例子來說明這個問題。設主機A向主機B傳送一個文件。文件通過一個文件系統存儲在主機A的硬盤中。主機B也有一個文件系統,用來接收和存儲從主機A發送過來的文件。應用層使用的應用程序現在就是文件傳送程序,這個程序一部分在主機A運行,另一部分在主機B運行。現在討論文件傳送的大致步驟。
- 主機A的文件傳送程序調用文件系統將文件從硬盤中讀出,然后文件系統將文件傳遞給文件傳送程序。
- 主機A請求數據通信系統將文件傳送到主機B。這里包括使用一些通信協議和將數據文件划分為適當大小的分組。
- 通信網絡將這些數據分組逐個傳送給主機B。
- 在主機B中,數據通信協議將收到的數據傳遞給文件傳送應用程序在主機B運行的那一部分。
- 在主機B中,文件傳送程序請求主機B的文件系統將收到的數據寫到主機B的硬盤中。
在以上的幾個步驟中,都存在使數據受到損傷的一些因素,例如∶
- 雖然文件原來是正確地寫在主機A的硬盤上,但在讀出后就可能出現差錯(如在磁盤存儲系統中的硬件出現了故障)。
- 文件系統、文件傳送程序或數據通信系統的軟件在對文件中的數據進行緩存或復制的過程中都有可能出現故障。
- 主機A或B的硬件處理器或存儲器在主機A或B進行數據緩存或復制的過程中也有可能出現故障。
- 通信系統在傳輸數據分組時有可能產生檢測不出來的比特差錯,甚至丟失某些分組。
- 主機A或B都有可能在進行數據處理的過程中突然崩潰。
由此可看出,即使對於這樣一個簡單的文件傳送任務,僅僅使通信網絡非常可靠,並不能保證文件從主機A硬盤到主機B硬盤的傳送也是可靠的。也就是說,花費很多的錢將通信網絡做成非常可靠的,對傳送計算機數據來說是得不償失的。
既然現在的終端設備有智能的,就應當把網絡設計得簡單些,而讓具有智能的終端來完成"使傳輸變得可靠"的任務。
於是,計算機網絡的設計者采用了一種策略,這就是"端到端的可靠傳輸"。更具體些,就是在傳輸層使用面向連接的TCP(后面講),它可保證端到端的可靠傳輸。只要主機B的TCP發現數據傳輸有差錯,就告訴主機A將出現差錯的那部分數據重傳,直到這部分數據正確傳送到主機B為止(見第5章)。而TCP發現不了數據有差錯的概率是很小的。
采用以上的建網策略,既可以使網絡部分價格便宜和靈活可靠,又能夠保證端到端的可靠傳輸。
可以這樣想象,將互聯網的范圍稍微擴大一些,即擴大到主機中的傳輸層。由於傳輸層使用了TCP,使得端到端的數據傳輸成為可靠的,因此這樣擴大了范圍的因特網就成為可靠的網絡。
"互聯網提供的數據傳輸是不可靠的"或"互聯網提供的數據傳輸是可靠的"這兩種說法都可以在文獻中找到,問題是怎樣界定因特網的范圍。
如果說因特網提供的數據傳輸是不可靠的,那么這里的互聯網指的是不包括主機在內的網絡(僅有物理層、數據鏈路層和網絡層)。如果說互聯網提供的數據傳輸是可靠的,就表明互聯網的范圍已經擴大到主機的傳輸層。
下面通過郵局寄平信的例子解釋說明。當人們寄出一封平信后,可以等待收信人的確認(通過他的回信)。如果隔了一些日子還沒有收到回信,可以將該信件再寄一次。這就是將"端到端的可靠傳輸"的原理用於寄信的例子。
滑動窗口機制
-
只有在接收窗口向前滑動時(與此同時也發送了確認),發送窗口才有可能向前滑動。
-
可靠傳輸機制包括停止-等待協議、后退N 幀協議和選擇重傳協議。從滑動窗口的層次上看,該3種協議只是在發送窗口和接收窗口大小上有所差別。
停止-等待協議∶發送窗口大小=1,接收窗口大小=1。
后退N幀協議∶發送窗口大小>1,接收窗口大小=1。
選擇重傳協議∶發送窗口大小>1,接收窗口大小>1。
-
當接收窗口的大小為1時,一定可保證幀按序接收。
補充知識點∶為什么不管發送窗口多大,只要當接收窗口大小為 1時,可保證幀按序接收?
解析∶因為接收窗口為1,所以里面有一個唯一的幀序號,不管發送窗口一次性可以發送多少字節,接收窗口只選擇接收窗口里的幀序號接收,只有等到該幀,接收窗口才往后移動,所以按照這樣的順序接收的幀一定是有序的。
停止-等待協議
講解之前,先討論一下怎么去實現可靠傳輸。
可靠傳輸就是說發送方發送什么,接收方就收到什么,一般來說,使用確認(發送確認幀)和超時重傳兩種機制來共同完成。
確認幀是一個沒有數據部分的控制幀,只是用來告訴發送方發的某幀已經接收到了。有時,為了提高傳輸效率,將確認捎帶在一個回復幀中,稱為捎帶確認(捎帶確認與累計確認的區別見下面的補充知識點)。
超時重傳是指發送方在發送一個數據幀時設置一個超時計時器,如果在規定時限內沒有收到該幀的確認,就重新發送該數據幀。導致發送方沒有收到確認的原因有以下兩種∶
- 當接收方檢測到出錯幀時,接收方直接丟棄該幀,而不返回確認。
- 該幀在傳輸過程中丟失。
使用確認和超時重傳兩種機制實現可靠傳輸的策略又稱為自動請求重發(ARQ)。
補充知識點∶捎帶確認與累計確認有什么區別?
解析∶每兩個發送數據的站都是通過全雙工連接的,每個站既維持發送窗口也維持接收窗口,但是課本為了講解清楚,僅僅是單方向傳送,所以在同一時間某站可能既發送數據又發送確認,這樣就可以將確認放在數據里面一起發過去,這就是捎帶確認;
還有一種情況是接收方每收到K個幀發一個ACK告知發送方已正確接收前(K-1)幀並期待第K幀,有人可能會問那第一幀設置的計時器早就超時了,沒錯,這種可能性相當大,所以對超時的就要單獨發ACK,以免發送方一直發送,這就是累計確認。
下面講解停止-等待協議。
從名稱上來看,也可以看出停止-等待協議是基於停止-等待流量控制技術的。從滑動窗口的角度來理解就是其發送窗口大小為1,接收窗口大小也為1。
停止-等待協議的基本思想∶發送方傳輸一個幀后,必須等待對方的確認才能發送下一幀。若在規定時間內沒有收到確認,則發送方超時,並重傳原始幀。
看到這里也許有人會問,停止-等待流量控制技術(這里是停止-等待流量控制技術而不是停止-等待協議)為什么要一直等待?為什么不設置一個規定時間?
這里就要回到第1章協議的制定。首先協議需要建立在一定技術(停止-等待流量控制技術)之上,然后在此技術之上需要考慮一切可能突發的不利狀況(可以這么理解∶協議=技術+考慮不利因素,即停止-等待協議=停止-等待流量控制技術+不利因素),設置規定時間重傳就是為了解決這些不利因素。如果不設置時間就會造成死鎖,這樣就無法推進,在這里可以聯系到操作系統的死鎖,如果沒有外力參與去打破死鎖,就一直等待下去,而這里的外力就是重傳計時器。
停止-等待協議中會出的差錯主要有以下兩類(雖然簡單,請仔細看,這里有很多考生的疑問點,其他輔導書都沒有涉及)。
-
幀一般被分為數據幀和確認幀。第一類錯誤就是數據幀被損壞或者丟失,那么接收方在進行差錯檢驗時,會檢測出來。
處理數據幀被損壞的情況時,使用計時器即可解決。這樣發送方在發送一個幀后,若數據能夠正確地接收到,接收方就發送一個確認幀,沒有問題;若接收方收到的是一個被損壞的數據幀,則直接丟棄,此時發送方還在那里苦等,不過沒有關系,只要計時器超時了,發送方就會重新發送該數據幀,如此重復,直到這一數據幀無錯誤地到達接收方為止。
-
第二類錯誤確認幀被破壞或者丟失。一旦確認幀被破壞或者丟失,造成的后果就是發送方會不斷地重新發送該幀,從而導致接收方不斷地重新接收該幀。怎么解決?
顯然,對於接收方而言,需要有能夠區分某一幀是新幀還是重復幀的能力。解決方法很簡單,就是讓發送方在每個待發的幀的頭部加一個編號,而接收方對每個到達的幀的編號進行識別,判斷是新幀還是要拋棄的重復幀。
考生發現某些輔導書會有這么一道題∶停止-等待協議需要對確認幀進行編號嗎?
基本上給出的答案如下∶停止-等待協議的工作原理是當每發送完一個數據幀后,發送端就停止繼續發送,直至接收到接收端返回該幀的確認信息為止才繼續發送,因此確認幀不需要序號。那么確認幀到底需要序號嗎?
以下是天勤論壇一位會員問的問題,很有代表性,所以拿出來與大家分享,希望大家在復習時,都能帶着這種發現問題的模式去思考。
疑問∶假設a發送1號幀給b,b收到,但是b發給a的確認幀在網絡中堵塞了,於是當a端的計時器超時時,a又重發1號幀。此時,b又收到了一個1號幀。正在此時,b發送的第一個確認幀到了a,於是a發送2號幀,但是b沒收到,但此時b的第二個確認幀到了a 端,由於確認幀沒有編號,因此a以為b收到了2號幀,這個豈不是錯誤了?
解析∶這個問題問得非常好,其實問題本身在於技術演變,而不是題目和答案的問題。該考生的分析沒有錯誤,可以很好地說明需要對確認幀進行編號才能正常工作。但是由於目前的數據鏈路層協議是用在點對點的鏈路上,而在條件固定的鏈路上,數據的往返時延一般都比較穩定,不會忽大忽小地大幅度起伏變化。在這種情況下,如果選擇合適大小的超時重傳時間,那么確認幀沒有序號的停止-等待協議也是可以工作的。
因此,在討論停止-等待協議的原理時,有時也省略了確認幀中的序號。從嚴格的意義上講,既然協議應當保證在任何不利的情況下都能夠正常工作,那么完整的停止-等待協議的確認幀就應當有序號。如果考研中真遇到了,建議還是填寫確認幀需要序號。
后退N幀(GBN)協議
后退N幀協議基於滑動窗口流量控制技術。若采用n個比特對幀進行編號,其發送窗口尺寸WT必須滿足 1 < WT ≤2n-1(請參考下面的補充知識點),接收窗口尺寸為1。若發送窗口尺寸大於2n-1,會造成接收方無法分辨新、舊數據幀的問題。由於接收窗口尺寸為1,因此接收方只能按序來接收數據幀。
后退N幀協議的基本原理∶
發送方發送完一個數據幀后,不是停下來等待確認幀,而是可以連續再發送若干個數據幀。如果這時收到了接收方的確認幀,那么還可以接着發送數據幀。如果某個幀出錯了,接收方只能簡單地丟棄該幀及其所有的后續幀。發送方超時后需重發該出錯幀及其后續的所有幀。由於減少了等待時間,后退N幀協議使得整個通信的吞吐量得到提高。但接收方一發現錯誤幀,就不再接收后續的幀,造成了一定的浪費。據此改進,得到了選擇重傳協議。
補充知識點∶為什么后退N幀協議的發送窗口尺寸WT必須滿足1<WT≤2n-1?
解析∶假設發送窗口的大小為2",發送方發送了0號幀,接收窗口發送 ACK1(0 號幀已收到,希望接收1號幀,但是ACK1丟失),接着發送方發送了1號幀,接收窗□發送ACK2(1號幀已收到,希望接收2號幀,但是ACK2丟失),以此類推,直到發送方發了第2n-1號幀,接收方發送ACK2n(丟失),此時不能再發送數據了,因為已經發送了2n個幀,但一個確認都沒有收到,所以過一段時間0號幀的計時器會到達預定時間進行重發,此時發過去接收方認為是新一輪的0號幀還是舊一輪重傳的呢?
接收方並不知道,很有可能接收方就把該0號幀當作新一輪的幀接收了,但實際上這個0號幀是重傳的,所以出現了錯誤,即發送窗口的大小不可能為2n。現在假設發送窗口的大小為2n-1,情況和上面一樣,發送方發送了0~2~2n-2號幀,接收方發送的確認幀都丟失了,如果沒有丟失就應該接着傳2n-1號幀,但是丟失了,發送方應該發送0號幀。由於這種情況接收方可以判斷出來(下一幀只要不是第2n-1號幀就是重傳),因此不會發生錯誤。如果發送窗□尺寸小於2-1,那就更不會發生錯誤了。
綜上所述,后退N幀協議的最大發送窗口是2n-1。
【例3-2】(2009年統考真題)數據鏈路層采用了后退N幀(GBN)協議,發送方已經發送了編號為0~7的幀。當計時器超時時,若發送方只收到0、2、3號幀的確認,則發送方需要重發的幀數是()。
A.2
B.3
C. 4
D.5
解析∶C。想要准確地做出該題需要懂得兩個知識點∶
- 只要收到ACKn就認為前面n-1幀一定全部收到;
- 后退N幀重發原理是發送方超時后需重發該出錯幀及其后續的所有幀。從題中可以看出收到了3號確認幀(盡管沒有收到1號確認幀),就可以認為0、1、2、3號幀接收方都已經收到,而4號幀的確認沒有收到,發送方就應該發送4號幀以及后續的所有幀,即重傳4、5、6、7號幀,即幀數為4。
其實這道題目如果將選項D改為7,就更具有迷惑性了,相信會有不少考生認為應該從1號幀開始重傳,即需要重傳1、2、3、4、5、6、7共計7幀,這樣就會誤選D,但是一看到選項沒有7,估計才會想到只要收到ACKn就認為前面n-1幀一定全部收到。
需要提醒的一點∶前面講過某個幀的確認沒有收到是否一定要重發此幀?這個題目恰好是一個反例,在發送方超時之前收到了比1號幀更高的確認,所以不需要重發1號幀。
【例3-3】(2012年統考真題)兩台主機之間的數據鏈路層采用后退N幀(GBN)協議傳輸數據,數據傳輸速率為16kbit/s,單向傳播時延為270ms,數據幀長度為128~512B,接收方總是以與數據幀等長的幀進行確認。為使得信道利用率達到最高,幀序號的比特數至少為( )
A.5
B.4
C.3
D.2
解析∶B。首先,要使得信道利用率達到最高,就需要使發送數據的主機盡量保持不停地在發送數據,即盡量保證信道不空閑。在這里需要考慮最壞的情況,即幀長最小的時候。因為幀長最小時,在文件同等大小時,需要幀的個數最大,這樣就可以求出所需幀序號比特數的最小值。
所以,接下來就需要計算從主機發送數據開始到接收到確認幀所經歷的總時間。
總時間應該等於發送數據的時間+傳播數據的時間+發送確認幀的時間+傳播確認幀的時間,在這里數據長度取最小值,即128B。所以,總時間為
T=(128×8)bit/16kbit/s+270ms+(128×8)bit/16kbit/s+270ms=668ms
而在668ms內,至少可以發送10個長度為128B的幀(10<668ms/64ms<11),所以幀序號的比特數n必須滿足2n≥11解得 n≥4。
選擇重傳(SR)協議
選擇重傳協議也是基於滑動窗口流量控制技術的。
它的接收窗口尺寸和發送窗口尺寸都大於1,以便能一次性接收多個幀。
若采用n個比特對幀進行編號,為避免接收端向前移動窗口后,新接收窗口與舊接收窗口產生重疊,發送窗口的最大尺寸應該不超過序列號范圍的一半∶WT ≤ 2n-1(請參考下面的補充知識點)。
當發送窗口取最大值時,WR = WT = 2n-1(=大部分情況都是發送窗口等於接收窗口,且等於2,因為這樣可達到最大效率,記住就好)。
此時,若 WT取大於2n-1的值,可能造成新、舊接收窗口重疊。
選擇重傳協議的基本思想∶若一幀出錯,則其后續幀先存入接收方的緩沖區中,同時要求發送方重傳出錯幀,一旦收到重傳幀后,就和原先存在緩沖區的其余幀一起按正確的順序送至主機。選擇重傳協議避免了重復傳輸那些本來已經正確到達接收方的數據幀,進一步提高了信道利用率,但代價是增加了緩沖空間。
補充知識點∶
-
為什么選擇重傳協議的最大發送窗口的大小是2n-1?
解析∶現在先假設選擇重傳協議的最大發送窗口是W,那么可以一次性發送0~W-1號幀,並且接收方都已經接收到了(也就是說,這W個確認幀都已經發了),但是這W 個確認幀全部都在傳輸的過程中丟失了,此時接收窗口的位置已經移動到W~2W-1。如果發送方再發一輪,這W個幀應該落在W~2W-1,但是此時的W幀是重傳的,所以若要正確,就必須滿足2W-1是在最大序號2n-1 之內,也就是說2W-1≤2n-1,即W≤2n-1。綜上所述,選擇重傳協議的最大發送窗口是2n-1。
-
由於選擇重傳協議的最大發送窗口是2n-1還是比較難理解的,在此舉一個例子來幫助大家理解。假設n=3,2n-1=4。若發送窗口為5,則接收窗口為5。假設t時刻發送方發送序號為0~4的幀,t時刻接收方接收到序號為0~4的幀,接收窗口滑動到[5,6,7,0,1],並發送0~4號的確認幀。但是確認幀在傳輸中都丟失了。於是,發送方在t 時刻重發幀0。當t時刻接收方收到幀0時,由於幀0在其接收范圍,0被錯誤地當作新幀接收,導致協議錯誤。因此,對於選擇重傳協議,必須使發送窗口的大小於或等於2n-1。
可能疑問點∶有些考生舉出反例,假設n=3,然后又假設發送窗口為5(超過2n-1=4),但是接收窗口為3,此時則驗證不了上面的結論,以證明上面的結論是錯的,即發送窗口的最大值可以超過2n-1。
解析∶其實這種分析貌似正確,但是卻忽略了一個前提(記住即可),即發送窗口最好不要超過接收窗口。其實從后面講解的擁塞控制可以看出,發送窗口是取擁塞窗口和接收窗口的最小值,不會超過接收窗口,所以發送窗口大於接收窗口沒有意義。
【例3-4】(大綱樣題)在選擇重傳協議中,當幀的序號字段為3bit,且接收窗口與發送窗口尺寸相同時,發送窗口的最大值為()。
A.2
B.4
C.6
D.8
解析∶B。假設幀的序號字段為nbit,選擇重傳協議的發送窗口最大尺寸為2n-1;將n=3 代入,得到答案。
【例3-5】(2011年統考真題)數據鏈路層采用選擇重傳(SR)協議傳輸數據,發送方已發送了0~3號數據幀,現已收到1號幀的確認,而0、2號幀依次超時,則此時需要重傳
的幀數是()
A.1
B.2
C.3
D.4
解析∶B。此題需要考生很清楚地了解選擇重傳協議的工作原理。
選擇重傳協議是不支持累積確認的。什么是累積確認?即如果發送方連續發送0、1、2、3、4號幀,前面0、1、2、3號幀的確認都丟失,但是在發送方重發之前卻收到了ACK5,表明前面的0、1、2、3、4號幀都已經收到,接收方期待5號幀的接收。后退N幀協議是支持累積確認的。回到題目,由於只收到1號幀的確認,0、2號幀超時,且不支持累積確認,因此需要重傳0、2號幀。
重點提醒∶對於選擇重傳協議,題且並沒有說3號幀是否正確接收,僅僅是說了0、2 號幀超時,故無須考慮3號幀的狀態。
如果此題數據鏈路層采用后退N幀(GBN)協議傳輸數據,由於它具有累積確認的作用,因此收到了1號幀的確認,就說明0號幀也被正確接收了,只需重傳1號幀的后續所有幀,即需要重傳2號幀和3號幀,故答案仍然選B。
可能疑問點∶如果不按序接收,交給主機豈不是全部亂套了?
解析∶如果沒有按序,正確的接收幀先存入接收方的緩沖區中,同時要求發送方重傳出錯幀,一旦收到重傳幀后,就和原先存在緩沖區的其余幀一起按正確的順序送至主機。
所以說選擇重傳協議避免了重復傳輸那些本來已經正確到達接收方的數據幀,進一步提高了信道利用率,但代價是增加了緩沖空間。
發送緩存和接受緩存
如圖3-10所示,發送窗口與發送緩存以及接收窗口與接收緩存有什么區別?為什么計算機進行通信時發送緩存和接收緩存總是需要的?
從圖 3-10b 中可以看到,按序到達的且沒有被交付給主機的幀被放在接收緩存(接收窗口外的那一部分接收緩存,以下講的接收緩存都是指這部分)里面(因為已經發送過確認幀了,僅僅是等主機的應用程序來取),而不是接收窗口里面。那些不是按序到達的數據且沒有錯誤的幀一定是要放在接收窗口里面,因為這些幀不能直接給主機,而放在接收緩存的幀是要給主機的,等到缺少的幀收到后,再一起放到接收緩存,這一點要注意區分,其他都比較好理解,不再贅述。
發送窗口的大小不一定等於接收窗口的大小(但是通常情況下都是等於),這里先記住這個結論,第5章講到擁塞控制的時候就會很清楚了。
當計算機的兩個進程(在同一台機器中或在兩台不同的機器中)進行通信時,如果發送進程將數據直接發送給接收進程,那么這兩個動作(一個是發送,另一個是接收)是非常難協調的。這是因為計算機的動作很快,如果在某一時刻接收進程開始執行接收的動作,但發送進程的發送動作稍微早了一點或稍微晚了一點(在收發雙方事先未進行同步的情況下,發送時刻不可能恰好和接收時刻精確地重合),這都會使接收失敗。
綜上所述,在計算機進程之間的通信過程中,廣泛使用緩存。緩存就是在計算機的存儲器中設置的一個臨時存放數據的空間。發送進程將欲發送的數據先寫入緩存,然后接收進程在合適的時機讀出這些數據。緩存類似於郵局在街上設立的郵筒。人們可以將欲發送的信件投到郵筒中。郵局的郵遞員按照他的計划在適當的時候打開郵筒,將信件取走,交到郵局,進行下一步處理。緩存可以很好地解決發送速率和接收速率不一致的矛盾,還可以很方便地進行串並轉換,即比特流串行寫入並行讀出,或並行寫入串行讀出。緩存也可稱為緩沖或緩沖區(有關緩存更詳細的講解可參考《2021 版操作系統高分筆記》)。
介質訪問控制
介質訪問控制分類
知識背景∶在局域網中,如果某共用信道的使用產生競爭,怎么能夠更好地分配信道的使用權,是一個非常重要的問題,而介質訪問控制就是為了解決此問題而誕生的。
考研所要求的介質訪問控制分為以下3類∶
- 信道划分介質訪問控制。
- 隨機訪問介質訪問控制。
- 輪詢訪問介質訪問控制。
其中,1)是靜態分配信道的方法,而2)和3)是動態分配信道的方法。
信道划分介質控制訪問
首先介紹多路復用技術的基本概念。
當傳輸介質的帶寬超過了傳輸單個信號所需的帶寬時,人們就通過在一條介質上同時攜帶多個傳輸信號的方法來提高傳輸系統的利用率,這就是所謂的多路復用,也是實現信道划分介質訪問控制的途徑。
多路復用技術能把多個信號組合在一條物理信道上進行傳輸,使多個計算機或終端設備共享信道資源,從而提高了信道的利用率。圖3-11為多路復用技術的示意圖。
故事助記∶現在杭州市有10個不同地方的人都去杭州市某一個郵局寄信,寄往上海的10個不同地方(這里的郵局就類似於多路復用器),而到了上海之后,郵遞員再將這10封信送到各自的目的地。
信道划分介質訪問控制分為以下4種。
頻分多路復用
將一條信道分割成多條不同頻率的信道,就類似於將一條馬路分割成多個車道,盡管同一時間車輛都在這條馬路上行駛,但是分別行駛在不同的車道上,所以不會發生沖突。現在假設每個車道的寬度不能改變了,但是需要加車道,所以馬路就必須變寬,類似於使用頻分復用時,如果復用數增加,那么信道的帶寬(此時的帶寬是頻率帶寬,不是數據的發送速率)必須得增加。
注意∶每個子信道分配的帶寬可以不相同(可聯想人行道和機動車道是不一樣寬的),但它們的總和一定不能超過信道的總帶寬。在實際應用中,為防止子信道之間的干擾,相鄰信道之間要加入"保護頻帶"(可聯想人行道與機動車道、機動車道與機動車道之間的欄桿的作用)。
時分多路復用
假設現在只有一個玩具,卻有10個小孩要玩,這時候只能將一個固定的時間分割成10 份,10個小孩輪流玩這個玩具,即時分多路復用。
所以當使用時分多路復用時,復用數增加並不需要加大信道帶寬,只需將每個信道分得的時間縮小即可。也許很多人在這里會有疑問,如果恰好某個時間輪到一個小孩玩了,但是這個小孩現在睡着了,豈不是這段時間就浪費了嗎?沒錯,是浪費了,這時候就需要把時分復用改進,於是引入統計時分復用。
繼續上面的例子,現在如果該玩具輪到某個小孩玩,但是他睡着了,立刻跳過他,給下一個小孩玩,這樣就基本可以保證玩具沒有空閑時刻。可見每個孩子下次輪到自己玩的時間都是不確定的,如果睡覺的人多了,很快就輪到了;如果睡覺的人少,就很慢。因此,統計時分復用是一種動態的時間分配(會考選擇題,請記住),同時又是異步的(每個孩子玩玩具的時間周期是不固定的),所以統計時分復用又稱為異步時分復用。而普通的時分復用就是同步時分復用(因為每個孩子都在一個固定的周期才能得到玩具,即使中間有孩子睡覺也要等)。由上面的分析,一種極其經典的題型就誕生了,參考例3-6。
【例3-6】假設某線路的傳輸速率為10Mbits,且有10個用戶在使用。使用同步時分復用和異步時分復用的最高速率分別是多少?
解析∶分析可知,同步時分復用不管此時信道是否空閑,一定要等到時間分配給它,才可進行數據傳輸,所以最高速率為(10Mbit/s)/10=1Mbit/s;
而使用異步時分復用則不同,信道是沒有空閑的。當只有一個用戶傳輸數據時,其他9個用戶都停止,那么此時該用戶的傳輸速率可以達到最大,即10Mbit/s。類似上面10個小朋友,如果9個小朋友睡着了,沒睡着的那個小孩就可以一直玩。
波分多路復用
波分多路復用就是光的頻分多路復用,在一根光纖中傳輸多種不同頻率(波長)的光信號,由於各路光的頻率(波長)不同,因此各路光信號不互相干擾。最后,再用分波器將各路波長不一樣的光分解出來,如圖3-12所示。
碼分多路復用
碼分多路復用又稱為碼分多址(CDMA),它既共享信道的頻率,又共享時間,是一種真正的動態復用技術。本書主要講解CDMA原理中的一個考點,其他內容考研不會涉及,有興趣的考生可參考教材上的詳細講解。考點分析如下。
概念∶每個站點都維持一個屬於該站點的芯片序列,並且是固定的。
假如站點A的芯片序列為00011011,則A站點發送00010111表示發送比特1;而將00011011每位取反,即發送11100100表示發送比特0。習慣將芯片序列中的0寫為-1,1寫為+1,所以A站的芯片序列就是(-1-1-1+1+1-1+1+1),一般將該向量稱為該站的碼片向量。
以下兩個定理記住即可。
- 任意兩個不同站的碼片向量正交,即任意兩個站點的碼片向量的規格化內積一定為0。
- 任意站點的碼片向量與該碼片向量自身的規格化內積一定為1;任何站點的碼片向量和該碼片的反碼向量的規格化內積一定為-1。
考點∶某個CDMA站接收到一個碎片序列,怎么去判斷是哪站發來的數據,並怎么識別發送了什么信息?見例3-7。
【例3-7】某個CDMA站接收方收到一條如下所示的碎片系列:(-1+1-3+1-1-3+1+1)
假設各個站點的碼片向量如下∶
站點A∶(-1-1-1+1+1-1+1+1)
站點B∶(-1-1+1-1+1+1+1-1)
站點C∶(-1+1-1+1+1+1-1-1)
站點D∶(-1+1-1-1-1-1+1-1)
試問∶哪些站點發送了數據?分別發送了什么數據?
解析∶此題的解答步驟較為固定,只需將接收到的碎片序列分別與站點A、B、C、D的碼片向量進行規格化內積即可。內積為1表示發送了比特1,內積為-1表示發送了比特0,內積為0表示沒有發送數據,計算如下∶
站點A∶(-1+1-3+1-1-3+1+1)·(-1-1-1+1+1-1+1+1)/8=1。
站點B∶(-1+1-3+1-1-3+1+1)·(-1-1+1-1+1+1+1-1)/8=-1。
站點C∶(-1+1-3+1-1-3+1+1)·(-1+1-1+1+1+1-1-1)/8=0。
站點D∶(-1+1-3+1-1-3+1+1)·(-1+1-1-1-1-1+1-1)/8=1。
由以上計算結果可知,站點A和站點D發送了比特1,站點B發送了比特0,站點C沒有發送數據。
總結∶碼分多路復用技術具有抗干擾能力強、保密性強、語音質量好等優點,還可以洞少投資和降低運行成本,主要用線通信系統,特別是移動通信系統。CDMA手機就使用了此技術。
隨機訪問介質訪問控制
當幾台計算機都使用一條信道發送數據時,就需要去共享這條信道,而共享信道需着重考慮的一個問題就是如何使眾多用戶能夠合理而方便地共享,並且不發生沖突,於是出現以下兩種划分信道的方法。
第一種是靜態划分信道,讀者也許馬上想到3.5.2小節剛講過的頻分多路復用、時分多路復用等方法,這種方法只要用戶分配到了信道就不會和其他用戶發生沖突。但這種划分信道方法的代價是相當高的,在一個小的局域網里面使用這種方法實在不合適。
第二種是動態地划分信道,而動態地划分信道又分為隨機接入和受控接入。
隨機接入的意思是所有用戶都可以根據自己的意願隨機地發送信息,這樣就會產生沖突(或者稱為碰撞),從而導致所有沖突用戶發送數據失敗。為了解決隨機接入發生的碰撞,CSMA/CD等協議被引入。
受控接入就是不能隨機地發送數據,一定要得到某種東西才有權發數據。
隨機接入在考研中需要掌握4種,即ALOHA 協議、CSMA 協議、CSMA/CD協議和CSMA/CA協議。
以上4種協議的核心思想是通過爭用,勝利者才可以獲得信道,從而獲得信息的發送權。正因為這種思想,隨機訪問介質訪問控制又多了一個綽號∶爭用型協議。
ALOHA協議
最初的ALOHA稱為純ALOHA協議,其基本思想比較簡單∶當網絡中的任何一個節點需要發送數據時,可以不進行任何檢測就發送數據。如果在一段時間內沒有收到確認,該節點就認為傳輸過程中發生了沖突。發生沖突的節點需要等待一段隨機時間后再發送數據,直至發送成功為止。
純ALOHA 協議雖然簡單,但其性能特別是信道利用率並不理想。於是,后來又有了時分ALOHA(Sltted ALOHA)。在時分ALOHA中,所有節點的時間被划分為間隔相同的時隙(Slot),並規定每個節點只有等到下一個時隙到來時才可發送數據。
CSMA協議
載波偵聽多路訪問(CSMA)協議是在 ALOHA 協議的基礎上改進而來的一種多路訪問控制協議。
在CSMA中,每個節點發送數據之前都使用載波偵聽技術來判定通信信道是否空閑。常用的CSMA有以下3種策略。
- 1-堅持CSMA∶當發送節點監聽到信道空閑時,立即發送數據,否則繼續監聽。
- p-堅持CSMA∶當發送節點監聽到信道空閑時,以概率p發送數據,以概率(1-p)延遲一段時間並重新監聽。
- 非堅持CSMA∶當發送節點一旦監聽到信道空閑時,立即發送數據,否則延遲一段隨機的時間再重新監聽。
CSMA/CD協議
CSMA/CD全稱為帶沖突檢測的載波偵聽多路訪問協議,它是在局域網中被廣泛應用的介質訪問控制協議。
在CSMA機制中,由於可能存在多個節點偵聽到信道空閑並同時開始傳送數據,從而造成沖突,但是即使沖突了,CSMA協議也要將已破壞的幀發送完,使總線的利用率降低。
一種CSMA的改進方案是在發送站點傳輸的過程中仍繼續監聽信道,以檢測是否存在沖突。如果發生沖突,信道上可以檢測到超過發送站點本身發送的載波信號的幅度,由此判斷出沖突的存在,那么就立即停止發送(推遲一個隨機的時間再發送),並向總線上發一串阻塞信號,用以通知總線上其他各有關站點,各有關站點接收到該阻塞信號,就不再發送數據了。由此,信道容量就不會因白白傳送已受損的幀而浪費了,從而可以提高總線的利用率。這種方案稱為載波監聽多路訪問/沖突檢測協議,簡寫為CSMA/CD,這種協議已廣泛應用於局域網中。下面詳細講解CSMA/CD協議。
CSMA/CD工作流程∶
每個站在發送數據之前要先檢測一下總線上是否有其他計算機在發送數據,若有,則暫時不發送數據,以免發生沖突;若沒有,則發送數據。計算機在發送數據的同時檢測信道上是否有沖突發生,若有,則采用截斷二進制指數類型退避算法來等待一段隨機時間后再次重發。總體來說,可概括為"先聽后發,邊聽邊發,沖突停發,隨機重發"。
爭用期∶以太網端到端的往返時延(用2x表示),又稱為沖突窗口或者碰撞窗口。只有經過爭用期這段時間還沒有檢測到沖突,才能肯定這次發送不會發生沖突。
例如,以太網規定取51.2us為爭用期的長度。對於10Mbit/s的以太網,在爭用期內可發送512bit,即64B。在以太網發送數據時,如果前64B沒有發生沖突,那么后續的數據也不會發生沖突(表示已成功搶占信道)。換句話說,如果發生沖突,就一定在前64B。由於一檢測到沖突就立即停止發送,這時發送出去的數據一定小於64B,因此,以太網規定最短幀長為64B,凡長度小於64B的都是由於沖突而異常終止的無效幀。
需要指出的是,以太網端到端的單程時延實際上小於爭用期的一半(25.6us),以太網之所以這樣規定,還考慮了其他一些因素,如中繼器所增加的時延等。
疑問1∶在教材或者其他輔導書中出現凡是長度小於64B的幀都是由於沖突而異常終止的無效幀,也許會有人提出疑問,如果只發50B的幀,並且在發送的過程中沒有發生碰撞,接收端也正確收到了,難道也當作無效幀嗎?
當然不是,因為在以太網中傳輸數據幀時,沒有小於64B的幀。如果發送的幀小於64B,MAC子層會在數據字段的后面加入一個整數字節的填充字段,以保證以太網的MAC幀的長度不小於64B。關於上層協議是如何剝掉這個沒用的填充字段的,將在MAC 幀的格式中詳細講解。
疑問2∶以太網把爭用期定為51.2us,即對於10Mbit/s的以太網,在爭用期內可以發送64B,所以最短有效幀為64B,那么如果現在是100Mbits的以太網,最短有效幀還是64B嗎?
解析∶沒錯,仍然是64B,此時只需將爭用期設置為5.12us(也就是將電纜長度減少到100m,並且幀間的時間間隔從原來的9.6μs改為現在的0.96us,都是10Mbit/s 以太網的1/10)。可見,最短有效幀長和最遠兩個站的距離及傳輸速率都是有關系的,並且成正比,參考例3-8。
【例3-8】(大綱樣題)根據CSMA/CD協議的工作原理,下列情形中需要提高最短幀長度的是( )。
A.網絡傳輸速率不變,沖突域的最大距離變短
B.沖突域的最大距離不變,網絡傳輸速率提高
C.上層協議使用TCP的概率增加
D.在沖突域不變的情況下減少線路中的中繼器數量
解析∶B。根據以上分析,很容易得知A說反了,B為正確選項,C和D純屬胡扯。
【例3-9】(2009年統考真題)在一次采用CSMA/CD協議的網絡中,傳輸介質是一根完整的電纜,傳輸速率為1Gbit/s,電纜中的信號傳播速度是2×108m/s。若最小數據幀長度減少800bit,則最遠的兩個站點之間的距離至少需要( )。
A.增加160m
B.增加80m
C.減少 160m
D.減少 80m
解析∶D。可以計算出減少800bit后,節省了多少發送時間,即 800bit/10000000000bit/s=0.8×10-6s,也就是說,最大往返時延可以允許減少0.8×10-6s,或者說最大端到端單程時延可以減少0.4×10-6s。要使得單程時延減少,且傳播速度不變,只有將最遠的兩個站點之間的距離減少才能滿足要求,並且需要減少0.4×10-6s×2×10m/s=80m。
疑問3∶為什么CSMA/CD用於信道使用半雙工的網絡環境,而對於使用全雙工的網絡環境則無需采用這種介質訪問控制技術?
解析∶以太網工作模式有兩種,一種是全雙工工作模式,另一種是半雙工工作模式。現在分析這兩種模式下是不是都使用了CSMA/CD 沖突檢測機制。
全雙工模式∶在同一時間內,網卡不可能接收到兩個都要求發送數據的請求,就好像CPU 不可能在同一時間執行兩條指令一樣,也就是說,網卡在接收到需要發送的數據報后,就像排隊一樣一個一個往外發送,怎么可能會沖突呢?
所以,因為同時發送數據而產生的碰撞就不可能發生了。這個時候有人可能要問,那接收呢?發送可能會和接收沖突,其實這么想就錯了。在全雙工工作模式下,將使用雙絞線中的兩對線進行工作,一對用於發送,另一對用於接收。既然發送和接收是分開的兩條鏈路,那么就不存在沖突的問題了。就像在高速公路上,一個車道是由東往西的行駛車道,另一個車道是由西往東的行駛車道。兩車對開,行駛於各自的車道,不可能發生沖撞。所以,全雙工工作模式下是不需要使用CSMACD 沖突檢測機制的。還有一點需要注意,全雙工通信只有在數據傳輸鏈路兩端的節點設備都支持全雙工時才有效。
半雙工模式∶因為發送和接收使用同一個信道,所以肯定要使用CSMA/CD沖突檢測機制。
疑問4∶碰撞是什么時候檢測出來的?
解析∶並不是說一碰撞就可以檢測出來,而是當發送端在發送數據時竟然收到了數據(相當詭異的事情),收到數據的這一刻才知道中途碰撞了。2010年考研真題的計算機網絡最后一道大題就是考查此知識點。
截斷二進制指數類型退避算法∶發生碰撞的站在停止發送數據后,要推遲一個隨機時間才能再發送數據。退避的時間按照以下算法計算。
- 確定基本退避時間,一般取爭用期 2t。
- 定義重傳參數k,k=Min【重傳次數,10】。可見,當重傳次數不超過10時,參數k等於重傳次數;當重傳次數超過10時,k 就不再增大而一直等於10。
- 從整數集合{0,1,…,2k-1}中隨機選擇一個數記為r,重傳所需時延就是r倍的基本退避時間,即2rt。
- 當重傳次數達到16次仍不能成功時,說明網絡太擁擠,直接丟棄該幀,並向高層報告。
截斷二進制指數類型退避算法可使重傳需要推遲的平均時間隨重傳次數的增大而增大。但當數據發送量大時,可能導致一方的重傳推遲時間越來越長,而另一方卻在連續發送數據幀,這稱為捕獲效應。
【例3-10】在二進制指數后退算法中,16次碰撞之后,站點會在0~( )之間選擇一個隨機數。
A.1023
B.215-1
C.216-1
D.以上都錯誤
解析∶D。在二進制指數后退算法中,N次碰撞之后,站點會在0~M之間選擇一個隨機數,分以下3類情況討論。
- 當1≤N≤10時,M=2N-1。
- 當10≤N≤15時,M=210-1=1023。
- 當N=16時,直接丟棄,並給計算機發送一個錯誤報告。
注意∶二進制指數后退算法=解決了站點檢測到沖突后繼續等待的時間問題。
補充知識點∶什么是非受限協議?
解析∶非受限就是不用停下來等待確認幀。既然不用等待確認幀,就可以一直不停地發送,因此計算數據傳輸率時,應該忽略傳播時延。
【例3-1】((2010年統考真題)某局域網采用CSMA/CD協議實現介質訪問控制,數據傳輸率為10Mbit/s,主機甲和主機乙之間的距離為2000m,信號傳播速度是2×108m/s,請回答下列問題,要求說明理由或寫出計算過程。
- 若主機甲和主機乙發送數據時發生沖突,則從開始發送數據時刻起,到兩台主機均檢測到沖突時刻為止,最短經過時間是多少?最長經過時間是多少?假設主機甲和主機乙發送數據時,其他主機不發送數據。
- 若網絡不存在任何沖突與差錯,主機甲總是以標准的最長以太數據幀(1518B)向主機乙發送數據,主機乙每成功收到一個數據幀后立即向主機甲發送一個64B的確認幀,主機甲收到確認幀后立即發送下一個數據幀。此時主機甲的有效數據傳輸速率是多少?不考慮以太網幀的前導碼。
解析∶
-
題目中已經說明主機甲和主機乙發送數據時發生沖突,說明在主機甲發送的數據未到達主機乙時,主機乙已經開始發送數據了。從開始發送數據時刻起,到兩台主機均檢測到沖突時刻為止(解釋一下什么是檢測到沖突∶就是主機甲在發送數據的同時,竟然收到數據了,也就是說沖突了),顯然是甲和乙同時發送數據時才能使得時間最短,假設甲和乙不同時發送數據,不妨設甲開始發送數據,此時計時器已經開始計時,乙再發送數據到達甲的時間肯定大於單倍時延,所以甲和乙同時發送數據可以使得時間最短。
與此同時,要使得時間最長,顯然就是讓甲發送的數據就快到達乙了,乙立刻發送數據,這樣就可以使得時間拉到2倍的單程時延。這兩個問題解決了,剩下的就是求單程傳播時延了,題目告訴了主機甲和主機乙的距離為2000m,信號傳播速度是2×108m/s,所以單程時延=2000m/2×108m/s=0.01ms。綜上所述,從開始發送數據時刻起,到兩台主機均檢測到沖突時刻為止,最短經過時間是0.01ms,最長經過時間是0.02ms。
-
首先計算主機甲發送一個以太網數據幀的時間=1518×8bit÷10Mbit/s=1.2144ms,接着主機乙每成功收到一個數據幀后立即向主機甲發送一個64B的確認幀,發送此確認幀需要時間=64×8bit÷10Mbit/s=0.0512ms,中間還有一個往返時延,時間為0.02ms,1)中已經計算過,所以主機甲成功發送一數據幀所需要的總時間=1.2144ms+0.0512ms+0.02ms=1.2856ms,也就是說,主機甲在1.2856ms里可以發送1518B的數據幀。還有一點需要提醒大家,題目中是說有效數據傳輸速率,這1518B的幀里面還包括18B的首部和尾部,不屬於有效數據部分,所以真正有效的數據其實只有1500B,主機甲的有效數據傳輸速率=1500×8bit/1.2856ms=9.33Mbit/s。
CSMA/CA 協議
CSMA/CA主要用在無線局域網中,由IEEE 802.11 標准定義,它在CSMA的基礎上增加了沖突避免的功能。沖突避免要求每個節點在發送數據之前監聽信道。如果信道空閑,則發送數據。發送節點在發送完一個幀后,必須等待一段時間(稱為幀間間隔),檢查接收方是否發回幀的確認(說明CSMA/CA協議對正確接收到的數據幀進行確認,2011年真題中的一道選擇題考查了此知識點)。若收到確認,則表明無沖突發生;若在規定時間內沒有收到確認,表明出現沖突,重發該幀。
【例3-12】(2011年統考真題)下列選項中,對正確接收到的數據幀進行確認的MAC 協議是( D)。
A. CSMA
B.CDMA
C.CSMA/CD
D.CSMA/CA
解析∶D。此題相信大部分考生的情況是對於A和C比較熟悉,對於B和D則完全不知所雲。因為在復習的過程中可能不會太在意。CSMA/CD協議相信考生再熟悉不過了,整個過程也能夠倒背如流,立馬可以被排除。其次,CSMA/CD協議是對CSMA協議的改進,既然CSMA/CD都沒有,那CSMA 協議就必然沒有。
CDMA稱為碼分多路復用,工作在物理層,不存在對數據幀進行確認。
輪詢訪問介質訪問控制
輪詢訪問介質訪問控制主要用在令牌環局域網中,目前使用得很少。
在輪詢訪問介質訪問控制中,用戶不能隨機地發送信息,而是通過一個集中控制的監控站經過輪詢過程后再決定信道的分配。典型的輪詢訪問介質訪問控制協議就是令牌傳遞協議。
令牌環局域網把多個設備安排成一個物理或邏輯連接環。為了確定哪個設備可以發送數據,讓一個令牌(特殊格式的幀)沿着環形總線在計算機之間依次傳遞。當計算機都不需要發送數據時,令牌就在環形網上"游盪",而需要發送數據的計算機只有拿到該令牌才能發送數據幀,所以不會發生沖突(因為令牌只有一個),這就是所謂的受控接入。有關令牌環網絡更詳細的講解請參考3.6.7小節。
局域網
局域網的基本概念和體系結構
局域網(LocalArea Network,LAN)是指一個較小范圍(如一個公司)內的多台計算機或者其他通信設備,通過雙絞線、同軸電纜等連接介質互連起來,以達到資源和信息共享目的的互聯網絡。
局域網最主要的特點
- 局域網為一個單位所擁有(如學校的一個系使用一個局域網)。
- 地理范圍和站點數目有限(雙絞線的最大傳輸距離為100m,如果要加大傳輸距離,則在兩段雙絞線之間安裝中繼器,最多可安裝4個中繼器。例如,安裝4個中繼器連接5個網段,則最大傳輸距離可達500m,所以地理范圍有限。局域網一般可以容納幾台至幾千台計算機,所以站點數目有限)。
- 與以前非光纖的廣域網相比,局域網具有較高的數據率、較低的時延和較小的誤碼率(現在局域網的數據率可以達到萬兆了;傳輸距離較短所以時延小;距離短了失真就小,誤碼率自然就低)。
局域網的主要優點
- 具有廣播功能(具體見補充知識點),從一個站點可很方便地訪問全網。局域網上的主機可共享連接在局域網上的各種硬件和軟件資源。
補充知識點∶局域網的廠播功能。
解析∶要清楚局域網的廣播並不是該局域網的每個站點都要接收該數據,每個幀的首部都會有接收站點的物理地址(MAC 地址),而當該幀到達每個站點時,該站點就會用網卡中的地址和首部的物理地址進行比較,如果一樣就接收該幀,否則丟棄該幀。但是千萬注意廣域網不能用廣播通信(會造成網絡堵塞),而應該用點對點通信,使用交換機來轉發(后講)。
- 便於系統的擴展和演變,各設備的位置可靈活地調整和改變。
- 提高了系統的可靠性、可用性。
- 各站為平等關系而不是主從關系。
局域網的主要技術要素
局域網的主要技術要素包括網絡拓撲結構、傳輸介質與介質訪問控制方法。其中,介質訪問控制方法是最為重要的技術要素,決定着局域網的技術特性。
局域網的主要拓撲結構
局域網的主要拓撲結構包括星形網、環形網、總線型網和樹形網(星形網和總線型網的結合)。
局域網的主要傳輸介質
局域網的主要傳輸介質包括雙絞線、銅纜和光纖等,其中雙絞線為主流傳輸介質。
局域網的主要介質訪問控制方法
局域網的主要介質訪問控制方法包括CSMA/CD、令牌總線和令牌環。
前兩種作用於總線型網,令牌環作用於環形網。IEEE的802標准定義的局域網參考模型只對應於OSI參考模型的數據鏈路層和物理層,並且將數據鏈路層拆分為兩個子層∶邏輯鏈路控制(LLC)子層和媒體接入控制(MAC)子層。與接入到傳輸媒體有關的內容都放在MAC子層,而LLC子層與傳輸媒體無關。
由於以太網在局域網市場中取得了壟斷地位,DIX Ethemet V2標准被廣泛使用,而802 委員會制定的LLC子層作用已經不大,現在很多網卡上僅裝有MAC協議而沒有LLC協議,因此局域網的考點重心應該圍繞以太網,本書也將會着重講解以太網。
以太網的工作原理
知識背景∶IEEE 802.3標准是一種基帶總線型的局域網標准。在不太嚴格區分的時候,IEEE 802.3可以等同於以太網標准,因為它是基於原來的以太網標准誕生的一個總線型局域網標准,所以下面重點講解以太網。
以太網是迄今為止世界上最為成功的局域網產品。以太網最初由Xerox 公司研制出。它的最初規約是DIX Ethenet V2標准。
在此基礎上,專門負責制定局域網和城域網標准的IEEE 802委員會制定了IEEE 802.3標准。IEEE 802.3標准和DIX EthermetV2標准差別很小,所以一般也稱802.3局域網為以太網。特別是隨着快速以太網、千兆以太網和萬兆以太網相繼進入市場,以太網現在幾乎成了局域網的同義詞。
以太網采用總線拓撲結構,所有計算機都共享一條總線,信息以廣播方式發送。為了保證數據通信的方便性和可靠性,以太網使用了CSMA/CD技術對總線進行訪問控制。考慮到局域網信道質量好,以太網采取了以下兩項重要的措施以使通信更加簡便。
- 采用無連接的工作方式。
- 不對發送的數據幀進行編號,也不要求對發送方發送確認。
因此以太網提供的服務是不可靠的服務,即盡最大努力交付,差錯的糾正由傳輸層的TCP 完成。
疑問∶前面已經說過數據鏈路層是不提供重傳機制的,為什么以太網會有重傳機制?
解析∶以太網是不可靠的,這意味着它並不知道對方有沒有收到自己發出的數據報,但如果由它發出的數據報發生錯誤(並且知道錯了),它會進行重傳。在以前講數據鏈路層時,發送方根本不知道自己發送的數據報有錯(因為接收方不會發確認,有錯都是直接丟棄的),但是現在不一樣了,發送方知道碰撞了(數據沒發完之前),知道錯了,肯定要重傳的。因為以太網的重傳是微秒級,而傳輸層的重傳(如TCP的重傳)為毫秒級,應用層的重傳達到秒級,可以看到越底層的重傳,速度越快,所以對於以太網錯誤,以太網必須要具有重傳機制,不然高層重傳就會花費更多的時間。但是還有一種情況即使知道碰撞了,也不需要重傳,那就是發送方的數據已經發完了再收到碰撞信號,這時候就不要重傳了,因為發送方已經發完了,不能肯定這個碰撞是不是因為自己發送數據時產生的,所以不需要重傳。
以太網的MAC幀
局域網中的每台計算機都有一個唯一的號碼,稱為MAC地址或物理地址、硬件地址。
每塊網卡出廠即被賦予一個全球唯一的MAC地址,它被固化在網卡的ROM中,共48bit(6B)
例如,01-3e-01-23-4e-3c十六進制表示,最前面的01,如果轉換成二進制就是0000 0001。高24bit為廠商代碼,低24bit為廠商自行分配的網卡序列號。
由於總線上使用的是廣播通信,因此網卡從網絡上每收到一個MAC 幀,先要用硬件檢查 MAC幀中的MAC地址,如果是發往本站的幀就收下,否則丟棄。
MAC幀的格式有兩種∶IE 802.3標准和DIX Ethemet V2標准。
考研一般考查的是最常用的DIX Ethernet V2標准格式,如圖3-13所示。
MAC 幀組成部分的詳細分析如下。
-
前導碼∶在幀的前面插入8B,使接收端與發送端進行時鍾同步。這8B又可分為前同步碼(7B)和幀開始定界符(1B)兩部分。
注意∶不知道大家還記不記得,在講解組幀的時候,特意說明了MAC幀不需要幀結束符,因為以太網在傳送幀時,各幀之間必須有一定的間隙。因此,接收端只要找到幀開始定界符,其后面連續到達的比特流就都屬於同一個MAC幀,所以圖3-13中只有幀開始定界符。
-
目的地址、源地址∶均使用48bit(6B)的MAC地址。
注意∶地址字段包括目的地址和源地址兩部分。處於前面的地址字段為目的地址,處於后面的地址字段為源地址。
IEEE 802.3標准規定,源地址字段中前8位的最后一位恆為"0",這一點從目的地址格式中可以看出。目的地址字段有較多的規定,原因是一個幀有可能發送給某一個工作站,也有可能發送給一組工作站,還有可能發送給所有工作站。因此,將后面兩種情況分別稱為組播幀和廣播幀。
當目的地址前8位的最后一位為"0"時,表示幀要發送給某一個工作站(這個就是為什么源地址字段中前8位的最后一位恆為"0"的原因),即所謂的單站地址。
當目的地址前8 位的最后一位為"1",其余不全為"1"時,表示幀發送給一組工作站,即所謂的組播地址。
當目的地址前8位的最后一位為"1",其余也全為"1"時,表示幀發送給所有工作站,即所謂的廣播地址。
看到這里考生可能會問,每個主機很明顯可以認識單播幀(與自己MAC地址一樣)和廣播幀(全"1"),但是組播幀怎么識別?組播幀的識別,由適配器通過使用編程的方法實現,不在考試范圍之內。
綜上分析,只有目的地址才能使用多播地址和廣播地址。
-
類型∶占 2B,指出數據域中攜帶的數據應交給哪個協議實體處理。例如,若類型字段的值為0x0800,就表示上層使用的是IP數據報等,這個無需記憶,知道是怎么回事就行。
-
數據∶占46~1500B。46和1500是怎么來的?首先,由CSMA/CD算法可知,以太網幀的最短幀長為64B,而MAC幀的首部和尾部的長度為18B,所以數據最短為64B-18B=46B。其次,最大的1500B是規定的,沒有為什么。
補充知識點∶什么原因使以太網有一個最小幀長和最大幀長?
解析∶設置最小幀長是為了區分噪聲和因發生碰撞而異常終止的短幀。設置最大幀長是為了保證每個站都能公平競爭接入到以太網。因為如果某個站發送特別長的數據幀,則其他站就必須等待很長的時間才能發送數據(了解即可)。
-
填充∶前面講過,由於CSMA/CD算法的限制,最短幀長為64B,因此除去首部18B,如果數據長度小於46B,那么就得填充,使得幀長不小於64B。當數據字段長度小於46B時,需要填充至46B;當數據字段長度大於或等於46B時,則無需填充。因此,填充數據長度的范圍為0~46B。
-
校驗碼(FCS)∶占4B,采用循環冗余碼,不但需要校驗MAC幀的數據部分,還要校驗目的地址、源地址和類型字段,但是不校驗前導碼。
-
802.3幀格式與DIX 以太幀格式的不同之處∶
1)幀起始標志∶與802.4和802.5兼容。
2)長度域∶替代了DIX幀中的類型域,指出數據域的長度。
以太網的傳輸介質
傳統以太網可使用的傳輸介質有4種,即粗纜、細纜、雙絞線和光纖。
對應的,MAC層下面給出了這4種傳輸介質的物理層,即10Base5(粗纜))、10Base2(細纜)、10Base-T(雙絞線)和10Base-F(光纖)。
其中,Base指電纜上的信號為基帶信號,采用曼徹斯特編碼;
Base前面的10表示數據傳輸速率為10Mbit/s;
Base后面的5或2表示每一段電纜最長為500m 或200m(實為185m);
T表示雙絞線,F表示光纖。常用以太網線纜見表3-4。
高速以太網
一般,數據傳輸速率達到或超過100Mbit/s的以太網稱為高速以太網。
100Base-T以太網
100Base-T以太網是在雙絞線上傳送 100Mbit/s 基帶信號的星形拓撲結構以太網,使用CSMA/CD協議。
100Base-T以太網又稱為快速以太網。
100Base-T以太網可在全雙工方式下工作而無沖突發生,此時無須使用CSMA/CD協議,如果是在半雙工方式下工作時仍需使用CSMA/CD協議。
為了提高數據傳輸速率,100Base-T以太網保持最短幀長不變,但將一個網段的最大電纜長度減小到100m,幀間時間間隔從原來的9.6ms 改為現在的0.96ms。
吉比特以太網
吉比特以太網又稱為千兆以太網,具有以下特點。
- 允許在1Gbit/s下全雙工和半雙工兩種方式工作。
- 在半雙工方式下使用CSMA/CD協議(全雙工方式不需要使用CSMA/CD協議,前面已經講過)。
當吉比特以太網工作在半雙工方式下時,必須使用CSMA/CD協議進行沖突檢測。
如果要提高數據傳輸速率,只有減小最大電纜長度或增大幀的最小長度,這樣才能使得信道的利用率比較高。吉比特以太網保持了網段最大電纜長度仍為100m,但采用了"載波延伸"的方法。這樣使得最短幀長仍為64B,同時將爭用期增大為512B。凡發送的MAC幀長不足512B 時,就用一些特殊字符填充在幀的后面,使MAC幀的發送長度達到512B。
但是這樣又會出現問題,如果每次都是發送30B,豈不是每次都填充482B,這樣的話就造成了太大的浪費,所以吉比特以太網增加了一種功能即分組突發(分組突發為非考點,有興趣的考生可參考相關教材)。
10吉比特以太網(非重點)
10吉比特以太網的特點∶
- 保留了IEEE802.3標准規定的以太網幀格式、最小幀長和最大幀長,便於升級。
- 不再使用銅線而只使用光纖作為傳輸介質。
- 只工作在全雙工方式下,因此沒有爭用問題,也不使用CSMA/CD協議。
最后,以太網從10Mbits到10Gbits的演進證明了以太網是∶
- 可擴展的(10Mbit/s~10Gbit's)。
- 靈活的(多種傳輸媒體、全/半雙工、共享/交換)。
- 易於安裝。
- 穩健性好。
【例3-13】(2012年統考真題)以太網的MAC協議提供的是( )。
A.無連接不可靠服務
B. 無連接可靠服務
C.有連接不可靠服務
D.有連接可靠服務
解析∶A。
- 有連接與無連接的判斷∶很明顯MAC幀首部格式中只有目的MAC地址、源MAC 地址和類型字段,並沒有建立連接的字段,所以以太網MAC協議提供的是無連接的服務。
- 可靠與不可靠的判斷∶以太網幀是一種無編號的幀,當目的站收到有差錯的數據幀時,就丟棄此幀,其他什么也不做,差錯的糾正由高層來決定,所以以太網的 MAC 協議是不可靠的。
無線局域網
IEEE802.11是無線局域網的協議標准,包括IEEE802.11la和IEEE802.11b等。
無線局域網的組成
無線局域網可分為兩大類∶有固定基礎設施和無固定基礎設施。
-
有固定基礎設施的無線局域網的組成
對於有固定基礎設施的無線局域網,IE802.1 標准規定其最小構件為基本服務集(BSS)。一個基本服務集包括一個基站和若干個移動站,所有站在本BSS 內可直接通信,但在和本BSS以外的站通信時都必須通過本BSS的基站。因此,BSS中的基站稱為接入點(AP)。
一個基本服務集可以是孤立的,也可通過接入點連接到一個主干分配系統(Distitution System,DS),然后再接入到另一個基本服務集,構成擴展的服務集(Extended ServiceSet,ESS)。
ESS還可通過門橋(Portal)設備為無線用戶提供到非IEEE 802.11無線局域網(如到有線連接的因特網)的接入。門橋的作用就相當於一個網橋。
-
無固定基礎設施的無線局域網的組成
無固定基礎設施的無線局域網又稱為自主網絡,自主網絡沒有上述基本服務集中的接入點,而是由一些處於平等狀態的移動站之間相互通信組成的臨時網絡。這些移動站都具有路由器的功能。
IEEE 802.11 標准中的物理層
IEEE 802.11標准中的物理層有以下3種實現方法。
- 跳頻擴頻(FHSS)。
- 直接序列擴頻(DSS)。
- 紅外線(IR)。
IEEE 802.11標准中的MAC 層
IEEE802.11標准中的MAC層在物理層上面。它包括兩個子層,從下往上依次為分布協調功能(DCF)子層和點協調功能(PCF)子層。
由於用CSMA/CD協議對無線局域網進行沖突檢測花費過大並且沖突檢測到信道空閑后仍可能發生沖突,因此在無線局域網的MAC層中,使用的是帶有碰撞避免功能的CSMA/CA 協議,同時還增加了確認機制。
令牌環網工作原理
最有影響的令牌環網是IBM公司的Token Ring,IEEE802.5標准就是在IBM公司的Token Ring 協議的基礎上發展和形成的,如圖3-14所示。
在Token Ring中,節點通過環接口連接成物理環形。令牌是一種特殊的MAC控制幀,幀中有一位標志令牌(忙/閑)。令牌總是沿着物理環單向逐站傳送,傳送順序與節點在環中排列順序相同。
令牌環網中令牌和數據的傳遞過程如下∶
-
當網絡空閑時,環路中只有令牌在網絡中循環傳遞。
-
令牌傳遞到有數據要發送的節點處,該節點就修改令牌中的一個標志位,然后在令牌中附加自己需要傳輸的數據,這樣就將令牌改換成了一個數據幀,源節點將這個數據幀發送出去。
-
數據幀沿着環路傳遞,接收到的節點一邊轉發數據,一邊查看幀的目的地址。如果目的地址和自己的地址相同,接收節點就復制該數據幀以便進行下一步處理。
-
數據幀沿着環路傳輸,直到到達該幀的源節點,源節點接收自己發出去的數據幀便不再轉發。同時,該源節點可以通過校驗返回的數據幀,以查看數據傳輸過程中是否有錯,若有錯,則重傳該幀。
-
源節點傳送完數據以后,重新產生一個令牌,並將令牌傳遞給下一個站點,以交出發送數據幀的權限。
廣域網
廣域網的基本概念
廣域網通常是指覆蓋范圍很廣(遠遠超出一個城市的范圍)的長距離網絡。
廣域網由一些節點交換機以及連接這些交換機的鏈路組成。節點交換機將完成分組存儲轉發的功能。互聯網雖然覆蓋范圍也很廣,但一般不稱它為廣域網。因為在這種網絡中,不同網絡(可以為局域網也可以為廣域網)的"互連"才是其最主要的特征,它們之間通常采用路由器來連接。
而廣域網只是一個單一的網絡,它使用節點交換機連接各主機而不是用路由器連接各網絡。雖然節點交換機和路由器都是用來轉發分組的,它們工作原理也類似,但區別是節點交換機在單個網絡中轉發分組,而路由器在多個網絡構成的互聯網中轉發分組。廣域網和局域網的區別與聯系見表3-5。
注意∶
- 從層次上考慮,廣域網和局域網的區別很大,因為局域網使用的協議主要在數據鏈路層(包含少量物理層的內容),而廣域網使用的協議主要在網絡層。
- 廣域網中存在一個最重要的問題,即路由選擇和分組轉發。路由選擇協議負責搜索分組從某個節點到目的節點的最佳傳輸路由,以便構造路由表。從路由表再構造出轉發分組的轉發表,分組是通過轉發表進行轉發的。
補充知識點∶局域網、廣域網和因特網之間的關系。
解析∶為了方便理解,可以將廣域網看成一個大的局域網,從專業角度來講就是通過交換機連接多個局域網,組成更大的局域網,即廣域網。因此,廣域網仍然是一個網絡。而因特網是多個網絡之間互連,即因特網由大局域網(廣域網)和小局域網共同通過路由器相連。因此,局域網就可通過因特網與另一個相隔很遠的局域網進行通信。
PPP
知識背景∶SLIP主要完成數據報的傳送,但沒有尋址、數據檢驗、分組類型識別和數據壓縮等功能,只能傳送IP分組。此協議實現起來較簡單,但如果上層不是IP就無法傳輸,並且此協議對一些高層應用也不支持。為了改進 SLIP的缺點,於是制定了點對點協議,即PPP。PPP主要由以下3個部分組成。
- 一個將IP數據報封裝到串行鏈路的方法。
- 一個鏈路控制協議(#)。其用於建立、配置和測試數據鏈路連接,並在不需要時將它們釋放。
- 一套網絡控制協議(NCP)。其中每個協議支持不同的網絡層協議,用來建立和配置不同的網絡層協議。
PPP的幀格式
PPP的幀格式如圖3-15所示。
-
標志字段(F)∶首部和尾部各占1個字節,規定為Ox7E。
補充知識點∶PPP幀的透明傳輸。
解析∶其實在3.1節中講解HDLC幀的幀定界問題時就提到了。當時說的是01111110 為 HDLC幀的首尾標志。這里的7E不就是011110嗎?但是在解決HDLC的透明傳輸時,使用的是零比特填充,即數據部分一旦發現有5個連續的"1",就在后面自動加上一個"0"。但是為了實現 PPP幀的透明傳輸,可不是這樣做的,而是采用了字節填充,步驟如下∶
①把信息字段中出現的每一個Ox7E轉變為2字節序列(Ox7D,Ox5E)。
②若信息字段中出現一個Ox7D(出現了和轉義字符一樣的比特組合),則把Ox7D 轉變為2字節序列(Ox7D,Ox5D)。
③若信息字段中出現 ASCI碼的控制字符(數值小於Ox20的字符),則在該字符前面加入一個Ox7D,同時將該字符的編碼加以改變。例如,出現Ox03(在控制字符中表示"傳輸結束"ETX),就要把Ox03轉換為2字節序列(Ox7D,Ox23)。為什么Ox03 會轉換成 Ox23?其實就是對控制字符的十六進制編碼加了一個偏移量(因為控制字符有Ox20個,所以加上Ox20,保證其不再是控制字符)。
另外,到目前為止,所接觸到的幀只有MAC 幀是有幀間隙的,所以無須加入尾標志。而PPP幀和HDLC幀都是沒有幀間隙的,所以前后都得加標志字段。
-
地址字段(A)∶占1個字節,規定為OxFF,沒有為什么。
-
控制字段(C)∶占1個字節,規定為Ox03,沒有為什么。
-
協議字段∶占2個字節。例如,當協議字段為0x0021時,PPP幀的信息字段就是IP 數據報;若為0xC021,則信息字段是PPP鏈路控制數據;若為0x8021,則表示這是網絡控制數據。
-
信息部分∶占0~1500個字節。為什么不是46~1500個字節?因為PPP是點對點的,並不是總線型,所以無需采用CSMA/CD協議,自然就沒有最短幀。另外,當數據部分出現和標志位一樣的比特組合時,就需要采用一些措施來實現透明傳輸(上面的補充知識點已講)。
-
幀檢驗序列(FCS)∶占2個字節,即循環冗余碼檢驗中的冗余碼。檢驗區間包括地址字段、控制字段、協議字段和信息字段。
可能疑問點∶每個PPP幀首部和尾部都有標志字段F,為什么教材上說連續兩個PPP幀之間只需一個標志字段?
解析∶當連續傳輸兩個幀時,前一個幀的結束標志字段F可以同時作為后一個幀的起始標志字段。
PPP的工作狀態
當用戶撥號接入 ISP時,路由器的調制解調器對撥號做出確認,並建立一條物理連接。這時,個人計算機向路由器發送一系列的LCP分組(封裝成多個PPP幀)。
這些分組及其響應選擇了將要使用的一些PPP參數。接着就進行網絡層配置,網絡控制協議(NCP)給新接入的個人計算機分配一個臨時的IP地址。
這樣,個人計算機就成為因特網上的一個主機了。
當用戶通信完畢時,NCP釋放網絡層連接,收回原來分配出去的IP地址。接着,# 釋放數據鏈路層連接,最后釋放物理層連接。
總結∶
- PPP是一個面向字節的協議。
- PPP不需要的功能∶糾錯(PPP只負責檢錯)、流量控制(由TCP負責)、序號(PPP 是不可靠傳輸協議,所以不需要對幀進行編號)、多點線路(PPP是點對點的通信方式)、半雙工或單工(PPP只支持全雙工鏈路)。
HDLC協議
在通信質量較差的年代,在數據鏈路層使用可靠傳輸協議曾經是一種好的辦法。因此,能實現可靠傳輸的高級數據鏈路控制(HDLC)就成為當時比較流行的數據鏈路層協議。下面介紹HDLC協議。
HDLC協議的基本特點
高級數據鏈路控制(HDLC)協議是ISO制定的面向比特(PPP是面向字節的,這個要記住)的數據鏈路控制協議。它可適用於鏈路的兩種基本配置∶非平衡配置和平衡配置。
- 非平衡配置的特點是由一個主站控制整個鏈路的工作。
- 平衡配置的特點是鏈路兩端的兩個站都是復合站,每個復合站都可以平等地發起數據傳輸,而不需要得到對方復合站的允許。
HDLC協議的幀格式
當采用HDLC協議時,從網絡層交下來的分組,變成了HDLC協議幀的數據部分,數據鏈路層在信息字段的頭尾各加上24位控制信息,這樣就構成了一個完整的HDLC協議幀,如圖 3-16所示。
-
標志字段(F)∶占8位,為"01111110",首尾各有一個"0"作為幀的邊界。為防止在兩個標志字段F之間出現"01111110",HDLC使用比特填充的首尾標志法。當一串比特流未加上控制信息時,掃描整個幀,只要發現有5個連續"1",就立即填入一個"0"。
-
地址字段(A)∶占8位。若使用非平衡方式傳送數據,為次站的地址;若使用平衡方式傳送數據,為確認站的地址。全"1"為廣播方式,全"0"為無效地址。
-
控制字段(C)∶占8位,最復雜的字段,HDLC的許多重要功能都靠控制字段實現。根據其最前面兩位的取值,可將HDLC幀划分為3類∶信息幀(I幀)、監督幀(S幀)和無編號幀(U 幀)。
-
提醒∶3類幀的記憶方式,每當看到HDLC幀的分類就想到"無監息"=""無奸細"。
信息幀用來傳輸數據信息,或使用捎帶技術對數據進行確認和應答;
監督幀用於流量控制和差錯控制,執行對信息幀的確認、請求重發和請求暫停發送等功能;
無編號幀用於提供對鏈路的建立、拆除以及多種控制功能。
-
信息字段∶長度任意,存放來自網絡層的協議數據單元。
-
幀檢驗序列(FCS)∶占16位,即循環冗余碼檢驗中的冗余碼。檢驗區間包括地址字段、控制字段和信息字段。
補充知識點∶PPP的幀格式和 HDLC 協議的幀格式的區別。
解析∶
-
PPP是面向字節的,而 HDLC 協議是面向比特的。這里也可以看出,PPP 應該使用字節填充,而HDLC協議應該使用比特填充。
注意∶有考生提出在謝希仁的第5版教材中提到,當使用同步傳輸時,PPP使用比特填充(這個知識點可以忽略)。
其實可以更專業地解釋為什么PPP一定要面向字節。首先,PPP被明確地設計為以軟件的形式實現,而不像HDLC協議那樣幾乎總是以硬件形式實現。對於軟件實現,完全用字節操作比用單個比特操作更簡單。此外,PPP被設計成跟調制解調器一起使用,而調制解調器是以一個字節為單元,而不是以一個比特為單元接收和發送數據的。
綜上所述,考生可完全默認PPP是面向字節的。
-
PPP幀比HDLC協議幀多一個2字節的協議字段。當協議字段值為Ox0021時,表示信息字段是 IP數據報。
-
PPP不使用序號和確認機制,只保證無差錯接收(通過硬件進行循環冗余碼校驗),而端到端差錯檢測由高層協議完成。HDLC協議的信息幀使用了編號和確認機制。
數據鏈路層設備
網橋的概念和基本原理
隨着局域網的普及和發展,往往需要將多個局域網用一些中間設備連接起來,實現局域網之間的通信,這就是局域網的擴展。這里主要是在物理層和數據鏈路層對局域網進行擴展。在物理層擴展局域網使用的是中繼器和集線器。其缺點如下∶
- 擴大了沖突域且總的吞吐量未提高。
- 不能互連使用不同以太網技術的局域網。
在數據鏈路層擴展局域網是使用網橋。
網橋工作在數據鏈路層,其特點是具有過濾幀的功能。
網橋至少有兩個端口,每個端口與一個網段相連。網橋每從一個端口接收到一個幀,就先暫存到緩存中。若該幀未出現差錯,且欲發往的目的站 MAC地址屬於另一個網段(同一個網段無需轉發,應該丟棄),則通過查找轉發表,將該幀從對應的端口發出。
因此,僅在同一個網段中通信的幀,不會被網橋轉發到另一個網段中,因而不會加重整個網絡的負擔。網橋的內部結構如圖3-17所示。
網橋的優點網橋的優點如下∶
- 過濾通信量。
- 擴大了物理范圍。
- 提高了可靠性。
- 可互連不同物理層、不同MAC子層和不同速率(如10Mbit/s和100Mbit/s)的以太網。
網橋的缺點網橋的缺點如下∶
- 存儲轉發增加了時延。
- 在MAC子層並沒有流量控制功能。
- 具有不同MAC子層的網段橋接在一起時時延更大。
- 網橋只適合於用戶數不太多(不超過幾百個)和通信量不太大的局域網,否則有時還會因傳播過多的廣播信息而產生網絡擁塞,即廣播風暴。
網橋的分類
網橋包括透明網橋和源選徑網橋。
透明網橋(選擇的不是最佳路由)
透明網橋是目前使用最多的網橋。"透明"是指局域網上的站點並不知道所發送的幀將經過哪幾個網橋,因為網橋對各站來說是看不見的。透明網橋是一種即插即用設備,意思是只要把網橋接入局域網,不用人工配置轉發表,網橋就可以開始工作。
既然上面提到了網橋可以不用人工配置轉發表,那么網橋是怎么進行自學習的呢?步驟如下∶
- 網橋收到一幀后先進行自學習。查找轉發表中與收到幀的源地址有無相匹配的項目。若沒有,就在轉發表中增加一個項目(源地址、進入的接口和時間);若有,則把原有的項目進行更新。
- 轉發幀。查找轉發表中與收到幀的目的地址有無相匹配的項目。若沒有,則通過所有其他接口(但進入網橋的接口除外)進行轉發;若有,則按轉發表中給出的接口進行轉發。
若轉發表中給出的接口是該幀進入網橋的接口,則應丟棄這個幀(因為這時不需要經過網橋進行轉發)。
可能疑問點1∶為什么網橋需要登記該幀進入網橋的時間?
解析∶原因有以下兩種。
- 以太網的拓撲可能經常會發生變化,站點也可能會更換適配器(這就改變了站點的地址)。另外,以太網上的工作站並非總是接通電源的。
- 把每個幀到達網橋的時間登記下來,就可以在轉發表中只保留網絡拓撲的最新狀態信息。這樣就使得網橋中的轉發表能反映當前網絡的最新拓撲狀態。
可能疑問點2∶假定連接在透明網橋上的一台計算機把一個數據幀發給網絡上不存在的一個設備,網橋將如何處理這個幀?
解析∶網橋並不知道網絡上是否存在該設備,它只知道在其轉發表中沒有這個設備的MAC地址。因此,當網橋收到這個目的地址未知的幀時,它將通過所有其他接口(但進入網橋的接口除外)進行轉發。
以上並沒有討論一個特殊情況,也就是幀在網絡中不斷地轉圈,導致網絡資源被白白浪費,如圖 3-18所示。
分析∶設站A發送一個幀F,它經過網橋1和網橋2(箭頭①和箭頭②)。假定幀F的目的地址都不在網橋1和網橋2的轉發表中,因此網橋1和網橋2都轉發幀F(箭頭③和箭頭④),把經網橋1和網橋2轉發的幀F在到達局域網2以后,分別記為F1和F2。接着F1傳到網橋2(見箭頭⑤),而F2傳到網橋1(見箭頭⑥)。網橋1和網橋2分別收到了F2和F1,又將其轉發到局域網1。結果引起一個幀在網絡中不停地轉圈,從而使得網絡資源不斷地白白浪費。
為了避免轉發的幀在網絡中不斷地轉圈,透明網橋使用了一種生成樹算法。
生成樹使得整個擴展局域網在邏輯上形成樹形結構,所以工作起來邏輯上沒有環路,但生成樹一般不是最佳路由,具體算法不做要求。下面是引自網絡的《生成樹算法》有助於考生理解。
生成樹算法
我想我永遠也不會看到
像一棵樹那么優美的圖畫
樹那至關緊要的特性是無回路的連通
樹需要無限地擴展
包才能到達每一個LAN
首先,需要選好樹根指定 ID即可選定
從樹根開始,計算最小代價的路徑
這些路徑,就是這棵樹的枝條
網絡出自我等愚人之手
而網橋卻發現了一棵生成樹
源選徑網橋(選擇的是最佳路由,了解即可)
在源選徑網橋中,路由選擇由發送數據幀的源站負責,網橋只根據數據幀中的路由信息對幀進行接收和轉發。
為了發現合適的路由,源站先以廣播方式向欲通信目的站發送一個發送幀。發送幀將在整個局域網中沿着所有可能的路由傳送,並記錄所經過的路由。當發送幀到達目的站時,就沿原來的路徑返回源站。源站在得知這些路由后,再從所有可能的路由中選擇一個最佳路由。
發送幀除了可以用來確定最佳路由,還可以用來確定整個網絡可以通過的幀的最大長度。
注意∶透明網橋和源選徑網橋中提到的最佳路由並不一定是經過路由器最少的路由,也可以是發送幀往返時間最短的路由,這樣才能真正地進行負載平衡。因為往返時間長,說明中間某個路由器可能超載了,所以不走這條路,換個往返時間短的路走。
局域網交換機及其工作原理
局域網交換機的基本概念
局域網交換機實質上是多端口網橋,它工作在數據鏈路層。局域網交換機的每個端口都直接與主機或集線器相連,並且一般都工作在全雙工方式。當主機需要通信時,交換機能同時連通許多對的端口,使每一對相互通信的主機都能像獨占通信媒體那樣,進行無沖突地傳輸數據, 通信完成后斷開連接。
補充知識點∶以太網交換機獨占傳輸媒體的帶寬。對於普通的10Mbi/ts的共享式以太網(不使用交換機),若有N 個用戶,則每個用戶占有的平均帶寬只有總帶寬的1/N。
在使用以太網交換機時,雖然在每個端口到主機的帶寬還是10Mbit/s,但由於一個用戶在通信時是獨占而不是和其他網絡用戶共享傳輸媒體的帶寬,且交換機工作在全雙工狀態,因此對於擁有N個端口的交換機的總容量為2xNx10Mbit/s(如果是半雙工,則總容量為N ×10Mbits,謝希仁編寫的第5版教材上默認是半雙工),這正是交換機的最大優點。
可能疑問點∶這里不是"N對",就是"N個"。謝希仁的教材上雖然是"N對"但也是含糊其辭。針對此疑問,編者特地請教清華大學教授計算機網絡課程的老師,答案如下,記住即可(並且四級網絡工程師的真題中也是這么解釋的)。
交換機總容量計算方式∶端口數×每個端口帶寬(半雙工);端口數x每個端口帶寬×2(全雙工)。N 對的說法很多教材都是不贊同的!
【例3-14】(2009年統考真題)以太網交換機進行轉發決策時使用的PDU地址是()。
A.目的物理地址
B.目的IP地址
C.源物理地址
D.源IP地址
解析 A。首先,交換機是工作在數據鏈路層的設備,所以進行轉發決策時,是不可能使用IP地址的,排除選項B和D;其次,在進行轉發的過程中,都是使用目的地址,不可能用源地址進行轉發。
另一種思路∶以太網交換機其實就是多端口網橋,網橋是根據目的物理地址轉發幀的,所以以太網交換機也是根據目的物理地址轉發幀的。
【例3-15】某以太網交換機具有24個100Mbit/s的全雙工端口與2個1000Mit/s的全雙工端口,其總帶寬最大可以達到()。
A.0.44Gbit/s
B.4.4Gbits
C.0.88Gbits
D.8.8Gbits
解析∶D。因為是全雙工,根據上面的公式可知,總帶寬
=24×100Mbits×2+2×1000Mbit/s×2=8800Mbit/s=8.8Gbit/s。考生注意∶據編者3年的答疑題目中若不說明都默認是半雙工。若此題改為半雙工,則答案為B。
交換機最大的優點是不僅其每個端口節點所占用的帶寬不會因為端口節點數量的增加而減少,而且整個交換機的總帶寬會隨着端口節點的增加而增加。
交換機的兩種交換模式
- 直通式交換。只檢查幀的目的地址,這使得幀在接收后能馬上被轉發出去。這種方式速度很快,但缺乏安全性,也無法支持具有不同速率的端口的交換。
- 存儲轉發式交換。先將接收到的幀存儲在高速緩存中,並檢查數據是否正確,確認無誤后,查找轉發表,並將該幀從查詢到的端口轉發出去。如果發現該幀有錯誤,就將其丟棄。存儲轉發式交換的優點是可靠性高,並能支持不同速率端口間的轉換,缺點是延遲較大。很多習題上提到一種"無碎片轉發",意思是交換機在得到數據報的前64個字節后就轉發,對於小於64個字節的數據報,交換機將其認為是碎片,不進行轉發。這種方式既避免了存儲轉發速度慢的問題,又避免了直通轉發中有碎片的問題。
局域網交換機的工作原理
與網橋類似,檢測從某端口進入交換機的幀的源MAC地址和目的MAC地址,然后與系統內部的動態查找表進行比較,若數據報的MAC地址不在查找表中,則將該地址加入查找表中,並將數據報發送給相應的目的端口。
補充知識點∶虛擬局域網(了解即可,不重要)。
虛擬局域網的出現主要是為了解決交換機在進行局域網互連時無法限制廣播的問題。普通的交換機即使連接了多個局域網,仍然屬於一個網絡,即仍然是一個廣播域,這樣就容易產生廣播風暴,但是將一個局域網划分成多個虛擬局域網之后(交換機就類似於路由器的功能)就等於將一個大的廣播域划分成多個小的廣播域,這樣就會降低發生廣播風暴的可能性。也許看到這里很多人會產生疑問,交換機能連接不同的網絡9普通交換機是不能的,但這里的交換機已經不是普通的交換機了,而是具有第三層特性的第二層交換機,此內容點到為止,了解即可。
關於虛擬局域網是怎么划分的,這個不是大綱內容,在此不做介紹。
各層設備的廣播域、沖突域及總結
要清楚什么是沖突域(碰撞域)和廣播域。
當一塊網卡發送信息時,只要有可能和另一塊網卡沖突,則這些可能沖突的網卡就構成沖突域。一塊網卡發出一個廣播,能收到這個廣播的所有網卡的集合稱為一個廣播域。
一般來說,一個網段就是一個沖突域,一個局域網就是一個廣播域。
先了解這么多,下面先集中復習中繼器、集線器、網橋、交換機、路由器的基本概念,再在這基礎之上來討論沖突域和廣播域會理解得更深。
物理層設備
中繼器∶在接觸到的網絡中,最簡單的就是兩台計算機通過兩塊網卡構成雙機互連,兩塊網卡之間一般是由非屏蔽雙絞線來充當信號線的。由於雙絞線在傳輸信號時信號功率會逐漸衰減,當信號衰減到一定程度時將造成信號失真,因此在保證信號質量的前提下,雙絞線的最大傳輸距離為100m。當兩台計算機之間的距離超過100m時,為了實現雙機互連,人們在這兩台計算機之間安裝一個中繼器,它的作用就是將已經衰減得不完整的信號經過整理,重新產生出完整的信號再繼續傳送。放大器和中繼器都是起放大信號的作用,只不過放大器放大的是模擬信號,中繼器放大的是數字信號。
集線器∶中繼器就是普通集線器的前身,集線器實際就是一種多端口的中繼器。
數據鏈路層設備
網橋∶參考下面的交換機,因為交換機就是多端口網橋。
交換機∶交換機也稱為交換式集線器,它通過對信息進行重新生成,並經過內部處理后轉發至指定端口,具備自動尋址能力和交換作用。由於交換機根據所傳遞數據報的目的地址,將每一數據報獨立地從源端口送至目的端口,避免了和其他端口發生碰撞。簡單地說就是,交換機某端口連接的主機想和另一個端口連接的主機通信,交換機就會通過轉發表發送到那個端口,不可能去其他端口,不存在發錯端口(打錯電話),因此交換機的每一個端口都是一個沖突域,也就是說,交換機可以隔離沖突域。
交換機的工作原理∶在計算機網絡系統中,交換機是針對共享工作模式的弱點而推出的。集線器是采用共享工作模式的代表,如果把集線器比作一個郵遞員,那么這個郵遞員不認識字,如果要他去送信,他不知道直接根據信件上的地址將信件送給收信人,只會拿着信分發給所有人,然后讓接收的人根據地址信息來判斷是不是自己的,而交換機則是一個聰明的郵遞員———交換機擁有一條高帶寬的背部總線和內部交換矩陣。交換機的所有端口都掛接在這條背部總線上,當控制電路收到數據報以后,處理端口會查找內存中的地址對照表以確定目的 MAC 地址應該從哪個端口發出,通過內部交換矩陣迅速將數據報傳送到目的端口。
如果目的 MAC 地址不存在,交換機才廣播到所有的端口,接收端口回應后交換機會學習新的地址,並把它添加入內部地址表中。
可見,交換機在收到某個網卡發過來的"信件"時,會根據上面的地址信息以及自己掌握的"戶口簿"快速將"信件"送到收信人的手中。萬一收信人的地址不在"戶口簿"上,交換機才會像集線器一樣將"信件"分發給所有人,然后從中找到收信人。而找到收信人之后,交換機會立刻將這個人的信息登記到"戶口簿"上,這樣以后再為該客戶服務時,就可以迅速將"信件"送達了。
由於交換機能夠智能地根據地址信息將數據快速送到目的地,因此它不會像集線器那樣在傳輸數據時"打擾"非收信人。這樣交換機在同一時刻可進行多個端口組之間的數據傳輸,並且每個端口組都可視為獨立的網段,相互通信的雙方獨自享有全部的帶寬,無需同其他設備競爭使用。
補充知識點∶盡管交換機也稱為多端口網橋,但是交換機和網橋有不同之處,下面——列出。
解析∶交換機和網橋的不同主要包念以下4點。
- 以太網交換機實質上是一個硬件實現的多端口網橋,以太網交換機通常有十幾個端口,而網橋一般只有兩個端口,常用軟件實現。它們都工作在數據鏈路層。
- 網橋的端口一般連接到局域網的網段,而以太網交換機的每個端口一般都直接與主機相連,也可連接到Hub。
- 交換機允許多對計算機間同時通信,而網橋最多允許每個網段上的一對計算機同時通信。
- 網橋采用存儲轉發方式進行轉發,而以太網交換機還可采用直通方式轉發。以太網交換機采用了專用的交換機構硬件芯片,轉發速度比網橋快。
網絡層設備
路由器∶簡單地說就是,路由器把數據從一個網絡發送到另一個網絡,具體過程見第4 章網絡層。
前面已經講過中繼器或集線器不能隔離沖突域,交換機可以隔離沖突域,自然路由器肯定也可以隔離沖突域(因為也有一張轉發表可以轉發)。
下面來討論廣播域。廣播域其實可以看成一個單獨的網絡,如果一個主機要發送一個廣播數據,這樣就應該在整個網絡都可以聽得見,但是集線器和交換機分別工作在物理層和數據鏈路層,不能連接兩個不同的網絡,所以說不管是集線器還是交換機遇到廣播數據都要每個端口發一遍(因為每個端口連接的網絡仍然屬於同一個網絡)。這樣又存在打錯電話的情況,所以集線器和交換機不能隔離廣播域。但是路由器可以連接不同的網絡,且路由器在默認情況下是不轉發廣播報文的(因為每個端口連接的是不同的網絡),路由器的每一個端口都是一個廣播域,所以路由器可以隔離廣播域。
各層設備的沖突域、廣播域總結見表3-6。