Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1357693
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: LINUX

2013-04-27 18:04:35

     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查看连接的状态,以确认问题的原因。
阅读(2221) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~