网站建设必备软件,seo咨询服务,十大电子商务网站,wordpress免费简约模板目录
TCP keepalive TCP 的保活机制
主机崩溃
进程崩溃
有数据传输的场景
客户端主机宕机#xff0c;又迅速重启
客户端主机宕机#xff0c;一直没有重启
TCP连接服务器宕机和进程退出情况总结 TCP keepalive TCP 的保活机制
TCP 保活机制需要通过 socket 接口设置 S…目录
TCP keepalive TCP 的保活机制
主机崩溃
进程崩溃
有数据传输的场景
客户端主机宕机又迅速重启
客户端主机宕机一直没有重启
TCP连接服务器宕机和进程退出情况总结 TCP keepalive TCP 的保活机制
TCP 保活机制需要通过 socket 接口设置 SO_KEEPALIVE 选项才能够生效 定义一个时间段如果在这个时间段内保活时间7200s俩小时没有任何连接相关的活动启动TCP保活机制开始每隔一个时间段75秒发送一个探测报文如果连续几个9次探测报文都没有得到响应则认为TCP连接已经死亡。
主机崩溃
没开TCP keepalive的情况下客户端宕机服务端无法感知到客户端状态服务端的 TCP 连接将会一直处于 ESTABLISHED 连接状态直到客户端重启。
在没有使用 TCP 保活机制且双方不传输数据的情况下一方的 TCP 连接处在 ESTABLISHED 状态并不代表另一方的连接还一定正常。
进程崩溃
TCP 的连接信息是由内核维护的服务器进程崩溃内核需要回收该进程所有的TCP连接资源内核发送第一次挥手FIN报文后续的挥手过程也都是在内核完成并不需要进程的参与。
所以服务端的进程退出了还是可以成功的和客户端完成TCP四次挥手的过程。
有数据传输的场景
客户端主机宕机又迅速重启
只要有一方重启完成后收到之前 TCP 连接的报文都会回复 RST 报文以断开连接
客户端主机宕机一直没有重启
服务端超时重传报文的次数达到一定阈值后内核就会判定出该 TCP 有问题然后通过 Socket 接口告诉应用程序该 TCP 连接出问题了于是服务端的 TCP 连接就会断开。
TCP连接服务器宕机和进程退出情况总结 拔掉网线后 原本的 TCP 连接还存在吗
拔掉网线这个动作并不会影响 TCP 连接的状态要看拔掉网线后双方做了什么动作
拔掉网线后有数据传输
服务端向客户端发送的数据报文会得不到任何的响应服务端触发超时重传机制重传未得到响应的数据报文。
如果在服务端超时重传的过程中把网线插回去了客户端就会返回ACK响应报文。
如果没插回去重传个一定次数默认15次就断开连接了。
拔掉网线后没有数据传输
如果没有开启 TCP keepalive 机制在客户端拔掉网线后并且双方都没有进行数据传输那么客户端和服务端的 TCP 连接将会一直保持存在。
而如果开启了 TCP keepalive 机制在客户端拔掉网线后即使双方都没有进行数据传输在持续一段时间后TCP 就会发送探测报文 如果对端正常工作。TCP保活探测报文发送给对端这样TCP保活时间会被重置等待下一个TCP保活时间到来。 如果对端主机宕机探测报文不可达TCP会报告该TCP死亡
拔网线总结