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