我想计算TCP数据包的往返时间。
但是在wireshark中,我没有看到任何用于TCP数据包的RTT定时的特定字段,就像RTP数据包那样。
Wireshark do计算RTT图,但我没有找到它是如何计算的。
有人能帮我找出同样的公式吗?
发布于 2012-10-16 22:19:52
TCP内部没有提供往返时间的任何东西。它是由内核根据接收已发送数据的ACK所需的时间来估计的。它记录给定序列号何时发出的时间戳,并将其与相应ACK的时间戳进行比较。最初的三次握手为此提供了一个不错的起始值。
然而,这只是一个估计值,因为如果接收器认为它可以用单个回复响应多个传入数据包,则它可以自由地将ACK延迟一小段时间。
由于不断变化的网络条件,RTT在会话持续时间内经常发生变化。端点越远,效果(显然)越明显。
发布于 2016-03-23 23:01:10
如果您想要获得由wireshark/tshark计算出的RTT的值,下面的代码帮我在stdout上打印它们:
tshark -r myfile.pcap -Y 'ip.addr == AA.BB.CC.DD' -T fields -e tcp.analysis.ack_rtt
(我在-Y
之后使用了display filter,将分析限制为只有一台远程主机)
发布于 2016-03-16 00:21:05
如果你使用的是wireshark,它会显示iRtt =初始往返和每个已发送数据包的RTT值,只需查看“在新窗口中显示数据包/序列/确认分析”
https://stackoverflow.com/questions/12915540
复制相似问题