TCP RST标志位

1. RST标志位

RST标志位位于TCP报文首部, 其置位时, 表示连线复位,首先断开连接,然后重建.
RST置位的分节(TCP数据包), 常称为RST分节. RST不同于close (FIN分节), close用于关闭正常连接, 而RST用于复位异常连接.

参考
TCP报文格式 | CSDN
TCP报文格式详解 | CSDN

2. 产生条件

UNP 4.3提到, RST是TCP发生错误时, 发送的一种TCP分节, 产生RST的三个条件是:

  1. 目的地为某端口的SYN达到, 而该端口上没有正在监听的服务器;
  2. TCP想取消一个已有连接;
  3. TCP接收到一个根本不存在的连接上的分节;

3. 产生场景

例如,

  1. 客户端发起connect请求时, 服务器在指定端口上没有进程在等待与之连接(没有accept阻塞等待), 或者服务器进程根本没有启动, 服务器就会回送RST分节, 此时客户端会报"connection refuse"错误;
  2. 服务器端通过设置TCP选项SO_LINGER, 取消一个长时间空闲连接, 可以发送RST分节;
  3. 当close A -> B的连接时, A发送FIN分节给B, B回ACK分节由于网络原因未能及时发送给A, 后来A重启进程后, 又重新收到B回的ACK, 然而此时A的化身已经无法识别之前的连接, 就会回送RST分节;

TCP中的RST标志(Reset)详解 | CSDN
网络编程Socket之RST详解 | CSDN

原文地址:https://www.cnblogs.com/fortunely/p/14850401.html