RST..

在TCP协议中RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。
TCP socket在任何状态下,只要收到RST包,即可进入CLOSED初始状态

出现RST的情况:
1)端口未打开
2)连接超时
setsockopt的SO_RCVTIMEO选项设置了recv的超时时间
3)提前关闭
close Socket 时recv buffer 不为空
  例如,客户端发了两个请求,服务器只从buffer 读取第一个请求处理完就关闭连接,tcp层认为数据没有正确提交到应用,使用rst关闭连接。
4)在一个已关闭的socket上收到数据
5)超过超时重传次数、网络暂时不可达
6)TIME_WAIT 状态
  tw_recycle = 1 时,sync timestamps 比上次小时,会被rst
7)keepalive 超时
公网服务tcp keepalive 最好别打开;移动网络下会增加网络负担,切容易掉线;非移动网络核心ISP设备也不一定都支持keepalive,曾经也发现过广州那边有个核心节点就不支持。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部