针对TCP连接异常断开的分析

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

        注意:一下描述的各种情况所使用的示例程序在文章的最后贴出

   ], recvline[, , , fp) !=) == , , )) < , &stat, WNOHANG)) > , )) > && errno ==)) < ) < ); } close(c); } }

更多相关文章
  • 关键字:linux 服务器 无法建立TCP连接 时间戳 net.ipv4.tcp_timestamps一.情况表现为    1.在公司内网对站点的http访问:        linux主机出现故障:curl以及抓包分析,发现服务端不响应linux客户端的请求,无法建立TCP连接,浏览器返回“无法连 ...
  • 服务器tcp连接timewait过多优化及详细分析
    [背景说明]在7层负载均衡上,查询网络状态发现timewait太多,于是开始准备优化事宜整体的拓扑结构,前面是lvs做dr模式的4层负载均衡,后端使用(nginx.or haproxy)做7层负载均衡[优化效果]修改前,建立连接的有29个,timewait的就达到了900个,如下图所示修改后,建立连 ...
  • TCP连接三次握手和四次断开分析
    该变量控制每个监听端口接收的客户端发送的SYN队列的长度,输入的SYN报文段连接请求需要排队,直到本地服务端接收,如果连接数多于默认值,则新来的 连接请求会被丢弃,在服务端会维护一个未连接队列,该队列为每个客户端发送的SYN包开设一个条目,说明已经收到SYN包,并且向客户端发出 SYN+ACK包,等 ...
  •  1.修改TCP默认 TCP 连接痴呆保持是 120 小时,也就是 5 天,可以通过tcp连接超时来断开sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600 2.用Iptablesiptables -I INPUT ...
  • 用tcpdump和wireshark分析tcp连接过程
    虽然很早就学习过TCP/IP协议,但是由于工作这两年都是在做算法方面的事情,没有实战过网络编程,对于TCP/IP仍然有些雾里看花的感觉.这两天复习了一下这方面的知识,算是给即将到来的新工作热热身.这篇文章就通过一个简单例子介绍如何使用tcpdump和wireshark分析tcp数据包. 一 tcpd ...
  • 原文地址:http://www.cnblogs.com/coser/archive/2010/12/05/1968812.html 一.实验目的 实验1_1: 使用Freebsd/Linux操作系统下的C编译器和网络程序的调试方法,掌握TCP连接建立和终止以及调整缓冲区大小的方法. 实验1_2: 使 ...
  • 文章转自:http://network.51cto.com/art/201408/449186_all.htm,如需转载请标明出处.我们通过了解 TCP各个状态 ,可以排除和定位网络或系统故障时大有帮助.一.TCP状态LISTENING :侦听来自远方的TCP端口的连接请求 .首先服务端需要打开一个 ...
  • 背景:前些天团队在进行终端设备和服务器端长连接业务的测试时,发现了这么一个情况:在拔掉设备端的网线后,再插上网线,有时可以继续正常的进行长接连请求,而且用的还是拔掉网线之前的那个长连接.但是有时却不能继续正常的长连接请求,需要重新建立一个新的长连接.让我尤感诧异的是第一种网线断开再插上后长连接可以恢 ...
一周排行
  • 这两天恰好有我的前boss在朋友圈分享他看到的文章,是关于分享的主题.作者在文章里把新人或者说菜鸟不肯分享的原因总结为害怕被所谓的高手/大牛所打脸而害怕分享.从我的经历来说,我认为这并非核心原因,仅仅是次要原因之一. ...
  • 1. 模块化.服务化,流程化,耦合度低.扩展性好,灵活度高,工具类封装完整,干净利索,调用简单方便2. 提供Rest服务,支持APP手机应用(android和ios)接口.php..net.易语言.VB等第三方接口调 ...
  •     今天是到软件园的第四天,坚定了要搞3D游戏.因为要稿3D,得找入门教程呀,邹前辈给了我指点,让我去“雨木momo的个人主主页”,由于我来到了51 CTO,希望这个开始能奠定我3D游戏开发的基底.争取机会让自己 ...
  • YbSoftwareFactory代码生成插件十五:Show一下最新的动态属性扩展功能与键值生成器功能
        YbSoftwareFactory 各种插件的基础类库中又新增了两个方便易用的功能 ...
  •       至此跨交换机间的vlan通信实验完成.
  • OSPF特殊区域几点小结:特殊区域:Area作用是否下放默认路由Stub过滤LSA4/5是(LSA3) Seed Cost=1 (area area-id stub)Totally Stub过滤LSA3/4/5是(L ...
  • VS11下载地址:http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=2000981141Win8 Metro下的MessageBox priva ...
  • 本文转载至:http://www.williamlong.info/archives/4378.html导语:投资人阎焱说过一句话:如果全民创业,这也是这个民族的悲哀了,说明国家没有给这个社会提供一个好的选择机会和社 ...
  • 主板:Intel S5000SAV(sas)陈列技术:Inte;l Embedded Server RAID Technology II硬盘:SAS 硬盘,配置成RAID1陈列第一步: 下载最新Intel Embed ...
  • MiniUI中DataGrid数据的载入
    DataTable dt = DataColumn dc1 = DataColumn dc ...