tcp 出现rst情况整理

转载 2015年11月20日 15:40:35

原文链接:http://www.cnblogs.com/lulu/p/4149562.html


正常情况tcp四层握手关闭连接,rst基本都是异常情况,整理如下:

1. GFW 

2. 对方端口未打开,发生在连接建立

   如果对方sync_backlog满了的话,sync简单被丢弃,表现为超时,而不会rst

3. close Socket 时recv buffer 不为空

  例如,客户端发了两个请求,服务器只从buffer 读取第一个请求处理完就关闭连接,tcp层认为数据没有正确提交到应用,使用rst关闭连接。

3. 移动链路

      移动网络下,国内是有5分钟后就回收信令,也就是IM产品,如果心跳>5分钟后服务器再给客户端发消息,就会收到rst。也要查移动网络下IM 保持<5min 心跳。

4. 负载等设备

      负载设备需要维护连接转发策略,长时间无流量,连接也会被清除,而且很多都不告诉两层机器,新的包过来时才通告rst。

   Apple push 服务也有这个问题,而且是不可预期的偶发性连接被rst;rst 前第一个消息write 是成功的,而第二条写才会告诉你连接被重置,

  曾经被它折腾没辙,因此打开每2秒一次tcp keepalive,固定5分钟tcp连接回收,而且发现连接出错时,重发之前10s内消息。

5. SO_LINGER 应用强制使用rst 关闭

    该选项会直接丢弃未发送完毕的send buffer,可能造成业务错误,慎用; 当然内网服务间http client 在收到应该时主动关闭,使用改选项,会节省资源。

  好像曾经测试过haproxy 某种配置下,会使用rst关闭连接,少了网络交互而且没有TIME_WAIT 问题

6. 超过超时重传次数、网络暂时不可达

7. TIME_WAIT 状态

  tw_recycle = 1 时,sync timestamps 比上次小时,会被rst

7. 设置 connect_timeout

     应用设置了连接超时,sync 未完成时超时了,会发送rst终止连接。

8. 非正常包

  连接已经关闭,seq 不正确等

9. keepalive 超时

    公网服务tcp keepalive 最好别打开;移动网络下会增加网络负担,切容易掉线;非移动网络核心ISP设备也不一定都支持keepalive,曾经也发现过广州那边有个核心节点就不支持。

10. 待整理


相关文章推荐

5种TCP连接中出现RST的情况。连接复位Reset a connection.

目录:[ - ] 1 端口未打开 2 请求超时 3 提前关闭 4 在一个已关闭的socket上收到数据 5.用于拒绝一个非法连接 总结 参考文献: 应该没有人会质疑,现在是一个网络时代了。应...

几种TCP连接中出现RST的情况

几种TCP连接中出现RST的情况 1 端口未打开 2 请求超时 3 提前关闭 4 在一个已关闭的socket上收到数据 总结 参考文献: 应该没有人会质疑,现在是一个网络时代了。应该不少程序员...

几种TCP连接中出现RST的情况 2013-1

原文地址:http://blog.chinaunix.net/uid-24517549-id-3991141.html 作者:chaohona 应该没有人会质疑,现在是一个网络时代了。应...

几种TCP连接中出现RST的情况

应该没有人会质疑,现在是一个网络时代了。应该不少程序员在编程中需要考虑多机、局域网、广域网的各种问题。所以网络知识也是避免不了学习的。而且笔者一直觉得TCP/IP网络知识在一个程序员知识体系中必需占有...

TCP/IP详解--接收RST回应的几种情况

应该没有人会质疑,现在是一个网络时代了。应该不少程序员在编程中需要考虑多机、局域网、广域网的各种问题。所以网络知识也是避免不了学习的。而且笔者一直觉得TCP/IP网络知识在一个程序员知识体系中必需占有...

socket tcp 产生 rst响应的情况

socket tcp 产生 rst响应的情况(属于硬错误) 1.     syn发送到服务器主机,但是目的端口并未运行。则产生一个ECONRFUSED错误。客户端立即返回。比如telnet 192....

TCP 发送RST分节的情况,关闭时 recv buffer 不为空,则发送RST分节

今天在写一个客户端,连接服务器模拟器的程序的时候碰到了一个小问题。 交互的顺序大概是这样的。 整个过程中TCP 客户端和服务端的读写全部使用阻塞模式。  Client           ...

接收RST回应的几种情况

1 端口未打开 服务器程序端口未打开而客户端来连接。这种情况是最为常见和好理解的一种了。去telnet一个未打开的TCP的端口可能会出现这种错误。这个和操作系统的实现有关。在某些情况下,操作...

TCP网络编程中RST分节总结

RST为“复位”,它是TCP在某些错误情况下所发出的一种TCP分节。 有三个条件可以产生RST:        1), SYN到达某端口但此端口上没有正在监听的服务器。        2), T...

TCP连接:SYN ACK RST UTG PSH FIN

TCP的三次握手是怎么进行的:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手;接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tcp 出现rst情况整理
举报原因:
原因补充:

(最多只允许输入30个字)