1、滑動窗口協議緩存
爲了解決停等操做的性能問題(發了一個分組以後一直等到確認了這個分組才發下一個),推出了流水線機制,提供資源利用率。就是容許發送方在收到對方的ACK前,發送多個分組性能
其中窗口是一個範圍管理髮出去還沒確認的分組,隨着不斷傳輸,這個窗口不斷滑動,名稱的由來。窗口左端的序號收到了ACK,就能夠往右滑動了。3d
滑動窗口協議有GBN、SRblog
2、滑動窗口協議的實現:GBN事件
1.分組頭部包含序列號資源
2.窗口以下,大小爲N,最多容許N個分組未確認class
3.ACK(n),則表示確認從開始到n(包含n)的序列號所有正確接收im
4.會空中在傳的分組設置一個Timer計時器,處理超時,若是收到了timeout(n)事件,那麼會重傳的是n以及n之後的全部分組(儘管後面的可能已經收到了,這就是回退,回退到n開始傳,GBN)協議
5.接收方會有一個指望序列號,若是收到的不是指望的分組,直接丟棄db
3、滑動窗口協議的實現:SR(選擇重傳)
GBN缺陷,累積確認機制致使回退到N,重複傳了不少。解決這個。
1.對每一個分組分別確認,再也不只接收指望的,接到不指望的,就先緩存(設置緩存機制),接到指望的才交付上層
2.發送方只須要重傳那些沒收到ACK的分組了
3.產生了接收方窗口(GBN只有發送方窗口),用來緩存,如今有兩窗口了
4.序列號的位數是K的話,那麼得知足 接收方窗口大小N+發送方N<= 2的k次方,防止由於接收方ACK丟失致使發送重發k號分組,而此時接收方滑到了新窗口,新窗口有新的k號分組(不是原來的,共用序號產生的),致使出錯