我想计算 TCP 数据包的往返时间。
但是在wireshark中,我没有看到任何特定的RTT时间字段用于TCP数据包,例如RTP数据包。
Wireshark 确实计算了 RTT 图,但我没有找到它是如何计算的。
有人可以帮我找到用于相同的公式吗?
我想计算 TCP 数据包的往返时间。
但是在wireshark中,我没有看到任何特定的RTT时间字段用于TCP数据包,例如RTP数据包。
Wireshark 确实计算了 RTT 图,但我没有找到它是如何计算的。
有人可以帮我找到用于相同的公式吗?
TCP 内部没有任何东西可以提供往返时间。它是由内核根据接收到已发送数据的 ACK 所需的时间来估计的。它记录给定序列号何时发出的时间戳,并将其与相应 ACK 的时间戳进行比较。最初的 3 次握手为此提供了一个不错的起始值。
然而,这只是一个估计,因为如果接收方认为它可以用一个回复来响应多个传入的数据包,它可以在短时间内自由地延迟 ACK。
由于网络条件的变化,RTT 在会话期间经常发生变化。端点越远,效果(显然)越明显。
如果你想得到由wireshark/tshark计算的RTT的值,下面的技巧让我把它们打印到stdout上:
tshark -r myfile.pcap -Y 'ip.addr == AA.BB.CC.DD' -T fields -e tcp.analysis.ack_rtt
(我使用显示过滤器-Y
将分析限制为仅一台远程主机)
如果您使用的是wireshark,它会显示iRtt =initial Round Trip和每个发送数据包的Rtt,只需查看“在新窗口/seq/ack分析中显示数据包”