目錄
1. 滑動窗口機制
2. 停止等待協議(S-W)
2.1 滑動窗口機制
2.2 確認機制
2.3 重傳機制
2.4 為什么要給幀編號
3. 后退N幀協議(GBN)
3.1 滑動窗口機制
3.2 確認機制
3.3 重傳機制
4.??選擇重傳協議(SR)
4.2 確認機制
4.3 重傳機制
1. 滑動窗口機制
滿足發送窗口 + 接受窗口 ≤ 二的n次方,這里的n是用來給幀編號用的。
2. 停止等待協議(S-W)
2.1 滑動窗口機制
????????由于停止等待協議的發送端口和接受端口的大小都是1,所以n就取≥1就能滿足條件,也就是用一個比特位就能夠給幀編號。你可能會有疑問,1個比特位只能表示0或者1如何能給幀進行編號呢?我們往后看看就知道了。
2.2 確認機制
????????發送方發送0號數據幀,接收方在核對幀沒有出錯的情況下返回一個確認幀,并且往后移動一個窗口,此時發送方接受到確認幀之后再向后移動一個窗口。
2.3 重傳機制
? ? ? ? ①如果發送方發送0號幀的時候,受到電磁影響,數據幀丟失,那么接收方永遠不會接受到這個數據幀,也就不會給發送方發送確認幀,等待一段時間之后,會進行超時重傳。
? ? ? ? ②如果接收方發送確認幀的時候丟失了,此時接收方會向后移動,但是發送方的計時器超時之后會重傳給接收方移動之前的位置如下圖所示,接收方的D收到重復幀之后會丟棄,然后發送重復幀的確認幀,在發送方的D的計時器超時之前會接受到重復幀的確認幀,從而順利后移。
? ? ? ? ③如果當傳輸的時候數據有差錯,那么接收方會把幀丟棄,發送方的計時器必定會超時重傳,然后接收方接受到正確幀再進行發送確認幀,接收方再后移一位,至此恢復正常。?
2.4 為什么要給幀編號
? ? ? ? 因為如果不給幀編號,那么接收方不知道當前幀是不是重復幀,況且接受窗口和發送窗口的距離不超過1,所以回答上面的問題使用1bit表示幀序號足矣。
3. 后退N幀協議(GBN)
3.1 滑動窗口機制
? ? ? ? 發送窗口大于1,接收窗口等于1;取發送窗口為3,那么我們可以使用:滿足發送窗口 + 接受窗口 ≤ 二的n次方,確定n是2bit,所以我們可以使用:0,1,2,3,來對幀進行編號。
3.2 確認機制
? ? ? ? 當發送方連續發送三個數據幀之后,接收方返回確認幀,表示當前幀以及之前的所有幀已經全部接受。
3.3 重傳機制
? ? ? ?① 當發送方發送E的時候數據幀出現了問題,此時會繼續發送給F,但是F收到幀之后會直接丟棄,此時接受方的D會發送一個ack表示D之前的所有數據幀已經傳輸完畢,此時發送端的E的計時器已經超時,所以E之后的F會重傳、G第一次傳,此時接收到數據的EFG會在G處進行正常返回確認幀ack。
????????②當接收方發送確認幀的時候,確認幀丟失,那么最先發送的A會超時,就會重新發送數據幀ABC給接收方,接收方接收到的幀都是在窗口之外屬于“非法幀”,并且這些幀都是重復的會直接被丟棄,由于是“非法幀”,直接返回已接收的最后一個正確幀的確認幀。
4.??選擇重傳協議(SR)
接收窗口要小于等于發送窗口,如果違反規定則始終有空缺位沒有被利用,性能得不到完全發揮。
4.2 確認機制
選擇重傳協議,接受方可以連續接受多個幀,但是接收方必須每一個幀都必須回復一個ACK。
4.3 重傳機制
①當5號幀丟失,其他幀收到數據幀之后,會返回ACK,然后向后挪動一個位置,0號幀已經在發送窗口之內,會直接進行發送,但是發送方的5號幀并沒有接受到ACK,于是計時器就會超時重發。
?②當5號幀出現錯誤,那么接收方會發送一個NCK讓發送方立即重傳,這樣就可以讓發送方在計時器超時之前進行重傳,節省時間,此時0號幀也已經進入了窗口內也可以發送。
③BD確認幀丟失的時候,發送方窗口向后移動一格,此時E在窗口內,所以E直接發送數據幀,BD依次超時重傳,由于BD在接收窗口之外,所以認定這兩個數據幀是重復幀,直接丟棄并且返回ACK。?
再次說明,接收窗口 + 發送窗口的總大小 小于等于2的n次方 ,n是幀編號;如若不滿足則無法分辨重復幀。?