問題:如果傳送端傳送的速度較快,接收端接收到資料後處理的速度較慢,而接收緩衝區的大小是固定的,就會丟失資料。
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資料,實心的小方塊表示已接收到的資料,虛線框表示接收緩衝區,因此套在虛線框中的空心小方塊表示視窗大小,從圖中可以看出,隨著應用程式提走資料,虛線框是向右滑動的,因此稱為滑動視窗。
滑動視窗:是一種流量控制
技術。意義:為了解決如果傳送端傳送的速度較快,接收端接收到資料後處理的速度較慢,而接收緩衝區的大小是固定的,就會丟失資料這一問題。滑動視窗本質上是描述接受方(本地)的tcp資料報緩衝區大小的資料,傳送方根據這個資料來計算自己最多能傳送多長的資料。如果傳送方收到接受方的視窗大小為0的tcp資料報,那麼傳送方將停止傳送資料,等到接受方傳送視窗大小不為0的資料報的到來。
TCP滑動視窗與流量控制
tcp採用可變滑動視窗來實現流量控制。tcp連線的兩端互動作用,互相提供資料流的相關資訊,包括報文段序列號 ack號和視窗大小 即接收端的可用空間 傳送端根據這些資訊動態調節視窗大小來控制傳送,以達到流量控制的目的。每個tcp頭部的視窗大小字段表明接收端可用快取空間的大小,以位元組為單位。該字段長度...
流量控制 滑動視窗
1.流量控制 我們都知道當網路上資料流量超過網路硬體負荷時就會出現網路擁塞,就是我們平常遇到的網路緩慢的現象。對應影響網路速度的原因主要有網路傳輸裝置的效能和傳輸的資料多少,網路傳輸裝置包含傳送接收主機 路由器 傳輸線路等。為了解決這個問題,tcp引入了流量控制,顧名思義,就是採用某種方法,控制收發...
TCP之滑動視窗,流量控制和擁塞控制
是在可靠性的前提下,讓我們進一步提高傳輸效率。所謂視窗 就是不等待ack的情況下,批量傳送的最大資料量,就叫 視窗大小。上面的視窗大小就是4000。滑動 視窗範圍表示哪些資料在等待ack,隨著乙個ack的到達,就立刻傳送下乙個資料,等待範圍就逐漸向後滑動。視窗越大,傳輸效率越高,但也不能無限大。在這...