在TCP剛出世的時候,其主要工作環境是以太網和SLIP之類的低速網絡。隨着高速網絡的出現,讓TCP協議的吞吐量更大,效率更高的要求就愈來愈迫切。爲此,TCP增加了三個重要機制來對應現在的變化,他們是
路徑MTU發現。
窗口擴大選項和時間戳。
T/TCP(增加了事務功能的TCP協議)。
1.路徑MTU發現
顧名思義路徑MTU指的是源主機到墓地主機之間的路徑的可傳送最大單元的大小。其原理同樣是使用設置了不許分片的IP數據報,並等待ICMP錯誤,來估算MTU的大小。書中的P257介紹了TCP如何根據ICMP的報文來修改自己的MTU。具體如下:
當源主機接收到較新的ICMP差錯報文時,就直接修改自己的最大發送報文段大小爲發送ICMP差錯報文的發送端的MTU與IP頭和TCP頭的差值。
當源主機接收到較新的ICMP差錯報文時,則必須嘗試下一個MTU(各種不同的網絡設備都有一個MTU,各個MTU從大到小爲"65535,17914,4464,4352,1500,1492,576,296")。
因爲路由可以動態變化,所以每隔10分鐘,發送端就可以用比較大的報文來偵測一下路徑MTU。
2.長肥管道
所謂的長肥管道,說的就是發送時延長,帶寬寬的管道,衡量這一概念的標準是時延面積。如果碰上了網絡“又長又肥”,那麼網絡的利用率就會大幅度的降低,普通的計時方法和窗口面積就不夠用了。就需要更多的措施來彌補這個缺陷。這就是時間戳和窗口擴大選項。這些都是在經典TCP協議頭之外定義的擴展選項,格式如下:
2.1.時間戳選項
用戶在發送每一個TCP報文的時候都放置一個時間戳,接受方在確認中返回這個時間戳值。發送方就可以根據這個時間戳來計算RTT。從而使得RTT更加精確,減少不必要的重傳。減低網絡的負載。
2.2.窗口擴大選項
很奇怪的是爲什麼窗口最大的擴展量只有14而不是64。因爲畢竟窗口擴大選項有一個字節那麼長的數據可以用,不過,不管怎麼樣,還是記住爲好。窗口擴大選項可以讓窗口擴大到2的30次方。這就幾乎完美的解決了肥管道的問題。