tcp歡動視窗機制 TCP滑動視窗機制

2021-10-13 14:46:15 字數 1134 閱讀 5692

滑動視窗 (tcp流量控制)

介紹udp時我們描述了這樣的問題:如果傳送端傳送的速度較快,接收端接收到資料後處理的速度較慢,而接收緩衝區的大小是固定的,就會丟失資料。tcp協議通過「滑動視窗(sliding window)」機制解決這一問題。看下圖的通訊過程:

滑動視窗

1. 傳送端發起連線,宣告最大段尺寸是1460,初始序號是0,視窗大小是4k,表示「我的接收緩衝區還有4k位元組空閒,你發的資料不要超過4k」。接收端應答連線請求,宣告最大段尺寸是1024,初始序號是8000,視窗大小是6k。傳送端應答,三方握手結束。

2. 傳送端發出段4-9,每個段帶1k的資料,傳送端根據視窗大小知道接收端的緩衝區滿了,因此停止傳送資料。

3. 接收端的應用程式提走2k資料,接收緩衝區又有了2k空閒,接收端發出段10,在應答已收到6k資料的同時宣告視窗大小為2k。

4. 接收端的應用程式又提走2k資料,接收緩衝區有4k空閒,接收端發出段11,重新宣告視窗大小為4k。

5. 傳送端發出段12-13,每個段帶2k資料,段13同時還包含fin位。

6. 接收端應答接收到的2k資料(6145-8192),再加上fin位佔乙個序號8193,因此應答序號是8194,連線處於半關閉狀態,接收端同時宣告視窗大小為2k。

7. 接收端的應用程式提走2k資料,接收端重新宣告視窗大小為4k。

8. 接收端的應用程式提走剩下的2k資料,接收緩衝區全空,接收端重新宣告視窗大小為6k。

9. 接收端的應用程式在提走全部資料後,決定關閉連線,發出段17包含fin位,傳送端應答,連線完全關閉。

上圖在接收端用小方塊表示1k資料,實心的小方塊表示已接收到的資料,虛線框表示接收緩衝區,因此套在虛線框中的空心小方塊表示視窗大小,從圖中可以看出,隨著應用程式提走資料,虛線框是向右滑動的,因此稱為滑動視窗。

從這個例子還可以看出,傳送端是一k一k地傳送資料,而接收端的應用程式可以兩k兩k地提走資料,當然也有可能一次提走3k或6k資料,或者一次只提走幾個位元組的資料。也就是說,應用程式所看到的資料是乙個整體,或說是乙個流(stream),在底層通訊中這些資料可能被拆成很多資料報來傳送,但是乙個資料報有多少位元組對應用程式是不可見的,因此tcp協議是面向流的協議。而udp是面向訊息的協議,每個udp段都是一條訊息,應用程式必須以訊息為單位提取資料,不能一次提取任意位元組的資料,這一點和tcp是很不同的。

tcp歡動視窗機制 心得篇 TCP協議完整梳理

tcp協議無疑是408計算機網路考試的重點內容之一,故做此梳理。乙個網路協議,說到底是為了有助於資訊傳輸的。針對不同的資訊傳輸要求,人們開發出了不同的網路協議。而tcp滿足的傳輸要求是 可靠 有序 無丟失 不重複。tcp的協議資料單元是報文段,包括首部和資料兩部分。tcp是面向連線的 端到端的 面向...

TCP滑動視窗機制

tcp協議在能夠傳送資料之前就建立起了 連線 要實現這個連線,啟動tcp連線的那一方首先將傳送乙個syn資料報。這只是乙個不包含資料的資料報,然後,開啟syn標記。如果另一方同時在它收到syn標記的埠通話,它將發回乙個syn ack syn和ack標誌位都被開啟,並將ack 確認 編 號字段設定為剛...

TCP滑動視窗機制

tcp協議在能夠傳送資料之前就建立起了 連線 要實現這個連線,啟動tcp連線的那一方首先將傳送乙個syn資料報。這只是乙個不包含資料的資料報,然後,開啟syn標記。如果另一方同時在它收到syn標記的埠通話,它將發回乙個syn ack syn和ack標誌位都被開啟,並將ack 確認 編 號字段設定為剛...