黃欣
摘要:Go-Back-N協(xié)議和Selective-Repeat協(xié)議是計(jì)算機(jī)網(wǎng)絡(luò)在傳輸層和鏈路層用于實(shí)現(xiàn)可靠數(shù)據(jù)傳輸?shù)膬蓚€(gè)重要協(xié)議。Internet的TCP協(xié)議在設(shè)計(jì)時(shí)借鑒了上述兩個(gè)協(xié)議的基本思想。該文通過對(duì)GBN協(xié)議和SR協(xié)議進(jìn)行對(duì)比分析,從而揭示兩個(gè)協(xié)議的內(nèi)在思想和重要特性。
關(guān)鍵詞:Go-Back-N協(xié)議;Selective-Repeat協(xié)議;對(duì)比分析
中圖分類號(hào):TP301 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)27-0020-02
Abstract: Go-Back-N protocol and Selective-Repeat protocol are two important protocols for reliable data transmission in the transmission layer and link layer of computer network.The design of TCP protocol references the ideas of two protocols mentioned above.In this thesis, GBN protocol and SR protocol are compared and analyzed in order to reveal the intrinsic and import characteristics of the two protocols.
Key words: Go-Back-N protocol; Selective-Repeat protocol; comparative analysis
1 引言
Go-Back-N協(xié)議(以下簡(jiǎn)稱GBN協(xié)議)和Selective-Repeat協(xié)議(以下簡(jiǎn)稱SR協(xié)議)用于在計(jì)算機(jī)網(wǎng)絡(luò)的傳輸層或鏈路層實(shí)現(xiàn)可靠數(shù)據(jù)傳輸服務(wù),是兩個(gè)重要的流水線可靠數(shù)據(jù)傳輸協(xié)議。GBN協(xié)議和SR協(xié)議允許發(fā)送方連續(xù)發(fā)送多個(gè)分組,而無需等待來自接收方的確認(rèn),從而有效地避免了停等ARQ協(xié)議信道利用率不高、吞吐量較低的問題。GBN協(xié)議和SR協(xié)議在設(shè)計(jì)思想上既有聯(lián)系又有區(qū)別?,F(xiàn)代因特網(wǎng)的TCP協(xié)議在實(shí)現(xiàn)時(shí)正是綜合了兩者的優(yōu)點(diǎn)。
2 GBN協(xié)議描述和性能分析
2.1 GBN協(xié)議描述
假設(shè)發(fā)送方窗口的基序號(hào)用send_base變量表示,窗口大小用N表示(發(fā)送方每次最多只能使用N個(gè)序號(hào)發(fā)送分組),則GBN發(fā)送方協(xié)議需要處理的三個(gè)事件用偽碼描述如下:
(1) 從應(yīng)用層發(fā)送進(jìn)程收到新數(shù)據(jù)分組
if(發(fā)送窗口仍有序號(hào)沒有分配出去){
將發(fā)送窗口最小未使用序號(hào)分配給新數(shù)據(jù)分組;
在新數(shù)據(jù)分組中加入校驗(yàn)和;
發(fā)送新數(shù)據(jù)分組;
if(當(dāng)前所發(fā)數(shù)據(jù)分組的序號(hào)==send_base)
啟動(dòng)計(jì)時(shí)器;
標(biāo)記剛分配的序號(hào);
}
else 通知發(fā)送進(jìn)程暫緩新數(shù)據(jù)分組發(fā)送;
(2) 計(jì)時(shí)器超時(shí)
重新發(fā)送窗口中從基序號(hào)send_base對(duì)應(yīng)的分組開始的所有尚未得到確認(rèn)的數(shù)據(jù)分組;
重新啟動(dòng)計(jì)時(shí)器;
(3) 收到來自接收方的確認(rèn)分組
if(收到的確認(rèn)分組正確){
send_base=收到的確認(rèn)分組的序號(hào)+1;
if(已發(fā)送分組全部得到確認(rèn))
停止計(jì)時(shí);
else 重啟計(jì)時(shí);
}
else 丟棄錯(cuò)誤確認(rèn)分組
GBN接收方協(xié)議只要處理收到來自發(fā)送方的數(shù)據(jù)分組事件,用偽碼描述如下:
if(收到的數(shù)據(jù)分組正確 && 數(shù)據(jù)分組按序到達(dá)){
提取分組中的數(shù)據(jù)交付給接收進(jìn)程;
返回確認(rèn)分組(序號(hào)和到達(dá)的數(shù)據(jù)分組序號(hào)相同),確認(rèn)分組中加入校驗(yàn)和;
}
else
丟棄錯(cuò)誤的數(shù)據(jù)分組或失序分組;
返回確認(rèn)分組(序號(hào)和最近收到的數(shù)據(jù)分組序號(hào)相同),確認(rèn)分組中加入校驗(yàn)和;
2.2 GBN協(xié)議性能分析
認(rèn)識(shí)到GBN協(xié)議的接收方按序接收數(shù)據(jù)分組這一特性,有助于我們理解GBN協(xié)議的優(yōu)點(diǎn)和缺點(diǎn)。GBN協(xié)議的重要優(yōu)點(diǎn)是采用累積確認(rèn)方式,即只要發(fā)送方收到序號(hào)為n的確認(rèn)分組,即便發(fā)送方?jīng)]有收到序號(hào)小于n的確認(rèn)分組,也能肯定接收方已經(jīng)正確接收序號(hào)n以及所有序號(hào)小于n的數(shù)據(jù)分組。由于GBN協(xié)議接收方是按序接收數(shù)據(jù)分組,所以凡是亂序到達(dá)的正確的數(shù)據(jù)分組都會(huì)被接收方丟棄,這也造成了這部分?jǐn)?shù)據(jù)分組的不必要重傳。
3 SR協(xié)議描述和性能分析
3.1 SR協(xié)議描述
為了避免GBN協(xié)議發(fā)送方重傳失序到達(dá)接收方的正確分組(不必要),SR協(xié)議在接收方設(shè)立接收方窗口(緩存)以存儲(chǔ)失序到達(dá)的正確分組。假設(shè)發(fā)送方窗口的基序號(hào)用send_base變量表示,窗口大小用N表示,接收方窗口的基序號(hào)用receive_base表示,則SR發(fā)送方協(xié)議需要處理的三個(gè)事件用偽碼描述如下:
(1) 從應(yīng)用層發(fā)送進(jìn)程收到新數(shù)據(jù)分組
if(發(fā)送窗口仍有序號(hào)沒有分配出去){
將發(fā)送窗口最小未使用序號(hào)分配給新數(shù)據(jù)分組;
在新數(shù)據(jù)分組中加入校驗(yàn)和;
發(fā)送新數(shù)據(jù)分組;
啟動(dòng)計(jì)時(shí)器;
}
else 通知發(fā)送進(jìn)程暫緩新數(shù)據(jù)分組發(fā)送;
(2) 計(jì)時(shí)器超時(shí)
重傳超時(shí)的數(shù)據(jù)分組;