TCP连接的关闭

这是我自己总结的TCP连接关闭是几种情形,不保证正确性与全面性,假定A端和B端通信:

1、双方四次握手的过程;

2、A端半关闭,经过一段时间,B端数据发送完毕并被A端确认,B端半关闭,A端进入TIME_WAIT状态;

3、A端或B端主动直接RST;

4、保活定时器启动:B端停止响应(路由故障,对方主机崩溃、重启,网线被拔等等),迫使A端保活定时器启动,2个小时(具体由协议栈实现)之后B端仍无响应(有若干种情况),A端放弃连接;

5、A端重传定时器启动,经过一段时间(具体由内核决定)尝试重传后,仍得不到B端ACK,A端发送RST;

6、A端坚持定时器启动,B端无响应,尝试若干次后,A段发送RST;

7、A端FIN_WAIT_2定时器超时,B端无响应,A端放弃连接调用tcp_close();

8、设定了linger的closesocket(或者是close)。

 

最好是看内核协议栈的源代码,有时间再研究吧:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值