我想计算TCP数据包的往返时间。
但在wireshark中,我没有看到任何特定字段用于TCP数据包的RTT时序,就像它的RTP数据包一样。
Wireshark会计算RTT图,但我找不到它是如何计算的。
有人可以帮助我找到用于相同的公式吗?
答案 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
之后使用显示过滤器将分析限制为仅限一个远程主机)