長肥管道遇到的問題有哪些?
在帶寬乘積很大的時候,即處於長肥網絡中,容易暴露出問題網絡
capacity(b)=bandwidth(b/s) * round-trip time(s)接口
窗口太小的問題。
- 問題:TCP首部窗口大小爲16bit,從而窗口限制在65535個字節,可是當前存在大帶寬時延乘積,好比橫跨大陸的gigabit線路,能達到7500000字節,爲了提高吞吐量,須要更大的窗口。
- 解決方案:經過定義選項實現對16bit的擴大操做。
只能在SYN報文段中使用這個選項,並且只有主動創建鏈接的一方發送這個選項後,被動創建鏈接的一方纔能夠在SYN中使用這個選項ip
RTT測量不夠精確。
- 問題:TCP的RTT計算是採用的採樣方式,好比每一個窗口中有8個報文段時,採樣速率爲1/8,可是若是有100個報文段時,採樣速率爲數據速率的1/100,形成採樣不精確,容易引發沒必要要的重傳。
- 解決方案:使用時間戳選項,在每一個報文段中放置一個時間戳,接收方在確認中返回這個數值,從而容許發送方爲每個收到的ACK計算RTT。
只有在主動發送的SYN中設置了這個選項,而且另外一方中收到了這個選項,才能在後續的報文中進行設置內存
報文段標識有可能重複。
- 問題1:假如網絡中有一個被延遲一段時間的報文,它的鏈接被釋放,一個新的鏈接在兩個主機之間創建,這個報文段有可能再次被送達
- 解決思路:IP首部中的TTL定義每一個IP段的生存時間上線,而且每一個報文段有一個生存時間MSL
- 問題2:網絡很是快,致使再一個MSL的時候序號就反生了迴繞
- 解決方式:複用RTT測量時候的時間戳選項,發送發對這個每一個包使得這個時間戳遞增,那麼當收到報文時,若是發現時間戳比上次收到的時間戳要大,可是序號要小,就拋棄
TCP的實際運用的限制有哪些?
- 不能比最慢的鏈路運行得更快
- 不能比最慢的機器的內存運行的更快
- 不可以比由接收方提供的窗口大小除以往返時間所獲得的帶寬運行的更快
路徑MTU是如何影響TCP分段的?
- 在鏈接創建時,TCP使用輸出接口或對端聲明的MSS的最小MTU最爲起始的報文段大小,
- 此後,這個連接上的全部被TCP發送的IP數據報都將設置DF比特,若是某個中間路由器須要對一個設置了DF標誌的數據報進行分片,它就丟棄這個數據報,併產生一個ICMP的「不能分片」的報錯。
- 若是收到了這個報錯,TCP就減小段大小進行從新傳輸
設置DF比特是用來發現當前路由器是否須要對正在發送的IP數據報進行分片,若是一個待轉發的IP數據報被設置了DF標誌,但長度又超過MTU,那麼路由器將返回ICMP不可達的差錯ci
因爲路由是動態變化的,在最後一次減小路徑MTU的一段時間以後,能夠嘗試一個較大的值,RFC 1191推薦10分鐘路由
附錄
把書讀薄(TCP/IP詳解 卷一 第二十四章)it