TCP報頭里的那個窗口大小到底是指什么
TCP通過滑動窗口的概念來進行流量控制,
TCP報頭里的那個窗口大小到底是指什么
。設想在發(fā)送端發(fā)送數據的速度很快而接收端接收速度卻很慢的情況下,為了保證數據不丟失,顯然需要進行流量控制, 協調好通信雙方的工作節(jié)奏。所謂滑動窗口,可以理解成接收端所能提供的緩沖區(qū)大小。TCP利用一個滑動的窗口來告訴發(fā)送端對它所發(fā)送的數據能提供多大的緩 沖區(qū)。由于窗口由16位bit所定義,所以接收端TCP 能最大提供65535個字節(jié)的緩沖。由此,可以利用窗口大小和第一個數據的序列號計算出最大可接收的數據序列號。滑動窗口本質上是描述接受方的TCP數據報緩沖區(qū)大小的數據,發(fā)送方根據這個數據來計算自己最多能發(fā)送多長的數據。如果發(fā)送方收到接受方的窗口大小為0的TCP數據報,那么發(fā)送方將停止發(fā)送數據,等到接受方發(fā)送窗口大小不為0的數據報的到來。
關于滑動窗口協議,還有三個術語,分別是:
窗口合攏:當窗口從左邊向右邊靠近的時候,這種現象發(fā)生在數據被發(fā)送和確認的時候。
窗口張開:當窗口的右邊沿向右邊移動的時候,這種現象發(fā)生在接受端處理了數據以后。
窗口收縮:當窗口的右邊沿向左邊移動的時候,這種現象不常發(fā)生,
電腦資料
《TCP報頭里的那個窗口大小到底是指什么》(http://www.szmdbiao.com)。TCP就是用這個窗口,慢慢的從數據的左邊移動到右邊,把處于窗口范圍內的數據發(fā)送出去(但不用發(fā)送所有,只是處于窗口內的數據可以發(fā)送。)。這就是窗口 的意義。窗口的大小是可以通過socket來制定的,4096并不是最理想的窗口大小,而16384則可以使吞吐量大大的增加。
A—————C—————B
如上圖,A與B之間建立TCP連接,滑動窗口實現有兩個作用:
由于對稱性,只考慮A端發(fā)送窗口和B端接收窗口,有如下兩個作用
1。B端來不及處理接收數據(控制不同速率主機間的同步),這時,A通過B端通知的接收窗口而減緩數據的發(fā)送。
2。B端來得及處理接收數據,但是在A與B之間某處如C,使得AB之間的整體帶寬性能較差,此時,A端根據擁塞處理策略(慢啟動,加倍遞減和緩慢增加)來更新窗口,以決定數據的發(fā)送。
與固定大小的滑窗協議相比,TCP采用可變大小的滑窗協議是為了取得更好的性能。
TCP是一個廣域網協議,而廣域網環(huán)境下的路由器和主機,各自有著不同的性能和處理能力,在這種情況下,采用固定窗口大小的滑窗協議會引起性能上的損失。TCP規(guī)定窗口的大小是由接收方通告的,通過采取慢啟動和擁塞避免算法等機制來使帶寬和性能取得最佳。