東莞外貿(mào)公司建網(wǎng)站業(yè)務推廣方式
目錄
回退N幀協(xié)議GBN
介紹
無差錯情況
累積確認
有差錯情況
發(fā)送窗口尺寸
小結(jié)
練習
解析?
示意圖
上篇中所介紹的停止-等待協(xié)議的信道利用率很低;若出現(xiàn)超時重傳,則信道利用率更低。
如果發(fā)送方在收到接收方的確認分組之前可以連續(xù)發(fā)送多個數(shù)據(jù)分組,則可大大提高信道利用率,也就是一種流水線式的傳輸。
回退N幀協(xié)議GBN
介紹
本篇我們介紹回退N幀協(xié)議,該協(xié)議在流水線傳輸?shù)幕A上,利用發(fā)送窗口來限制發(fā)送方可連續(xù)發(fā)送分組的個數(shù)。
舉例說明:
假設采用3個比特給分組編序號,因此序號的取值范圍是0-7,如上圖所示,那是收發(fā)雙方各自的分組序號,當序號增加到7時,下一個序號又從0開始。
發(fā)送方要維持一個發(fā)送窗口,序號落在發(fā)送窗口內(nèi)的數(shù)據(jù)分組可被連續(xù)發(fā)送;而不必等收到接收方的相應確認分組后再發(fā)送,發(fā)送窗口的尺寸即為。
對于本例,其取值范圍是,其中的3是構(gòu)成分組序號的比特數(shù)量,本例取
的值為5。
- 如果WT的值取為1,則是停止-等待協(xié)議
- 如果WT的值超過取值范圍的上限,則會造成嚴重的錯誤
如下圖所示,序號落在發(fā)送窗口內(nèi)的這5個數(shù)據(jù)分組可以連續(xù)發(fā)送;而序號落在發(fā)送窗口外的數(shù)據(jù)分組不允許發(fā)送。
接收窗口的尺寸即為,對于回退N幀協(xié)議,其取值只能為1,這一點與停止等待協(xié)議是相同的。
如下圖所示,序號落在接收窗口內(nèi)的這個數(shù)據(jù)分組允許接收;而序號落在接收窗口外的數(shù)據(jù)分組不允許接收。
無差錯情況
我們首先來看最簡單的情況,也就是無差錯的情況。
發(fā)送方將序號落在發(fā)送窗口內(nèi)的0-4號數(shù)據(jù)分組依次連續(xù)發(fā)送出去,他們經(jīng)過互聯(lián)網(wǎng)的傳輸正確到達了接收方,也就是沒有出現(xiàn)亂序和誤碼。
接收方按序接收,他們每接收一個接收窗口就向前滑動一個位置,并給發(fā)送方發(fā)送針對所接收分組的確認分組,0-4號確認分組經(jīng)過互聯(lián)網(wǎng)的傳輸,正確到達了發(fā)送方。
發(fā)送方每接收一個發(fā)送窗口,就向前滑動一個位置;這樣就有新的序號落入了發(fā)送窗口,發(fā)送方可以將收到確認的數(shù)據(jù)分組從緩存中刪除了,而接收方可以擇機將已接收的數(shù)據(jù)分組交付上層處理。
累積確認
接下來我們來看累積確認的概念。
使用回退N幀協(xié)議的接收方可以采用累積確認的方式,也就是說,接收方不一定要對收到的數(shù)據(jù)分組逐個發(fā)送確認,而是可以在收到幾個數(shù)據(jù)分組后(由具體實現(xiàn)決定),對按序到達的最后一個數(shù)據(jù)分組發(fā)送確認。ACKn表示序號為n及以前的所有數(shù)據(jù)分組都已正確接收了。
舉例說明:
發(fā)送方將序號落在發(fā)送窗口內(nèi)的0-4號數(shù)據(jù)分組依次連續(xù)發(fā)送出去,他們經(jīng)過互聯(lián)網(wǎng)的傳輸正確到達了接收方,接收方按序接收他們。
當接收完0號和1號數(shù)據(jù)分組后,給發(fā)送方發(fā)送了一個累積確認ACK1;
當接收完2-4號數(shù)據(jù)分組后,又給發(fā)送方發(fā)送了一個累積確認ACK4;
假設ACK1在傳輸過程中丟失了,而ACK4正確到達了發(fā)送方,發(fā)送方接收ACK4后就知道了序號為4,即之前的數(shù)據(jù)分組已被接收方正確接收了;于是將發(fā)送窗口向前滑動5個位置,這樣就有新的序號落入了發(fā)送窗口,發(fā)送方可以將收到確認的數(shù)據(jù)分組從緩存中刪除了;而接收方可以擇機將已接收的數(shù)據(jù)分組交付上層處理。
從本例可以看出,使用累積確認的其中一個優(yōu)點就是:即使確認分組丟失,發(fā)送方也可能不必重傳,例如本例中ACK1丟失了,但并沒有造成1號數(shù)據(jù)分組的超時重傳。
使用累積確認還有其他好處,例如可以減少接收方的開銷,減少對網(wǎng)絡資源的占用等。
當然,使用累積確認也有缺點,那就是不能向發(fā)送方及時反映出接收方已經(jīng)正確接收的數(shù)據(jù)分組的信息。
有差錯情況
接下來我們來看出現(xiàn)差錯的情況,
發(fā)送方將序號落在發(fā)送窗口內(nèi)的這5個數(shù)據(jù)分組依次連續(xù)發(fā)送出去,他們經(jīng)過互聯(lián)網(wǎng)的傳輸?shù)竭_了接收方;
假設他們在傳輸過程中受到了干擾,其中5號數(shù)據(jù)分組出現(xiàn)了誤碼,接收方通過數(shù)據(jù)分組中的檢錯碼發(fā)現(xiàn)了錯誤,于是丟棄該數(shù)據(jù)分組;
而后續(xù)到達的這4個數(shù)據(jù)分組的序號與接收窗口中的序號不匹配:
接收方同樣也不能接受它們,將它們丟棄,并對之前按序接收的最后一個數(shù)據(jù)分組進行確認,也就是發(fā)送ACK4。每丟棄一個數(shù)據(jù)分組就發(fā)送一個ACK4,這四個ACK4經(jīng)過互聯(lián)網(wǎng)的傳輸?shù)竭_了接收方。(數(shù)據(jù)分組5在差錯檢測里就被丟棄了,而其他四個是在接收端因為窗口不匹配丟棄的,所以發(fā)四個,而不是五個)
發(fā)送方之前就接收過ACK4,當收到這些重復的ACK4時,就知道了之前所發(fā)送的數(shù)據(jù)分組出現(xiàn)了差錯,于是可以不等超時計時器超時就立刻開始重傳。
至于收到幾個重復確認就立刻重傳,由具體實現(xiàn)來決定。
在本例中,假設收到這4個重復的確認并不會觸發(fā)發(fā)送方立刻重傳;
一段時間后,超時計時器出現(xiàn)超時,發(fā)送方將發(fā)送窗口內(nèi)已發(fā)送過的這些數(shù)據(jù)分組,全部重傳;
在本例中,盡管序號為6、7、0、1的數(shù)據(jù)分組之前已經(jīng)正確的到達接收方,但由于5號數(shù)據(jù)分組誤碼不被接受,他們也受到牽連而不被接受;發(fā)送方還要重傳這些數(shù)據(jù)分組,這就是所謂的Go-back-N,也就是回退n幀。
可見當通信線路質(zhì)量不好時,回退N幀協(xié)議的信道利用率并不比停止-等待協(xié)議高。
發(fā)送窗口尺寸
接下來我們來看看如果發(fā)送窗口的尺寸超過其取值范圍的上限會出現(xiàn)什么情況。
對于本例,我們故意超過該上限,將取值為8;
發(fā)送方將序號落在發(fā)送窗口內(nèi)的0-7號這8個數(shù)據(jù)分組依次連續(xù)發(fā)送出去,他們經(jīng)過互聯(lián)網(wǎng)的傳輸
正確到達了接收方,接收方按序正確接收他們后,給發(fā)送方發(fā)回累積確認ACK7,假設ACK7在傳輸過程中丟失了,這將導致發(fā)送方的超時重傳,重傳的0-7號數(shù)據(jù)分組到達接收方;
現(xiàn)在問題來了:接收方根據(jù)當前接收窗口內(nèi)的序號,會對這8個數(shù)據(jù)分組按序接收,但是接收方之前已經(jīng)接收過這8個數(shù)據(jù)分組了,現(xiàn)在是在重復接收,也就是說接收方無法分辨新舊分組,進而會產(chǎn)生分組重復這種傳輸差錯。(簡單來說,無法進行按序接受,接收窗口的序號會不匹配)
因此,發(fā)送窗口的尺寸不能超過其上限。
小結(jié)
練習
接下來我們來做一個有關回退N幀協(xié)議的練習,
這是計算機專業(yè)考研全國統(tǒng)考計算機網(wǎng)絡部分2009年的題 35:
答案選擇C。
解析?
題目所給發(fā)送方只收到0、2、3號幀的確認,這就表明接收方正確接收了0-3號幀;
并針對它們中的每一個發(fā)送了確認幀,只不過針對1號幀的確認幀丟失了。(這是題目中的陷阱,但又沒有相應的選項,所以迷惑性并不是很大)
截止到計時器超時,發(fā)送方只收到了針對0、2、3號幀的確認,而發(fā)送方之前已經(jīng)發(fā)送了0-7號幀,因此應該從4號幀開始重傳,即重傳之前已經(jīng)發(fā)送過的4、5、6、7號幀,共計重傳4個幀。
示意圖
我們再來畫個示意圖,以便更容易理解該題,
假設這是幀可用的序號,這是發(fā)送窗口:
發(fā)送方將序號落在發(fā)送窗口內(nèi)的0-7號數(shù)據(jù)幀依次發(fā)送出去。
當收到針對0號數(shù)據(jù)幀的確認幀ACK0時,發(fā)送窗口向前移動一個位置:
若收到針對1號數(shù)據(jù)幀的確認幀ACK1時,發(fā)送窗口也會向前移動一個位置,只不過ACK1在傳輸過程中丟失了:
當收到針對2號數(shù)據(jù)幀的確認幀ACK2時,發(fā)送窗口向前移動兩個位置,將序號1和2全部移出發(fā)送窗口:
當收到針對3號數(shù)據(jù)幀的確認幀ACK3時,發(fā)送窗口向前移動一個位置:
之后發(fā)送方出現(xiàn)了超時,將發(fā)送窗口內(nèi)已發(fā)送但未收到確認的4、5、6、7號數(shù)據(jù)幀依次重傳:
END?
學習自:湖科大——計算機網(wǎng)絡微課堂