1. 首先我們知道TCP可靠傳輸原理中的停止等待協議,該協議就是發送方每發送一個報文段后就停止發送,一直等收到接收方的確認后再發送下一個報文段。
TCP通信是全雙工的,我們假定A為發送方,B為接收方。A會有一個發送窗口,B有一個接收窗口。
發送窗口表示在沒有收到B確認的情況下,A也可以連續把發送窗口的數據發送出去。但是已經發送過的數據在未收到確認之前,它還需要暫時保留,以便於超時重傳時使用。發送窗口越大,它就可以在收到對方確認之前發送更多的數據,因而獲得更高的傳輸效率。
2. 1比特滑動窗口協議發送窗口等於1,接收窗口等於1)
當發送窗口和接收窗口的大小固定為1時,滑動窗口協議退化為停等協議。該協議規定發送方每發送一幀后就要停下來,等待接收方已正確接收的確認(ACK)返回后才能繼續發送下一幀。由於接收方需要判斷接收到的幀是新發的幀還是重新發送的幀,因此發送方要為每一個幀加一個序號。由於停等協議規定只有一幀完全發送成功后才能發送新的幀,因而只用一比特來編號就夠了,具有累計確認機制。
3. 回退N幀協議(發送窗口大於1,接收窗口大於1)
由於停等協議要為每一個幀進行確認后才繼續發送下一幀,大大降低了信道利用率,因此又提出了后退n協議。后退n協議中,發送方在發完一個數據幀后,不停下來等待應答幀,而是連續發送若干個數據幀,即使在連續發送過程中收到了接收方發來的應答幀,也可以繼續發送。且發送方在每發送完一個數據幀時都要設置超時定時器。只要在所設置的超時時間內仍收到確認幀,就要重發相應的數據幀。如:當發送方發送了N個幀后,若發現該N幀的前一個幀在計時器超時后仍未返回其確認信息,則該幀被判為出錯或丟失,此時發送方就不得不重新發送出錯幀及其后的N幀。
4. 選擇重傳協議(發送窗口大於1,接收窗口大於1)
在后退n協議中,接收方若發現錯誤幀就不再接收后續的幀,即使是正確到達的幀,這顯然是一種浪費。另一種效率更高的策略是當接收方發現某幀出錯后,其后繼續送來的正確的幀雖然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在接收緩沖區中,同時要求發送方重新傳送出錯的那一幀。一旦收到重新傳來的幀后,就可以原已存於緩沖區中的其余幀一並按正確的順序遞交高層。這種方法稱為選擇重發(SELECTICE REPEAT)。顯然,選擇重發減少了浪費,但要求接收方有足夠大的緩沖區空間。