- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 C 中的套接字(在 Ubuntu 上),我想用 setsockopt
测试一些选项。
当我想测试 Keep Alive 选项时:TCP_KEEPIDLE
和 TCP_KEEPINTVL
(均来自 IPPROTO_TCP
系列) ,我注意到这个奇怪的行为:
预期行为当我将 TCP_KEEPIDLE
设置为 1(秒)并将 TCP_KEEPINTVL
设置为 3 时,Keep Alive 探测在空闲时间 1 秒后开始发送,然后每 3 秒。
意外行为但是当我将 TCP_KEEPIDLE
设置为 3,并将 TCP_KEEPINTVL
设置为 1 时,探测也是每 3 秒发送一次(而不是 1),所以间隔是空闲时间而不是我专门设置的那个。
是否有任何规范或文档说明 TCP_KEEPIDLE
始终低于或等于 TCP_KEEPINTVL
,或者这是一个错误?
谢谢。
最佳答案
以下是我的观察
TCP_KEEPIDLE 在连接空闲时出现。TCP_KEEPIDLE 用于在连接空闲时发送保活探测。在这里,空闲连接意味着没有数据从客户端发送到服务器。因此,如果 TCP_KEEPIDLE 设置为 120 秒,则服务器将在 120 秒后向客户端发送保活探测。
TCP_KEEPINTVL 和 TCP_KEEPCNT 在连接断开时出现。现在,让我们假设连接因网络故障而中断。网络故障可以通过在客户端移除 LAN 电缆来产生。现在,服务器将在“TCP_KEEPINTVL * TCP_KEEPCNT”之后关闭连接。因此,如果 TCP_KEEPINTVL 是 75(这是 linux 上的默认值)并且 TCP_KEEPCNT 是 9(这是 linux 上的默认值),服务器将在 75 秒后发送 9 个探测,并在没有响应时关闭连接。
TCP_KEEPIDLE与TCP_KEEPINTVL的关系
在 Qnx OS 中,我观察到 TCP_KEEPIDLE 和 TCP_KEEPINTVL 之间没有关系。 TCP_KEEPIDLE 可以低于 TCP_KEEPINTVL。
在 Linux OS 中,我观察到 TCP_KEEPIDLE 和 TCP_KEEPINTVL 之间存在关系。 TCP_KEEPIDLE 不能低于 TCP_KEEPINTVL。我认为这是一个错误。
关于c - TCP_KEEPIDLE 应该低于 TCP_KEEPINTVL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41664396/
我正在使用 C 中的套接字(在 Ubuntu 上),我想用 setsockopt 测试一些选项。 当我想测试 Keep Alive 选项时:TCP_KEEPIDLE 和 TCP_KEEPINTVL(均
在 C/Linux 中,很容易为每个KEEPALIVE tcp 连接独立设置这些套接字选项的不同值。 TCP_KEEPCNT (since Linux 2.4) The maximum number
我希望能够设置 TCP 套接字 KEEPALIVE 参数(TCP_KEEPIDLE、TCP_KEEPINTVL 和 TCP_KEEPCNT),但这些在 Socket 中似乎不可用。类(class)。基
我是一名优秀的程序员,十分优秀!