滑動視窗協議
傳送方和接收方都會維護乙個資料幀的序列,這個序列稱為視窗。傳送方的視窗大小由接收方確定,目的在於控制傳送速度,以免接收方的快取不夠大,而導致溢位,同時控制流量也可以避免網路擁塞。
如圖所示,4,5,6號資料幀已經被傳送出去了,但是沒有收到相應的ack,7,8,9幀是等待傳送的。可以看出視窗的大小為6,這是由接收端設定的。此時,如果傳送端收到4號ack,則視窗的左邊緣向右收縮,視窗的右邊緣則向右擴充套件,此時視窗就滑動了,即資料幀10也可以被傳送了。
停等協議
停等協議,此時接收方的視窗和傳送方的視窗大小都是1,1個位元表示就夠了,所以也叫1位元滑動視窗協議。傳送方這時自然傳送每次只能傳送乙個,並且必須等待這個資料報的ack,才能傳送下乙個。雖然在效率上比較低,頻寬利用率明顯較低,不過,在網路環境較差,或是頻寬本身就很低的情況下,還是適用的。
後退n協議
後退n協議:停等協議在惡劣環境下,效率太低,所以有了後退n協議,這裡傳送的視窗大小為n,接收方的大小為1,
如圖,傳送方一口氣傳送了10個資料幀,前面的兩個資料幀正確返回了,資料幀2出現了錯誤,這時傳送方重新傳送了2-8這7個幀,接受方也必須丟棄之前接受的3-8的幀。
後退n協議的好處是提高了效率,但是一旦網路情況糟糕,則會導致大量資料重發,效率可能不如上面的停等協議。
選擇重傳協議
後退n協議的另外乙個問題,當有錯誤幀出現後,總是要重發所有的幀,在網路不好的情況下會進一步惡化網路,重傳協議便是解決這個問題,接收端總會有快取所有收到的幀,當某個幀出現錯誤時,只會要求重傳這乙個幀,只有當某個序號的所有幀都正確收到後,才會一起提交給高層應用。重傳協議的缺點是接收端需要更多的快取。
TCP 滑動視窗協議
什麼是滑動視窗協議?一圖勝千言,看下面的圖。簡單解釋下,傳送和接受方都會維護乙個資料幀的序列,這個序列被稱作視窗。傳送方的視窗大小由接受方確定,目的在於控制傳送速度,以免接受方的快取不夠大,而導致溢位,同時控制流量也可以避免網路擁塞。下面圖中的4,5,6號資料幀已經被傳送出去,但是未收到關聯的ack...
TCP 滑動視窗協議
本系列文章是博主學習tcp協議以來的個人筆記。博主不能保證本文所述 內容絕對正確,所 以請讀者抱著懷疑的態度閱讀本部落格內的文字。如果讀 者因本部落格內的文字造成損失,本人 無力負責。如果有任何謬誤或者問題,希望讀者不吝賜教。在遍布世界的網際網路線路上進行可靠的資料傳輸談何容易,一來傳輸介質 有差異...
TCP 滑動視窗協議
什麼是滑動視窗協議?一圖勝千言,看下面的圖。簡單解釋下,傳送和接受方都會維護乙個資料幀的序列,這個序列被稱作視窗。傳送方的視窗大小由接受方確定,目的在於控制傳送速度,以免接受方的快取不夠大,而導致溢位,同時控制流量也可以避免網路擁塞。下面圖中的4,5,6號資料幀已經被傳送出去,但是未收到關聯的ack...