2010-07-17 61 views
2

這是一個基本的疑問,但我想知道,如果在同一臺兩臺機器之間建立兩個TCP連接,兩個連接中的數據包是否遵循相同的路徑(相同的鏈路和節點)。我之所以問這是因爲我想測量兩臺機器之間的IPv4和Ipv6 TCP連接的帶寬,我想確保這兩個連接遵循相同的路徑。TCP連接基礎知識

回答

6

除非你有控制網絡和兩臺主機之間的路由,否則你不應該這樣做。 IPv4 vs IPv6尤其如此,因爲還沒有太多本地IPv6網絡,並且隧道可能遵循與「直接」IPv4不同的路線。更糟糕的是,IIRC沒有什麼能阻止一些中間網絡通過一個鏈路和一半路由一半來路由一些中間網絡,所以你不能認爲一個連接中的每個TCP數據包都會遵循相同的路徑。

+1

如果考慮同一網絡上的多個網絡接口,情況更是如此。 – 2010-07-17 19:43:27

+0

謝謝您的迴應。因此,我所瞭解的是即使是在同一臺機器之間有兩個IPv4 TCP連接,兩個連環的數據包也可以遵循不同的路徑。同樣在單個TCP連接中,不同的數據包可能遵循不同的路徑。但通常兩個TCPv4數據包可能遵循相同的路徑,只有在少數情況下它可能遵循不同的路徑。請糾正我,如果我錯了。 – user369823 2010-07-19 00:45:16

+0

你在那裏很滑,但對於持續時間不長的會話來說,這很可能是真實的。此外,您應該仔細閱讀TCP窗口縮放比例 - 這會對您的測量產生嚴重影響(尤其是在使用短會話和/或傳輸錯誤時)。 簡而言之:您真的需要考慮從您的測量中想要什麼樣的準確性。 – andri 2010-07-19 02:35:47

2

理論上不一定,但實際上,這取決於兩臺機器的位置。 如果兩臺機器之間只有一組路由器,那麼對您的問題的答案是肯定的。

1

2 TCPv4連接可能會遵循不同的路徑,儘管這並不常見。 TCPv4 nd TCPv6可能使用不完整的TCPv6實現的不同路徑。 [通常有IPv6島連接IPv4節點與隧道。 ]。

對於互聯網來說,BGPv6路由肯定與BGPv4有很大不同。