湯神鎮樓
數據鏈路層的流量控制是限制發送方發送數據的速率。
接受端的接受窗口:每收到一個數據后,接收窗口就向后滑動一個位置并返回確認幀。
發送端的發送窗口:發出一個數據后設置一個計時器,收到確認幀后發送窗口向后滑動一個位置,如果超時則重新發送數據幀。
發送窗口
停止等待協議:發送窗口為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 的數據幀,若確認幀丟失,發送端超時重傳時又會出現新舊幀不分的錯誤。