我们通过互联网连接到端口80上的一台远程服务器无法正常工作。 (不时有它工作,有时不)
这肯定是某种丢包,因为从其他客户端没有问题。 这只是从一个客户端到远程服务器。
通常,我用ping消息丢包,但是远程服务器阻塞ICMP。
我做了一个二进制TCPDUMP文件。 我怎样才能看到是否有包丢失?
捕获是在客户端完成的。 我们没有ssh访问远程服务器。
您可以通过计算重复序列号的数量来测量从客户端到服务器的数据包重新传输。
数据包从服务器重传到客户端可以通过统计重复的Ack号码来测量。
请注意,重传不仅仅是完全丢失(=超时)。 如果远程机器拒绝数据包,或数据包已损坏,则本地机器也必须重新发送。
tshark可以过滤重传,重复ACK,丢失段,…
$ tshark -r file.pcap -q -z io,stat,1,\ "COUNT(tcp.analysis.retransmission) tcp.analysis.retransmission",\ "COUNT(tcp.analysis.duplicate_ack)tcp.analysis.duplicate_ack",\ "COUNT(tcp.analysis.lost_segment) tcp.analysis.lost_segment",\ "COUNT(tcp.analysis.fast_retransmission) tcp.analysis.fast_retransmission"
以下是一个示例结果:
IO Statistics Interval: 1.000 secs Column #0: COUNT(tcp.analysis.retransmission) tcp.analysis.retransmission Column #1: COUNT(tcp.analysis.duplicate_ack)tcp.analysis.duplicate_ack Column #2: COUNT(tcp.analysis.lost_segment) tcp.analysis.lost_segment Column #3: COUNT(tcp.analysis.fast_retransmission) tcp.analysis.fast_retransmission | Column #0 | Column #1 | Column #2 | Column #3 Time | COUNT | COUNT | COUNT | COUNT 000.000-001.000 0 0 0 0 001.000-002.000 0 0 0 0 002.000-003.000 0 0 0 0 003.000-004.000 0 0 0 0 004.000-005.000 0 0 0 0 005.000-006.000 0 0 0 0 006.000-007.000 1 2 1 0 007.000-008.000 3 1 0 0 008.000-009.000 0 0 0 0 009.000-010.000 1 0 1 0 010.000-011.000 0 0 0 0 011.000-012.000 0 0 0 0 012.000-013.000 0 0 0 0 013.000-014.000 1 0 0 0 ====================================================================================