计算机网络数据链路层 --- 后退n帧协议(GBN)
滑動窗口
發(fā)送窗口
發(fā)送方維持一組連續(xù)的允許發(fā)送的幀的序號
接收窗口
接收方維持一組連續(xù)的允許接收幀的序號
發(fā)送過程
如圖,假如發(fā)送方的發(fā)送窗口大小是6,首先發(fā)送0號幀,并建立0號幀的副本,防止幀丟失,然后發(fā)送0號幀,發(fā)送1號幀,一直到5號幀:
?接收方收到了0號幀之后,回復(fù)發(fā)送方ACK0:
?發(fā)送方收到了ACK0之后,發(fā)送窗口往后移動一個,并把6號幀放到鏈路上:
?接收方收到1之后,就回復(fù)ACK1,發(fā)送方收到ACK1之后,窗口移動,7號幀進(jìn)入發(fā)送窗口,并發(fā)送2號:
?目前發(fā)送方就被分成了四個部分:發(fā)送完已經(jīng)被確認(rèn)的(0,1號幀),已經(jīng)發(fā)送等待確認(rèn)的(2號幀),還能發(fā)送的(34567號),還不能發(fā)送的(其余的)
GBN中發(fā)送窗口必須相應(yīng)的三件事
上層(網(wǎng)絡(luò)層)的調(diào)用
上層要發(fā)送數(shù)據(jù)時,發(fā)送方先檢查發(fā)送窗口是否已滿,如果未滿,則產(chǎn)生一個幀并將其發(fā)送;如果窗口已滿,發(fā)送方只需要將數(shù)據(jù)返回給上層,暗示窗口已滿。上層等一會兒在發(fā)送。(實際實現(xiàn)中,發(fā)送方可以緩存這些數(shù)據(jù),窗口不滿時再發(fā)送幀)
收到了一個ACK
GBN協(xié)議中,對n號幀的確認(rèn)采用累計確認(rèn)的方式,標(biāo)明接收方已經(jīng)收到n號幀和它之前的全部幀。也就是說接收方不需要每一幀都返回一個確認(rèn)幀。
超時事件
協(xié)議的名字為后退N幀/回退N幀,來源于出現(xiàn)丟失和時延過長幀時發(fā)送方的行為。就像在停等協(xié)議中一樣,定時器將再次用于恢復(fù)數(shù)據(jù)幀或確認(rèn)幀的丟失。如果出現(xiàn)超時,發(fā)送方重傳所有已發(fā)送但未被確認(rèn)的幀
在GBN中,假設(shè)0號幀傳輸成功,但是1號幀未傳輸成功,接收方在接收0號幀之后,1號幀未收到,但是收到了23456號幀,但是接收方會忽略這些幀,這樣發(fā)送方一直收不到1號幀的確認(rèn)幀,直到觸發(fā)了超時計時器,就會重新傳1號幀及以后的幀。
GBN中接收方需要做的事
-
如果正確收到n號幀,并且按序,那么接收方為n幀發(fā)送一個ACK,并將該幀中的數(shù)據(jù)部分交付給上層。
-
其余情況(未收到應(yīng)該收到的n號幀)都丟棄幀,并為最近按序接收的幀重新發(fā)送ACK。接收方無需緩存任何失序幀,只需要維護(hù)一個信息:expectedseqnum(下一個按序接收的幀序號)(假如接收方收到了012,那么接收方就會等待3號幀,假如未收到3號幀之前收到了45號幀,那么接收方就會把45號幀丟棄,并且重新發(fā)送最近接收的2號幀的ACK2給發(fā)送方)
GBN圖示
滑動窗口長度
若采用n個比特對幀編號,那么發(fā)送窗口的尺寸應(yīng)滿足:。因為發(fā)送窗口尺寸過大,就會使得接收方無法區(qū)別新幀和舊幀。
GBN協(xié)議重點
累積確認(rèn)(偶爾捎帶確認(rèn))
偶爾捎帶確認(rèn)就是雙方通信時,甲方給乙方發(fā)送數(shù)據(jù)時,可以捎帶發(fā)送乙方之前給甲方發(fā)送數(shù)據(jù)的確認(rèn)幀
接收方只按順序接收幀,不按序無情丟棄
確認(rèn)序列號最大的,按序到達(dá)的幀
發(fā)送窗口最大為,接收窗口大小為1
GBN性能分析
因連續(xù)發(fā)送數(shù)據(jù)幀而提高了信道利用率。
在重傳時必須把原來的已經(jīng)正確傳送的數(shù)據(jù)幀重傳,使傳送效率降低。
總結(jié)
以上是生活随笔為你收集整理的计算机网络数据链路层 --- 后退n帧协议(GBN)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: H3C批量收集服务器信息,H3C设备服务
- 下一篇: 什么牌子的平板电脑好_平板电脑什么牌子好