資源描述:
《第04章-數(shù)據(jù)鏈路層》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第4章數(shù)據(jù)鏈路層4.1數(shù)據(jù)鏈路層的基本概念4.2停止等待協(xié)議4.3連續(xù)ARQ協(xié)議4.4選擇重傳ARQ協(xié)議4.5面向比特的鏈路控制規(guī)程HDLC4.6因特網(wǎng)的點(diǎn)對(duì)點(diǎn)協(xié)議PPP退出4.1數(shù)據(jù)鏈路層的基本概念鏈路(link)就是一條無源的點(diǎn)到點(diǎn)的物理線路段,中間沒有任何其他的交換結(jié)點(diǎn)。數(shù)據(jù)鏈路(datalink)則是另一個(gè)概念。這是因?yàn)楫?dāng)需要在一條線路上傳送數(shù)據(jù)時(shí),除了必須有一條物理線路外,還必須有一些必要通信協(xié)議來控制這些數(shù)據(jù)的傳輸(這將在后面討論)。也有人采用另外的術(shù)語。這就是將鏈路分為物理鏈路和邏輯鏈路。物理鏈路就是上面所說的鏈路,而邏輯鏈路就
2、是上面的數(shù)據(jù)鏈路,是物理鏈路加上必要的通信協(xié)議。數(shù)據(jù)鏈路層的主要功能歸納如下:(1)鏈路管理數(shù)據(jù)鏈路的建立、維持和釋放就叫做鏈路管理。(2)幀同步(3)流量控制(flowcontrol)(4)差錯(cuò)控制(5)將數(shù)據(jù)和控制信息區(qū)分開(6)透明傳輸(7)尋址4.2停止等待協(xié)議停止等待(stop-and-wait)協(xié)議是最簡(jiǎn)單但也是最基本的數(shù)據(jù)鏈路層協(xié)議。4.2.1不需要數(shù)據(jù)鏈路層協(xié)議的數(shù)據(jù)傳輸圖4-1所示的簡(jiǎn)化模型對(duì)于一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)中任意一條鏈路上的數(shù)據(jù)傳輸情況都是適用的。4.2.2具有最簡(jiǎn)單流量控制的數(shù)據(jù)鏈路層協(xié)議由接收方控制發(fā)送方的數(shù)據(jù)流,乃是
3、計(jì)算機(jī)網(wǎng)絡(luò)中流量控制的一個(gè)基本方法。假定:鏈路是理想的傳輸信道,即所傳送的任何數(shù)據(jù)既不會(huì)出差錯(cuò)也不會(huì)丟失。在發(fā)送結(jié)點(diǎn):(1)從主機(jī)取一個(gè)數(shù)據(jù)幀;(2)將數(shù)據(jù)幀送到數(shù)據(jù)鏈路層的發(fā)送緩存;(3)將發(fā)送緩存中的數(shù)據(jù)幀發(fā)送出去;(4)等待;(5)若收到由接收結(jié)點(diǎn)發(fā)過來的信息(此信息的格式與內(nèi)容可由雙方事先商定好),則從主機(jī)取一個(gè)新的數(shù)據(jù)幀,然后轉(zhuǎn)到(2)。在接收結(jié)點(diǎn):(1)等待;(2)若收到由發(fā)送結(jié)點(diǎn)發(fā)過來的數(shù)據(jù)幀,則將其放入數(shù)據(jù)鏈路層的接收緩存;(3)將接收緩存中的數(shù)據(jù)幀上交主機(jī);(4)向發(fā)送結(jié)點(diǎn)發(fā)一信息,表示數(shù)據(jù)幀已經(jīng)上交給主機(jī);(5)轉(zhuǎn)到(1)
4、。圖4-2是前面所述的兩種情況的對(duì)比。4.2.3實(shí)用的停止等待協(xié)議傳輸數(shù)據(jù)的信道不能保證使所傳的數(shù)據(jù)不產(chǎn)生差錯(cuò),并且還需要對(duì)數(shù)據(jù)的發(fā)送端進(jìn)行流量控制。圖4-3(a)畫的是數(shù)據(jù)在傳輸過程中不出差錯(cuò)的情況。當(dāng)發(fā)現(xiàn)差錯(cuò)時(shí),結(jié)點(diǎn)B就向主機(jī)A發(fā)送一個(gè)否認(rèn)幀NAK,以表示主機(jī)A應(yīng)當(dāng)重傳出現(xiàn)差錯(cuò)的那個(gè)數(shù)據(jù)幀。圖4-3(b)畫出了主機(jī)A重傳數(shù)據(jù)幀。有時(shí)鏈路上的干擾很嚴(yán)重,或由于其他一些原因,結(jié)點(diǎn)B收不到結(jié)點(diǎn)A發(fā)來的數(shù)據(jù)幀。這種情況稱為幀丟失,如圖4-3(c)所示。于是就出現(xiàn)了死鎖現(xiàn)象。要解決死鎖問題,可在結(jié)點(diǎn)A發(fā)送完一個(gè)數(shù)據(jù)幀時(shí),就啟動(dòng)一個(gè)超時(shí)計(jì)時(shí)器(tim
5、eouttimer)。若到了超時(shí)計(jì)時(shí)器所設(shè)置的重傳時(shí)間tout而仍收不到結(jié)點(diǎn)B的任何確認(rèn)幀,則結(jié)點(diǎn)A就重傳前面所發(fā)送的這一數(shù)據(jù)幀,如圖4-3(c)和圖4-3(d)所示。一般可將重傳時(shí)間選為略大于“從發(fā)完數(shù)據(jù)幀到收到確認(rèn)幀所需的平均時(shí)間”。4.2.4循環(huán)冗余檢驗(yàn)4.2.5停止等待協(xié)議的算法在發(fā)送結(jié)點(diǎn):(1)從主機(jī)取一個(gè)數(shù)據(jù)幀。(2)V(S)←0。{發(fā)送狀態(tài)變量初始化}(3)N(S)←V(S);{將發(fā)送狀態(tài)變量的數(shù)值寫入發(fā)送序號(hào)}將數(shù)據(jù)幀送交發(fā)送緩存。(4)將發(fā)送緩存中的數(shù)據(jù)幀發(fā)送出去。(5)設(shè)置超時(shí)計(jì)時(shí)器。{選擇適當(dāng)?shù)某瑫r(shí)重傳時(shí)間tout}(6
6、)等待。{等待以下3個(gè)事件中最先出現(xiàn)的一個(gè)}(7)若收到確認(rèn)幀ACK,則:從主機(jī)取一個(gè)新的數(shù)據(jù)幀;V(S)←[1?V(S)];{更新發(fā)送狀態(tài)變量,變?yōu)橄乱粋€(gè)序號(hào)}轉(zhuǎn)到(3)。(8)若收到否認(rèn)幀NAK,則轉(zhuǎn)到(4)。{重傳數(shù)據(jù)幀}(9)若超時(shí)計(jì)時(shí)器時(shí)間到,則轉(zhuǎn)到(4)。{重傳數(shù)據(jù)幀}在接收結(jié)點(diǎn):(1)V(R)←0。{接收狀態(tài)變量初始化,其數(shù)值等于欲接收的數(shù)據(jù)幀的發(fā)送序號(hào)}(2)等待。(3)當(dāng)收到一個(gè)數(shù)據(jù)幀,就檢查有無產(chǎn)生傳輸差錯(cuò)(如用CRC)。若檢查結(jié)果正確無誤,則執(zhí)行后續(xù)算法;否則轉(zhuǎn)到(8)。(4)若N(S)=V(R),則執(zhí)行后續(xù)算法;{收到
7、發(fā)送序號(hào)正確的數(shù)據(jù)幀}否則丟棄此數(shù)據(jù)幀,然后轉(zhuǎn)到(7)。(5)將收到的數(shù)據(jù)幀中的數(shù)據(jù)部分送交主機(jī)。(6)V(R)←[1?V(R)]。{更新接收狀態(tài)變量,準(zhǔn)備接收下一個(gè)數(shù)據(jù)幀}(7)發(fā)送確認(rèn)幀ACK,并轉(zhuǎn)到(2)。(8)發(fā)送否認(rèn)幀NAK,并轉(zhuǎn)到(2)。狀態(tài)變量的概念很重要,一定要弄清以下幾點(diǎn):(1)每發(fā)送一個(gè)數(shù)據(jù)幀,都必須將發(fā)送狀態(tài)變量V(S)的值(即0或1)寫到數(shù)據(jù)幀的發(fā)送序號(hào)N(S)上。但只有收到一個(gè)確認(rèn)幀ACK后,才更新發(fā)送狀態(tài)變量V(S)一次(將1變成0或0變成1)并發(fā)送新的數(shù)據(jù)幀。(2)在接收端,每接收到一個(gè)數(shù)據(jù)幀,就要將發(fā)送方在數(shù)據(jù)
8、幀上設(shè)置的發(fā)送序號(hào)N(S)與本地的接收狀態(tài)變量V(R)相比較。若二者相等就表明是新的數(shù)據(jù)幀,否則為重復(fù)幀。(3)在接收端,若收到一個(gè)重復(fù)幀,則丟棄它(即不做任何處理