使用Wireshark的TCP数据包的RTT时序

时间:2012-10-16 13:15:55

标签: networking tcp wireshark

我想计算TCP数据包的往返时间。

但在wireshark中,我没有看到任何特定字段用于TCP数据包的RTT时序,就像它的RTP数据包一样。

Wireshark会计算RTT图,但我找不到它是如何计算的。

有人可以帮助我找到用于相同的公式吗?

3 个答案:

答案 0 :(得分:5)

TCP内部没有任何内容可以提供往返时间。它是由内核根据接收到发送数据的ACK所花费的时间来估计的。它记录给定序列号何时消失的时间戳,并将其与相应ACK的时间戳进行比较。最初的3次握手为此提供了一个不错的起始值。

然而,这只是一个估计,因为接收者可以在短时间内自由延迟ACK,如果它认为它可以通过单个回复响应多个传入数据包。

由于网络条件的变化,RTT会在会话期间频繁发生变化。在端点越远时,效果(显然)越明显。

答案 1 :(得分:1)

如果您正在使用wireshark,它会显示iRtt =初始往返和每个已发送数据包的Rtt,只需查看“在新窗口显示数据包/ seq / ack分析”

答案 2 :(得分:1)

如果你想获得wireshark / tshark计算的RTT的值,以下是我在stdout上打印它们的技巧:

tshark -r myfile.pcap -Y 'ip.addr == AA.BB.CC.DD' -T fields -e tcp.analysis.ack_rtt

(我在-Y之后使用显示过滤器将分析限制为仅限一个远程主机)