过滤器的使用
定义目标IP, ip.dst == 148.70.41.186
定义发送IP ip.src==148.70.41.183
定义端口 tcp.port == 10213
举例:
(ip.dst == 148.70.41.183||ip.src==148.70.41.183)&&tcp.port == 10213&&!(tcp.analysis.keep_alive)
修改时间格式:
视图-->时间显示格式
新增列:
533 00:16:37.799539 148.70.41.183 192.168.0.103 TCP 75 51867 10213 → 51867 [PSH, ACK] Seq=998 Ack=108 Win=124 Len=21 534 00:16:37.800130 148.70.41.183 192.168.0.103 TCP 70 51867 10213 → 51867 [PSH, ACK] Seq=1019 Ack=108 Win=124 Len=16 535 00:16:37.800137 148.70.41.183 192.168.0.103 TCP 74 51867 10213 → 51867 [PSH, ACK] Seq=1035 Ack=108 Win=124 Len=20
通过上面的截包记录,我们可以看出,同一个源发来的消息,正常情况下,下一个分片的seq=上一个分片的seq+上一个分片Len
,并且他们的Ack都是一样的。
长度控制 rame.cap_len==77
遇到的问题:
TCP Retransmission TCP重传
TCP Spurious Retransmission TCP虚假重传
看你的ip,应该是与外网通信,造成tcp超时重发的原因很多,如:路由器太过拥挤,导致一些IP包被丢弃等
指实际上并没有超时,但看起来超时了,导致虚假超时重传的原因有很多种:
(1)对于部分移动网络,当网络发生切换时会导致网络延时突增
(2)当网络的可用带宽突然变小时,网络rtt会出现突增的情况,这会导致虚假超时重传
(3)网络丢包(原始和重传的包都有可能丢包)会导致虚假重传超时。
当Client端收到Server的SYN+ACK应答后,其状态变为ESTABLISHED,并发送ACK包给Server;
如果此时ACK在网络中丢失,那么Server端该TCP连接的状态为SYN_RECV,并且依次等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包,以便Client重新发送ACK包。
Server重发SYN+ACK包的次数,可以通过设置/proc/sys/net/ipv4/tcp_synack_retries修改,默认值为5。
如果重发指定次数后,仍然未收到ACK应答,那么一段时间后,Server自动关闭这个连接。
但是Client认为这个连接已经建立,如果Client端向Server写数据,Server端将以RST包响应,方能感知到Server的错误。
cat /proc/sys/net/ipv4/tcp_timestamps
vi /etc/sysctl.conf
net.ipv4.tcp_timestamps=0
sysctl -p
参考资料: