數據鏈路層流量控制滑動窗口機制窗口個數問題

湯神鎮樓

數據鏈路層的流量控制是限制發送方發送數據的速率。

接受端的接受窗口:每收到一個數據后,接收窗口就向后滑動一個位置并返回確認幀。

發送端的發送窗口:發出一個數據后設置一個計時器,收到確認幀后發送窗口向后滑動一個位置,如果超時則重新發送數據幀。


發送窗口



停止等待協議:發送窗口為1,接收窗口為1。

后退 N 幀:接收窗口為1。

故停止等待協議和后退 N 幀協議可以保證幀的有序接收。


后退N幀協議發送窗口個數 <= 2^n-1

當 n = 3 時,幀的序號為 0 - 7,此時若發送窗口 = 8,接收窗口每收到一個數據幀都會發送一個確認幀,窗口向前滑8個后指向下一組的 0 ,若 8 個確認幀全部丟失,發送端序號為 0 的數據幀會超時重發,接收端再收到序號為 0 的數據幀時會誤以為是新的幀,此時就出現了差錯。可以看到,若發送窗口 = 7 時就不會出現這種情況。


選擇重傳協議,新窗口序號和舊窗口序號不應該擁有同樣的序號。故發送窗口 = 接收窗口 <= 2^(n-1)


當窗口個數 > 2^(n-1) 時的錯誤情況

可以看到當發送窗口與接收窗口的個數 = 5 時,發送端發送5個數據后等待,接收端收到數據幀后向后滑動 5 個并發送確認幀,此時接收窗口中會含有下一輪序號為 0 的數據幀,若確認幀丟失,發送端超時重傳時又會出現新舊幀不分的錯誤。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。