tcp/ip协议中存在一些基本的术语,如MSL,TTL,RTT等。
MSL(max segment lifetime) 表示报文的最大生存时间,即包在网络上存在的最长时间,超过这个时间的包将被丢弃,这个值实际应用中是30s,1min,2 min等。
TTL(time to live) 表示包经过的最大的路由器的个数,这个值有源主机设置,每当包经过一个路由器,它的计数就减1,当为0时,这个包被丢弃,同时ICMP通知源主机。
在效果上MSL要比TTL大。
RTT(round-trip time) 表示client 到server的往返时间,TCP含有动态估算RTT的算法。
TCP连接关闭的发起者在收到对端的关闭请求,并发出关闭确认后进入time_wait后有一个等待时间,这个时间就是2MSL,主要是端口的占用的时间,如果设置了SO_ADDRREUSE就没有关系,close_wait是被关闭的一侧的状态。
基于上面的一些概念,当网络出现异常时,就会出现半开连接和半闭连接,以及rst命令的出现。
例如:
server重启后,先前已经建立连接的client在毫不知情地情况下,发送数据,这就是半闭连接,此时server就会发送rst命令。
半开连接就是在连接连接的过程中,没有及时收到响应,半开连接与半闭连接的最大区别就是半闭连接不能用,半开连接可以用。
client发送syn到server,但是server的端口并为打开,此时server也会发送rst。
在server抓包如果出现rst命令,可以尝试使用netstat查看连接的状态,以确认问题的原因。
阅读(535) | 评论(0) | 转发(0) |