本系列文章是博主學習tcp協議以來的個人筆記。博主不能保證本文所述
內容絕對正確,所
以請讀者抱著懷疑的態度閱讀本部落格內的文字。如果讀
者因本部落格內的文字造成損失,本人
無力負責。如果有任何謬誤或者問題,
希望讀者不吝賜教。
在遍布世界的網際網路線路上進行可靠的資料傳輸談何容易,一來傳輸介質
有差異,因此當肥胖管道中的資料洪流湧入瘦小管道時,很可能發生擁塞;
二來傳送者和接受者的資料吞吐速率不一定匹配,很有可能發方太快而收
方太慢,導致丟包重傳頻發;三來在廣域網高速遠距離傳輸時,tcp資料報
文的出錯機率相對於區域網要高得多。當然tcp面臨的問題不僅僅只有以
上三點。本文所闡述的內容主要是第二點——tcp的流量控制問題。
tcp使用滑動視窗協議來實現流量控制。該協議允許傳送方在停止並等待
確認前可以連續傳送多個分組。由於傳送方不必每發乙個分組就停下來等
待確認,因此該協議可以加速資料傳輸。
tcp連線的兩端各維護了乙個傳送視窗和乙個接收視窗,傳送方視窗的大
小由接收方確定,目的在於控制傳送速度,以免接收方的快取不夠大,而
導致溢位,同時也可以避免網路擁塞。如圖所示,接收方通告的視窗成為
提出的視窗(offered window),它覆蓋了第4位元組到第9位元組的區域。它表
明第4位元組之前的資料已經傳送並被對端確認,4-6為已經傳送但未被確認
的位元組,7-9是等待傳送的位元組,通告視窗的大小為6,這個視窗值是由接
收端告知的。當接收方確認資料後這個滑動視窗不停地向右移動。
需要強調的是:雖然視窗大小可減小,但是host requirements rfc強烈
建議不要使視窗的右邊界向左邊移動
TCP 滑動視窗協議
什麼是滑動視窗協議?一圖勝千言,看下面的圖。簡單解釋下,傳送和接受方都會維護乙個資料幀的序列,這個序列被稱作視窗。傳送方的視窗大小由接受方確定,目的在於控制傳送速度,以免接受方的快取不夠大,而導致溢位,同時控制流量也可以避免網路擁塞。下面圖中的4,5,6號資料幀已經被傳送出去,但是未收到關聯的ack...
TCP 滑動視窗協議
什麼是滑動視窗協議?一圖勝千言,看下面的圖。簡單解釋下,傳送和接受方都會維護乙個資料幀的序列,這個序列被稱作視窗。傳送方的視窗大小由接受方確定,目的在於控制傳送速度,以免接受方的快取不夠大,而導致溢位,同時控制流量也可以避免網路擁塞。下面圖中的4,5,6號資料幀已經被傳送出去,但是未收到關聯的ack...
TCP滑動視窗協議
滑動視窗協議 傳送方和接收方都會維護乙個資料幀的序列,這個序列稱為視窗。傳送方的視窗大小由接收方確定,目的在於控制傳送速度,以免接收方的快取不夠大,而導致溢位,同時控制流量也可以避免網路擁塞。如圖所示,4,5,6號資料幀已經被傳送出去了,但是沒有收到相應的ack,7,8,9幀是等待傳送的。可以看出視...