為什麼選擇重傳策略視窗長度最多是序列號範圍一半?

2021-08-10 18:46:28 字數 994 閱讀 3336

剛上的計算機網路課,講了pipeline模式的可靠傳輸的一種差錯恢復策略——選擇重傳。臨下課的時候老師告訴我們視窗長度n最多是序列編號範圍的一半,他說道理很簡單的,自己想一下。我思考了一下,然而……

可以看到左邊發方一直沒有收到ack,最後超時重傳了第0個分組,而右邊的收方卻以為是最新的分組而接受,這就很尷尬了。正是這種困境引出了我們標題所說的約束。

我們要找到能避免這種尷尬的極端情況。

根據書上的描述,收發方視窗長度是一樣的。收發方各自有一段分組序列,序列號從0到k迴圈地編給每個分組,就像上圖的01230123…,我們把(0,k)作為一段考慮。

發方要等別人ack才能移動視窗,一等就要耽擱了,這使得發方視窗總是落後於收方。並且他的視窗內第乙個分組,一定是還沒被ack的,如果發生了重傳,那一定是最先發這個。

收方的接收策略是,但凡編號落在視窗內,那就接受並傳送ack。因此極端情況我們要保證的是,準備接受的分組不可以來自上一段(更不可能是下一段)。

我們讓收方視窗盡可能領先,最多領先至起點與發方視窗末端相鄰,因為發方視窗外的分組還沒發出去,收方不可能ack到,不可能出現在自己視窗之前。盡可能領先就盡可能讓視窗接觸到下一段的分組,這是極端。

假如發方視窗就停在段的起始位置(0, n),如果要保證安全,就不能讓收方視窗接觸到下一段的0。兩個視窗緊挨,總長恰好一段,所以說視窗長度為序列號範圍一半。

——(0, k)作為一段的範圍特殊了點,不過任意的(0<=m<=k)都是一樣的。

我還不知道兩個視窗有什麼必要等長,因此更一般的是,二者長度之和小於等於序列號範圍即可。有錯的話,歡迎批評指正:)

為什麼要選擇ISP 為什麼要選擇AHD

在影象傳輸中,我們為什麼選擇nextchip?為什麼要選擇isp?為什麼要選擇ahd?為什麼選擇北京冠宇銘通?這個問題我倒著回答各位 一 北京冠宇銘通科技是nextchip目前為止唯一一家正式官方授權 車載產品廠家之一 二 ahd和其他幾種傳輸方式相比,擁有自己的專利,其他幾家有專利的沒有幾個,如果...

為什麼選擇discuz

使用disczu是在幾個月之前,那時候剛接觸php,之前還不知道大部分論壇都是用的類似discuz這種系統直接安裝的,還以為都是自己寫的程式呢.剛學時,什麼也不懂,只是感覺挺好玩的,不知道啥叫使用者體驗,不知道啥叫模板技術,更不知道啥叫快取技術.隨著學習的深入,對discuz由原來的使用變為了研究。...

為什麼選擇svn

svn的幾大好處 1 svn版本號是以自然序列遞增的,大家都很容易明白,所有的人以統一的方式運作,不會有太多模式。2 svn版本庫看起來就像乙個本地檔案系統,你可以自由地檢出子目錄。3 svn容易使用,學習成本比較低。4 svn成熟度高 5 更適合和二進位制檔案管理 檔案鎖定和部分檢出 svn的乙個...