在TCP正常交互报文中,通常都是ACK,SYN,FIN之类的。在特殊情况下,会接收到RST报文,本端收到该报文意味着对端通知本端需要关闭本端连接。
本端接收RST报文的几种情况:
- 客户端 connect 一个服务端不存在的端口,服务端会向服务端发RST
- 客户端尝试连接服务端的一个端口,其处于TIME_WAIT状态时,服务端会向客户端发RST
- 主动发送RST, 丢弃发送缓冲区数据,异常终止连接
- 往半打开的连接写数据,对方会回复一个RST。举个例子:位于不同机器上的用户端和服务端在正常连接的情况下,突然拔掉之间的网线,再重启服务端。在这个过程,客户端感知不到服务端的异常,还保持着连接(此时是半打开的连接)。客户端往该连接写数据,重启后的服务端收到后会回复RST
RST相关处理:
- 发送RST,清除剩余的发送队列
- 接收RST,关闭连接或者重连,不回应
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。