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