TCP RST段通过套接字发送到对等端的情况有多少?

时间:2013-01-30 12:48:24

标签: linux sockets unix tcp network-programming

我知道当进程崩溃时,通过向其他对等方发送RST数据包(段)将放弃现有的TCP套接字,而其他对等体上的相关套接字fd将接收RST数据包。

是否有其他情况发送RST数据包? 例如,如果一个进程在套接字fd上调用close()但是该套接字上有未读数据,它是否还会通过该套接字fd将RST数据包(段)发送给其他对等体?

1 个答案:

答案 0 :(得分:2)

引用TCP/IP Guide

  

一般来说,只要发生某事,就会产生重置   这是TCP软件的“意外”。一些最常见的   生成重置的特定情况包括:

     
      
  • 从与设备相关的任何设备接收任何TCP段   接收该段目前没有连接(除了   请求新连接的SYN。)

  •   
  • 收到序列号无效或错误的邮件或   确认号字段,表示该消息可能属于a   先前连接或以其他方式虚假。

  •   
  • 在没有进程侦听的端口上收到SYN消息   用于连接。

  •   

如果您发现奇怪的RST行为,您可能会成为TCP Reset Attack

的受害者

关于你的上一个问题,我想当你将未读数据的套接字关闭到套接字缓冲区时,不会发出RST,因为它不会破坏任何TCP规则(数据包被正确传递,它只是进行的过程不详细说明。而是会发送FIN