socket编程中TCP连接的复位报文(RST)小析

Posted 杰克船长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket编程中TCP连接的复位报文(RST)小析相关的知识,希望对你有一定的参考价值。

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

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

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

RST相关处理:

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

以上是关于socket编程中TCP连接的复位报文(RST)小析的主要内容,如果未能解决你的问题,请参考以下文章

TCP状态详解

从TCP协议的原理来谈谈rst复位攻击

从TCP协议的原理来谈谈rst复位攻击

ip通信(第三周)

TCP重置报文段(RST)

网络编程Socket之RST详解