gpt4 book ai didi

c - 客户端被杀死或崩溃时内核发送的 TCP RST

转载 作者:可可西里 更新时间:2023-11-01 02:43:20 25 4
gpt4 key购买 nike

我有一个客户端和服务器运行在同一台服务器(Linux 机器)上,它们之间有 TCP 连接。我观察到,当我杀死客户端时,内核/操作系统会在客户端被杀死 2 秒后发送 RST 数据包。我的问题是哪个内核参数 os Socket 选项控制这个计时器(2 秒)?

最佳答案

A RST通常不会在正常连接终止时在对等点之间发送。 FIN 。当你杀死客户端时,一个 FIN在连接上发送以向服务器指示客户端将不再发送任何数据。

但服务器显然没有关注 FIN它在客户端被杀死时接收(它需要在套接字上尝试 recv 并对它将获得的文件结束指示做出适当的 react ——通常这意味着 close自己的套接字)。随后,服务器正在尝试 send数据发送给客户端,但连接已关闭。 就是导致 RST 的原因正在发送的数据包。

RST意思是(大致)“没有事件连接可用于接收您发送的数据;发送更多数据毫无意义。”

因此 RST 的时机可能基于服务器下次尝试 send 的时间给客户端,而不是在任何内核/操作系统配置设置上。如果服务器不尝试 send 并且它没有close , 连接应该永远闲置在那里,没有 RST将被发送。

关于c - 客户端被杀死或崩溃时内核发送的 TCP RST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44362100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com