TCP连接基础知识
问题描述:
这是一个基本的疑问,但我想知道,如果在同一台两台机器之间建立两个TCP连接,两个连接中的数据包是否遵循相同的路径(相同的链路和节点)。我之所以问这是因为我想测量两台机器之间的IPv4和Ipv6 TCP连接的带宽,我想确保这两个连接遵循相同的路径。TCP连接基础知识
答
除非你有控制网络和两台主机之间的路由,否则你不应该这样做。 IPv4 vs IPv6尤其如此,因为还没有太多本地IPv6网络,并且隧道可能遵循与“直接”IPv4不同的路线。更糟糕的是,IIRC没有什么能阻止一些中间网络通过一个链路和一半路由一半来路由一些中间网络,所以你不能认为一个连接中的每个TCP数据包都会遵循相同的路径。
答
理论上不一定,但实际上,这取决于两台机器的位置。 如果两台机器之间只有一组路由器,那么对您的问题的答案是肯定的。
答
2 TCPv4连接可能会遵循不同的路径,尽管这并不常见。 TCPv4 nd TCPv6可能使用不完整的TCPv6实现的不同路径。 [通常有IPv6岛连接IPv4节点与隧道。 ]。
对于互联网来说,BGPv6路由肯定与BGPv4有很大不同。
如果考虑同一网络上的多个网络接口,情况更是如此。 – 2010-07-17 19:43:27
谢谢您的回应。因此,我所了解的是即使是在同一台机器之间有两个IPv4 TCP连接,两个连环的数据包也可以遵循不同的路径。同样在单个TCP连接中,不同的数据包可能遵循不同的路径。但通常两个TCPv4数据包可能遵循相同的路径,只有在少数情况下它可能遵循不同的路径。请纠正我,如果我错了。 – user369823 2010-07-19 00:45:16
你在那里很滑,但对于持续时间不长的会话来说,这很可能是真实的。此外,您应该仔细阅读TCP窗口缩放比例 - 这会对您的测量产生严重影响(尤其是在使用短会话和/或传输错误时)。 简而言之:您真的需要考虑从您的测量中想要什么样的准确性。 – andri 2010-07-19 02:35:47