Linux TCP 堆栈在放弃重传后不发送 RST

Linux TCP 堆栈在放弃重传后不发送 RST

多个来源(一个是我的同事,另一个是 Stevens 的《TCP/IP Illustrated》)表明,在 TCP 重传尝试用尽后应该发送 RST。我找不到在 TCP 协议 RFC 中强制执行此操作的内容,但是,这听起来很合理。我已尝试使用 2 个 Linux VM(内核 v4.4 和 v5.10),方法是将 sysctl tcp_reties2 参数设置为 3,启动数据传输,然后断开第二个 VM 的 eth“电缆”,在最后一次不成功的重传后,这两个 VM 均未发送 RST。在重传用尽后,在 SO_LINGER 设置为 0 的情况下对套接字调用 close() 也不起作用(我认为这是因为套接字当时已处于断开连接状态)。在这种情况下,有没有办法让 Linux 发送 RST?

相关内容