我想计算TCP数据包的往返时延。
但是在wireshark中,我没有看到任何特定的字段来表示TCP数据包的RTT时间,就像RTP数据包那样。
wireshark确实会计算RTT图形,但我不知道它是如何计算的。
有人能帮我找到用于计算RTT的公式吗?
我想计算TCP数据包的往返时延。
但是在wireshark中,我没有看到任何特定的字段来表示TCP数据包的RTT时间,就像RTP数据包那样。
wireshark确实会计算RTT图形,但我不知道它是如何计算的。
有人能帮我找到用于计算RTT的公式吗?
TCP协议本身并没有提供往返时间(RTT)的信息。内核是通过侦测数据发送后接收到确认消息所需的时间来估算RTT的。它记录了给定序列号发出的时间戳,并将其与相应ACK的时间戳进行比较。初始的三次握手可以为此提供一个合理的起始值。
然而,这只是一个估计值,因为接收方可以自由地延迟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
之后使用显示过滤器,将分析限制为仅一个远程主机)
[SEQ/ACK分析]
下看到它,并非一个字段。 - onon15