RST报文

672 阅读1分钟

在网络的学习过程中,fin,syn,ack耳闻能详,rst却没怎么听说过

RST报文是什么

当报文段的rst标志位为1的时候,此报文为rst报文。
RST报文的作用主要是用于复位由某种错误引起的错位连接,也用于拒绝非法数据和请求。
如果接收到RST报文,通常是因为发生了某种错误。如果发送RST报文来关闭连接,那么不必等缓冲区的数据发送出去,直接丢弃缓冲区的包,发送rst。

产生RST报文的几种情形

  1. 客户端向服务器第一次握手,发送syn报文,但是此时服务器没有相关进程监听这个端口。那么服务器会向客户端回复rst报文
  2. 连接超时,socket中设置的超时时间超过了网络中消息的往来时间
  3. 想取消一个已存在的连接
  4. 客户端在服务端关闭socket之后,依旧发送数据

总结一下rst出现的情形

1.connect一个不存在的端口;
2.向一个已经关掉的连接send数据;
3.向一个已经崩溃的对端发送数据(连接之前已经被建立);
4.close(sockfd)时,直接丢弃接收缓冲区未读取的数据,并给对方发一个RST。这个是由SO_LINGER选项来控制的;
 5.a重启,收到b的保活探针,a发rst,通知b