TCP窗口縮放選項是用來增加TCP接收窗口的大小而超過65536字節。這個TCP選項以及其他的幾個選項在RFC1323(處理長肥管道網絡,LFN)中定義。
實際上,通訊的吞吐量由兩個窗口限制:擁塞窗口和接受窗口。第一個總是保證不要發送操作網絡的容量(用塞控制),第二個不要超過接收方數據處理的能力(流控制)。接收方可能被數據沖跨,如果負載非常大(例如一個WEB SERVER)。每個TCP分段包含當前接收窗口的值。如果例如發送端收到一個ACK其對4000個字節作應答并且指定接收窗口是10000字節,那么發送端在發送14000個字節后就不能發送了,即使擁塞窗口是允許的。
為什么需要這個選項?
窗口縮放因子對于BDP大于64KB的時候的數據傳輸的效率非常有用。例如,如果一個T1傳輸鏈路,1.5Mbps是通過衛星的鏈路,RTT時間是513ms,那么BDP是:1500000*.513 = 769,500位或者96,188字節。最大的64KB窗口僅僅允許填充鏈路緩沖區的68%或者是1.02Mbps。
通過使用窗口擴大因子,文件傳輸可以接近 1.5Mbps,而充分利用可用帶寬。
這個選現在慢速網絡上發送大于64KB的文件也是有用的。
通過使用窗口擴大因子,接收窗口可能增加到最大1GB。
這個選項是TCP頭選項字段的一個字節部分。最終的窗口擴大因子將是頭部非選項部分定義的大小與這個系數2的冪的積:
新的窗口大小=首部定義的大小* 2^窗口擴大因子
操作系統的配置
Windows
TCP窗口擴大在Windows2000, XP,server 2003以及Vista中實現。Vista默認是打開的,其他操作系統實現為選項。因為許多router和防火墻不能正常的實現TCP窗口的擴大,會導致用戶的internet連接幾分鐘的故障,然后又沒有原因的正常工作。如果在Vista中診斷問題,錯誤小時顯示為不能與主要的DNS服務器通訊。如果防火墻不支持TCP擴展也會有這樣的問題。
Linux
Linux內核(從2.6.8 2004年8月)已經默認enable了TCP窗口擴大選項。其默認選擇一個適當的值。配置參數在/proc文件系統中,見pseudo-file /proc/sys/net/ipv4/tcp_window_scaling和它的搭檔 /proc/sys/net/ipv4/tcp_rmem和/proc/sys/net/ipv4/tcp_wmem。