在TCP正常交互报文中,通常都是ACK,SYN,FIN之类的。在特殊情况下,会接收到RST报文,本端收到该报文意味着对端通知本端需要关闭本端连接。

本端接收RST报文的几种情况:

  1. 客户端 connect 一个服务端不存在的端口,服务端会向服务端发RST
  2. 客户端尝试连接服务端的一个端口,其处于TIME_WAIT状态时,服务端会向客户端发RST
  3. 主动发送RST, 丢弃发送缓冲区数据,异常终止连接
  4. 往半打开的连接写数据,对方会回复一个RST。举个例子:位于不同机器上的用户端和服务端在正常连接的情况下,突然拔掉之间的网线,再重启服务端。在这个过程,客户端感知不到服务端的异常,还保持着连接(此时是半打开的连接)。客户端往该连接写数据,重启后的服务端收到后会回复RST

RST相关处理:

  1. 发送RST,清除剩余的发送队列
  2. 接收RST,关闭连接或者重连,不回应

C神_
1 声望0 粉丝

引用和评论

0 条评论