TCP连接突然断开的处理方法

TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程。

TCP断开连接的过程:TCP四次挥手。

TCP/IP 协议簇分层结构

数据链路层主要负责处理传输媒介等众多的物理接口细节;

网络层负责处理数据分组在网络中的活动,包括上层数据报文的分割、选路 等;

传输层则负责为两台主机提供端到端的通信;

应用层将负责处理应用程序的特定细节。

其中,IP 协议是网络层的核心协议,用来提供不可靠、无连接的数据传递服务;而 TCP 协议则处于传输层,其基于不可靠无连接的 IP 协议能够为两台主机提供面向连接的、可靠的通信。

探测 TCP 连接断连的三种常用方法

探测 TCP 连接是否断连或是工作正常的原理比较简单:定期向连接的远程通信节点发送一定格式的信息并等待远程通信节点的反馈,如果在规定时间内收到来自远程节点的正确的反馈信息,那么该连接就是正常的,否则该连接已经断连。依据该原理,目前常用的探测方法有以下三种。

应用程序的自我探测

应用程序本身附带探测其自身建立的 TCP 连接的功能。这种方法具有极大的灵活性,可以依据应用本身的特点选择相应的探测机制和功能实现。然而,实际应用中,大部分应用程序均没有附带自我探测的功能。

第三方应用程序的探测

此种方法就是在服务节点上安装相应的第三方应用程序来探测该节点上所有的 TCP 连接是否正常或是已经断连。该方法最大的不足就是需要所有支持探测的客户端能够识别来自该探测应用的数据报文,因此,实际应用中比较少见。

TCP 协议层的保活探测

最常用的探测方法就是采用 TCP 协议层提供的保活探测功能即 TCP 连接保活定时器。尽管该功能并不是 RFC 规范的一部分,但是几乎所有的类 Unix 系统均实现了该功能,所以使得该探测方法被广泛使用。

转载:http://www.ibm.com/developerworks/cn/aix/library/0808_zhengyong_tcp/ TCP 连接断连问题剖析

http://blog.csdn.net/hguisu/article/details/38700899  TCP连接的状态详解以及故障排查

http://blog.csdn.net/kkkkkxiaofei/article/details/12966407 Tcp通信中服务器处理客户端意外断开

原文地址:https://www.cnblogs.com/wuyepeng/p/9801095.html

时间: 2024-10-09 10:59:55

TCP连接突然断开的处理方法的相关文章

(转)TCP连接异常断开检测

TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断开的情况 TAG: TCP连接异常断开  TCP断链 TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断开的情况 1) 在TCP协议中提供了KEEPA

tcp连接、断开过程

TIME_WAIT状态在等2MSL后closed,存在的原因:1.ack n+1可能丢失,FIN N超时重发,如果不存在time_wait状态,则C端下次收到会响应RST报文,S端收到则会解释为是错误.因而,要实现TCP全双工连接的正常终止,必须正确处理终止过程中四个分节任何一个分节的丢失情况,主动关闭连接的A端必须维持TIME_WAIT状态 . 2.允许老的重复分节在网络中消失(消失前不允许启动新的化身).比如在没消失前启动一个新连接,那么老连接的一些报文可能在新连接的时候到来,这个时候就会发

SSH连接自动断开的解决方法(deb/rpm)

######### 修改后的: ## # tail -f -n 20 sshd_config#MaxStartups 10:30:60#Banner /etc/issue.net # Allow client to pass locale environment variablesAcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server # Set this to 'yes' to enable PAM authenticat

TCP连接如何断开连接

我们知道,一个基于TCP/IP的客户端-服务器的程序中,正常情况下,我会是启动服务器使其在一个端口上监听请求,等待客户端的连接:通过TCP的三次握手,客户端能够通过socket建立一个到服务器的连接:然后,两者就可以基于这个socket连接通信了.连接结束后,客户端(进程)会退出:在不需要继续处理客户请求的情况下,服务器(进程)也将退出.而且,当一个进程退出的时候,内核会关闭所有由这个进程打开的套接字,这里将触发TCP的四次挥手进而关闭一个socket连接.但是,在一些异常的情况下,譬如:服务器

Tcp连接的断开

Tcp连接断开的四次挥手 1 client端向server端发送FIN请求断开连接,client端进入FIN_WAIT_1状态,等待server端的ACK.此时客户端 不能发送数据,但仍然能够从server端读取数据. 2 server端收到FIN并发送了ACK之后,进入close_wait状态,不能够在读取数据,但仍然能向client发送数据. 3 client端收到了server端的ACK以后,进入FIN_WAIT_2状态,等待server端的FIN.server端发送FIN后进入 LAST

TCP连接与断开的API图示讲解

三次握手 建立一个tcp连接: 0.服务器必须准备好接受外来的连接.通过调用socket,bind,listen函数完成,成为被动打开(passive open): 1.客户端通过调用connect函数进行主动打开(active open).客户tcp发送一个SYN报文,告诉服务器端客户将在连接中发送的数据的初始化序列号,一般SYN报文不携带数据.(调用connect函数实现主动打开并阻塞connect等待握手确认) 2.服务器必须确认客户的SYN,同时服务器也得发送一个SYN报文,它含有服务器

(二十七)TCP和UDP,TCP连接和断开服务器

一.TCP和UDP的区别 TCP(Transmission Control Protocol)可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送缓存&接收缓存).面向字节流.使用TCP的应用:Web浏览器:文件传输程序. UDP(User Datagram Protocol)不可靠的.无连接的服务,传输效率高(发送前时延小),一对一.一对多.多对一.多对多.面向报文(数据包),尽最大努力服务,无拥塞控制.使用UDP的应用:域名系统 (DNS):视频流:IP语音(VoIP). 通过

MySQLdb 不活跃连接自动断开的解决方法

问题: 通过MySQLdb 连接mysql,如果长时间不活动,会被mysql断开,再次请求的时候会导致抛出异常"_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')" 原因: 这是因为mysql有两个参数来自动断开不活跃的连接,MySQLdb的连接超过这个时间后就会被mysql自动断开. interactive_timeoutwait_timeout 可以登陆mysql 执行show globa

服务器tcp连接timewait过多优化及详细分析

[背景说明] 在7层负载均衡上,查询网络状态发现timewait太多,于是开始准备优化事宜 整体的拓扑结构,前面是lvs做dr模式的4层负载均衡,后端使用(nginx.or haproxy)做7层负载均衡 [优化效果] 修改前,建立连接的有29个,timewait的就达到了900个,如下图所示 修改后,建立连接的有32个,timewait的从900降低到了49个,如下图所示 [具体优化方案] 注意:前端使用nat时,不适用本策略.详细"方案详细介绍"会说明 修改7层负载所在机器,/et