小编Ros*_*iff的帖子

(为什么)FreeBSD 'net.inet.tcp.always_keepalive' 是否违反了 RFC1122?

在处理在 FreeBSD 上运行并使用 TCP 的服务器应用程序时,我注意到即使我的应用程序明确禁用了 TCP 套接字上的 SO_KEEPALIVE,也会发送 TCP keepalive 探测。

根据RFC1122 第 4.2.3.6 节(TCP Keep-Alives):

“如果包含保持连接,应用程序必须能够为每个 TCP 连接打开或关闭它们,并且它们必须默认为关闭。”

我发现可调参数net.inet.tcp.always_keepalive已启用(设置为 1),禁用它会阻止发送 keepalive 探测器。

在 FreeBSD 中包含这种行为背后的原因是什么?据我所知,Linux 和 Windows 没有这样的选项,但 FreeBSD 和 Mac OS X 有,因此它们违反了 RFC。

更具体地说,在什么情况下忽略应用程序的愿望是有意义的?

在我的情况下,这是一个简单的修复,因为我可以禁用该选项,但我想了解它为什么在那里。

这个问题表明 Linux 的行为符合 RFC。

freebsd tcp keepalive

6
推荐指数
1
解决办法
1544
查看次数

标签 统计

freebsd ×1

keepalive ×1

tcp ×1