TCP状态,close_time与wait_time

之前看了多次TCP建立连接与断开连接的整体流程,对于状态也是看了很多遍,但是记住几天就又忘记了,感觉做个类比进行记忆是比较好的方法,便有了下面的图示类比,个人理解记忆,有问题请评论。

对于完整的记忆一般是这样的,能记住的话也是可以的,毕竟也是图形化的东西。

个人理解及抽象出来的是这样的

一段感情的开始是美好的,分开总是不舍的,(哈哈哈哈。。。不接受反驳)

1、为什么TIME_WAIT 状态 停留2MSL(max segment lifetime)时间?

主要是来两方面的原因:

1)为了防止上次连接的报文数据影响到下次的连接,有充分的的时间处理上次连接的报文信息。

2)客户端最后发的ACK可能会丢失,此时服务器端会重新发送FIN,若此时客户端处于closed,会响应rst (rst段标识复位,用来异常的关闭连接) 而不是ACK。因此客户端是TIME_WAIT状态,不是closed。

常用的三个状态是:ESTABLISHED表示正在通信 、TIME_WAIT表示主动关闭、CLOSE_WAIT表示被动关闭。


通常来讲,CLOSE_WAIT状态的持续时间应该很短,正如SYN_RCVD状态。但是在一些特殊情况下,就会出现连接长时间处于CLOSE_WAIT状态的情况。
出现大量close_wait的现象主要原因是某种情况下对方关闭了socket链接,但是我方忙与读或者写,没有关闭连接。
大量TIME_WAIT造成的影响:
      在高并发短连接的TCP服务器上,当服务器处理完请求后立刻主动正常关闭连接。这个场景下会出现大量socket处于TIME_WAIT状态。如果客户端的并发量持续很高,此时部分客户端就会显示连接不上。
来解释下这个场景。主动正常关闭TCP连接,都会出现TIMEWAIT。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值