socket编程中TCP连接的复位报文(RST)小析
Posted 杰克船长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket编程中TCP连接的复位报文(RST)小析相关的知识,希望对你有一定的参考价值。
在TCP正常交互报文中,通常都是ACK,SYN,FIN之类的。在特殊情况下,会接收到RST报文,本端收到该报文意味着对端通知本端需要关闭本端连接。
本端接收RST报文的几种情况:
- 客户端 connect 一个服务端不存在的端口,服务端会向服务端发RST
- 客户端尝试连接服务端的一个端口,其处于TIME_WAIT状态时,服务端会向客户端发RST
- 主动发送RST, 丢弃发送缓冲区数据,异常终止连接
- 往半打开的连接写数据,对方会回复一个RST。举个例子:位于不同机器上的用户端和服务端在正常连接的情况下,突然拔掉之间的网线,再重启服务端。在这个过程,客户端感知不到服务端的异常,还保持着连接(此时是半打开的连接)。客户端往该连接写数据,重启后的服务端收到后会回复RST
RST相关处理:
- 发送RST,清除剩余的发送队列
- 接收RST,关闭连接或者重连,不回应
以上是关于socket编程中TCP连接的复位报文(RST)小析的主要内容,如果未能解决你的问题,请参考以下文章