TIME_AWAIT 和CLOSE_WAIT.md

1. TCP连接建立与断开过程

建立:

首先,客户端主动进行连接,客户端处于SYN_SENT状态,发送同步码SYN=J,服务器收到SYN后状态为SYN_RCVD;

然后,server发送SYN=K , ACK=J+1(对SYN=J进行确认),client接受SYN和ACK建立连接,处于ESDABULISHED状态;

client 发送 ACK=K+1(确认K收到),server收到ACK建立连接ESDABLISHED;

断开:

client端发起连接断开请求,发送FIN=M,处于FIN_WAIT_1状态,server接收FIN处于CLOSE_WAIT(被动关闭)状态

server发送ACK=M+1,client接收ACK后处于FIN_WAIT_2(不再发送数据,可以接收数据,等待server发送结束);

server发送FIN=N,处于LAST_ACK状态

client接收到FIN发送ACK=N+1,状态置为TIME_WAIT,TIME_WAIT会保持2MSL时间

server接收到ACK,关闭连接,状态为CLOSED

2. TIME_WAIT状态

首先发起关闭连接的一方在收到另一方的关闭信号时,会将自身的状态置为TIME_WAIT,TIME_WAIT状态会持续2MSL时间,TCP协议不允许处于TIME_WAIT状态的连接启动一个新的可用连接。因此,在websocket微服务进程被关闭后端口依旧会被占用,导致服务不能立即重启

3. MSL时间

MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间IP数据包将在网络中消失 。MSL在RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒。

linux系统默认MSL为60秒,通过如下命令可以查看MSL时长


root@i-1fslvdlf:~# cat /proc/sys/net/ipv4/tcp_fin_timeout 

60
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值