Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets TCP连接建立=如何基于Ping RRT测量时间?_Sockets - Fatal编程技术网

Sockets TCP连接建立=如何基于Ping RRT测量时间?

Sockets TCP连接建立=如何基于Ping RRT测量时间?,sockets,Sockets,如果我有Ping RoundTripTip,了解建立TCP连接需要多长时间,我将非常感谢您的帮助: 根据维基百科,TCP连接将分三步建立: 1.SYN-SENT (=>CLIENT TO SERVER) 2.SYN/ACK-RECEIVED (=>SERVER TO CLIENT) 3.ACK-SENT (=>CLIENT TO SERVER) 我的问题是: 是否正确,第三次传输(ACK-SENT)尚未携带任何有效载荷(我的数据),但仅用于建立连接。(由此得出结论,第四个pa

如果我有Ping RoundTripTip,了解建立TCP连接需要多长时间,我将非常感谢您的帮助:

根据维基百科,TCP连接将分三步建立:

1.SYN-SENT (=>CLIENT TO SERVER)
2.SYN/ACK-RECEIVED (=>SERVER TO CLIENT)
3.ACK-SENT (=>CLIENT TO SERVER)
我的问题是:

  • 是否正确,第三次传输(ACK-SENT)尚未携带任何有效载荷(我的数据),但仅用于建立连接。(由此得出结论,第四个packt将是第一个持有任何有效载荷的packt…)

  • 假设Ping RoundTripTime为20毫秒时,在上面给出的示例中,TCP连接建立至少需要30毫秒,才能在客户端和服务器之间传输任何数据,这是否正确

  • 多谢各位


    汤姆

    < P>这些基本上是正确的,虽然α2假定往返时间是对称的。

    < P>来测量这个,称为“时间到SYN/ACK”(这不是建立连接的时间-在该状态下连接只是半开的,需要第三个包确认建立起来考虑它建立),您通常需要包含自己的TCP堆栈的专业工具,以实现这种测量。最常用的一种称为,但也有或BreakingPoint Systems box(BPS现已被Ixia btw收购)

    请注意,是的,第三个数据包没有任何数据,前两个数据包也是如此。它们只有Syn和Syn+Ack标记(这些是TCP标记),不包含任何应用程序数据。这种初始交换称为三方握手,因此会产生一些开销,这就是为什么TCP通常不用于实时应用程序(语音、实时视频等)的原因


    同样如上所述,您不能假设延迟=RTT/2。事实上,在第3层(IP)之上测量单向延迟是非常复杂的,您已经在第4层(TCP)了。这篇博文详细介绍了这一挑战:

    +1。互联网上的路由通常很少是对称的。在企业内部,情况就不同了。如果您可以测量到主机的ping时间,为什么不同时测量连接呢?基本上,您只需在代码中为connect调用计时。