停等協議的弊端:
停等協議大多數時間都在等待(空閒),傳送的時間佔比比較低
浪費資源、太閒了
改善: 1.現在要連續傳送多個幀,每個幀編號不同,便於出錯我們定位是哪乙個幀,因此幀的編號必須擴充。
停等協議的緩衝區只有乙個,因為它一次只能傳送乙個幀,出錯的話,直接取緩衝區中唯一的乙個幀;但是採用連續傳送多個幀,自然緩衝區就得擴容,擴充之後的緩衝區放入每個幀對應的拷貝,當傳送出現問題需要再次傳送的時候,就可以在大號緩衝區中找到對應的拷貝,供再次傳送。
引入gbn、sr協議
gbn協議(後退n幀協議)
接收視窗接收到0#幀之後,就會返回乙個0#確認幀,緊接著接收視窗的視窗就會向後移動乙個,接收視窗變成1;然後,傳送視窗收到0#確認幀之後,傳送視窗也會向後移動乙個視窗
傳送視窗有6個並不表示這6個都會連續傳送,而是可能會2個、3個連續傳送。傳送視窗可能不一定會被填滿,6個視窗的傳送視窗,可能目前只有2、3個幀,剩下位置是空的。
gbn傳送方必須做的三件事:
傳送方必須先檢查傳送視窗是否已滿,要是滿的話,傳送方會告訴上層 傳送視窗已滿,等一會再傳送(實際情況是上層還是會發給傳送方的緩衝區);要是沒有滿,上層就會把資料傳送給傳送視窗
累計確認:累計確認就是指 對n號幀累計確認,不僅暗示已經收到了n號幀,而且收到了n號幀之前的所有幀。 正是由於累計確認的方式,gbn方式下不用對每乙個幀都返回確認幀,可以每隔幾個幀返回確認幀。這樣比較高效
超時事件(後退n幀)沒收到的幀以及沒收到的幀之後的幀,隨後會再次被傳送
比如說,傳送方傳送出去n號幀,但是n號幀在路上丟失了,但是n+1,n+2這兩個幀仍然順利傳送出去;但是接收方接收視窗只能容納乙個幀,此時的接收方(根據前面的n-1號幀)還是期望收到乙個n號幀,所以面對發來的n+1,n+2號幀還是丟棄。一直到n號幀因為超時重傳被再次傳送過來,n+1,n+2號幀會隨n號幀之後被再次傳送過來。
gbn接收方要做的三件事:
如果正確收到n號幀,並且n號幀之前的幀也都按序,那麼只傳送乙個ack n 幀給傳送方
如果有幀丟失以及其他出錯情況,比如傳送出去 1 2 4 5這樣4個幀,3號幀丟失,接收方會陸續收到1 2 幀,之後,期待的是3號幀,但是發現傳來的是4號幀和5號幀,就會把4 5號幀丟棄,並返回乙個ack 2給傳送方,傳送方收到ack 2之後,就會把3 4 5幀又全部的傳送出去。
傳送幀一般是連續連續的傳送,遇到編號不連續(丟幀)的幀,把連續部分傳送出去,不連續部分二次連續的傳送出去
幀編號(位元位數)和傳送視窗長度的關係: 傳送視窗長度小於幀編號
幀編號(由位元位數決定,比如max) \(>\) 傳送視窗長度
gbn協議的效能:
缺點:丟失的幀出錯,不僅要把丟失的幀重傳,還要把丟失的幀之後的幀也得重傳
因為連續傳送提高了通道利用率
重傳時必須把原來正確的資料幀重傳,傳送效率降低
選擇重傳協議(sr)會繼續優化(進化) 流量控制方式
TCP流量控制協議
1 tcp ip具體解釋 卷1 協議 2 tcp ip協議族 第4版 3 計算機網路 第5版 tcp流量控制的目的是限制傳送端的傳送速率,使得接收方可以及時接收。tcp主要是通過滑動窗體 來實現流量控制的。實際上,傳送窗體的大小不僅受接收窗體rwnd的大小的限制,還受擁塞窗體cwnd窗體的限制,為了...
流量控制傳輸協議 SCTP
sctp在客戶和伺服器之間提供管理,並像tcp那樣給應用提供可靠性,排序,流量控制以及全雙工的資料傳送,sctp支援多宿而涉及不止兩個位址。sctp是面向訊息的。提供各個記錄的按序遞送服務。與udp一樣。由傳送端寫入的每條記錄的長度隨資料一道傳遞給接收端。同時sctp不會因為乙個訊息的丟失阻塞統同一...
TCP 協議中的流量控制
協議 流量控制 滑動視窗 nagle tcp 協議中的流量控制 tcp協議上的網路協議特別多1 互動資料型別,例如 telet ssh 這種型別的協議在大多數情況下只是做小流量的資料交換,比如說按一下鍵盤,回顯一些文字等等。2 資料成塊型別,例如 ftp,這種型別的協議要求 tcp能盡量的運載資料,...