TIME_WAIT作用:
1、若是LAST_ACK丢失(丢失的周期1个TTL),需要重新发送FIN;
2、防止同ip和port过早复用连接,导致收到上一个连接的数据。EINTR
accept、read等慢系统调用,在挂起的过程中,若是进程收到信号,则此挂起系统调用可能返回 EINTRtcp建立连接中涉及2个队列:一个已经完成连接队列(ESTABLISHED),一个未完成连接队列(SYN_RCVD)
服务端accept返回前中止,三次握手刚刚完成,服务端阻塞于accept,此时客户却发送了一个RST,此时accept会返回错误ECONNECTABORT或EPROTO
服务进程中止,
服务进程中止,内核会关闭其sock,则会向客户端发送一个FIN,并收到客户端的ACK。此时再向客户端sock发送数据,数据到达服务端时,内核发现其接收进程已经不存在,故返回客户进程一个RST。一般客户调用write后,立即调用read。若read在收到RST之前返回,则read返回值为EOF;若read在收到RST之后返回,则read返回错误ECONNRESTSIGPIPE,
若向已经接收到RST的sock继续写入数据,则内核会向该进程发送一个SIGPIPE信号,该信号默认为中止进程。且写操作返回错误EPIPE服务器主机崩溃
若是到达主机,所在局域网,则12min后read返回ETIMEOUT,若在中间路由器不可达,则read返回EHOSTUNREACH或ENETUNREACH服务器主机崩溃后重启
客户端在服务器奔溃后重启后再发送数据时,会收到一个RST,则read返回ECONNREST服务器主机主动关机
linux关机时,init首先会给所有进程发送 SIGTERM(可捕捉)信号,等待一段时间后,然后向仍在运行的进程发送SIGKILL(不可捕捉),则收到信号的进程都会关闭sock。
TCP连接的几种异常情况
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 如果对网络工程基础不牢,建议通读《细说OSI七层协议模型及OSI参考模型中的数据封装过程?》 下面就是TCP/IP...
- 第一章 TCP/IP简介 基本的C/S服务模型 网络编程是指编写的网络通信程序可以与网络上的其他程序进行通信。 T...
- 这次用python做一个tcp的服务器和客户端程序,主要用来做新建连接数测试。 1,新建连接数测试的原理 (1)首...
- 二战期间,西方有纳粹德国,在遥远的东方是他的盟友日本。当德国在与苏联在欧洲战场激战之时,身为盟友日本为何没有去进攻...