2010-05-21 105 views
5

我将不胜感激的帮助,理解它需要多长时间来建立一个TCP连接时,我有平安RoundTripTip:TCP连接建立=如何基于Ping RRT测量时间?

根据维基百科的一个TCP连接将分三个步骤来建立:

1.SYN-SENT (=>CLIENT TO SERVER) 
2.SYN/ACK-RECEIVED (=>SERVER TO CLIENT) 
3.ACK-SENT (=>CLIENT TO SERVER) 

我的问题:

  1. 它是正确的,第三传输(ACK-SENT)将没有携带任何有效载荷(我的数据),但仅用于连接丁祖泉(这导致了结论,那。第四个打包将是第一个打包任何有效载荷....)

  2. 是否正确假设,当我的Ping RoundTripTime为20毫秒时,在上面给出的示例中,TCP连接建立将在在客户端和服务器之间可以传输任何数据之前,最少需要30毫秒的信息?

非常感谢您

汤姆

+0

如果你可以测量对主机的ping时间,为什么不测量连接呢?你所需要做的就是基本上在代码中进行连接调用。 – 2010-05-21 17:49:01

回答

4

这些东西基本上都是正确的,但#2假定往返时间是对称的。

+1

+1。通常在互联网上的路由很少是对称的。在一个企业里,这是一个不同的故事。 – 2010-05-21 17:46:04

0

为了衡量这一点,称为“到Syn/ACK的时间”(这不是建立连接的时间 - 当处于该状态时连接只是半开放的,您需要第三个数据包来承认企业需要考虑它建立了),你通常需要专业的工具,包括他们自己的TCP协议栈,从而实现这种测量。最常用的一个叫做Spirent Avalanche,但你也有Ixia's IxLoad或BreakingPoint Systems盒子(BPS现在已经被Ixia btw收购)。

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

同样如上所述,您不能假设延迟= RTT/2。测量第3层(IP)之上的单向延迟实际上非常复杂 - 并且您已经在第4层(TCP)。这篇博客文章详细讲述了这个挑战:http://synsynack.wordpress.com/2012/04/09/realistic-latency-measurement-in-the-application-layers/