标签 'TCP'

TCP长连接一端宕机(掉电,拔网线)会发生什么?

场景: 客户端与服务端通过tcp长连接的方式进行数据交互,当服务端机器突然宕机(掉电、拔网线等)客户端会发生什么。 过程: 正常情况下当服务端执行kill -9/-12/-15 客户端会收到-1的数据包,当客户端收到-1数据包时,执行关闭socket既可以正常关闭socket。(关闭socket执行正常4次握手过程)         回到问题本身,为了复现该问题,我们找两台机器进行测试,客户端(x.x.156.57)服务端(x.x.36.14)通过tcp长连接进行数据交互,客户端先发送10条数据到服务端,然后sleep 3分钟,客户端sleep的过程中,关闭服务端(服务端机器不关进程直接执行poweroff模拟宕机情况).客户端sleep 3分钟后,再给服务端发送一条数据。 1、当服务端宕机...

阅读全文

TCP主动关闭连接原理简介

        在编写网络通信模块时,经常会遇到主动断开连接和被动断开连接的情况,针对主动断开连接时,要执行4次握手过程。而非正常断开连接有多种,比如说 连接的一端执行kill -9时,另一端需要针对 -1 状态码做处理,然后调用close主动断开连接。还有一种情况是链接的一端宕机(拔网线、掉电),这种情况请参考 “TCP长连接一端宕机(掉电,拔网线)会发生什么?”         这里主要说的是主动关闭连接情况。关闭4次握手过程如下图:         假如连接的两端分别为客户端(C)和服务端(S)。         一、C/S 执行close 客户端(C)或者服务端(S)一端执行关闭时,另一端会捕获到 -1 状态码,当获取到 -1 状态码时应该主动关闭,否则当前连接为坏连接。 看到这点的...

阅读全文