【发布时间】:2011-11-10 12:12:25
【问题描述】:
无法理解 Node.js 的网络套接字中 setKeepAlive 方法的原理。 initialDelay 完成后会发生什么?
【问题讨论】:
无法理解 Node.js 的网络套接字中 setKeepAlive 方法的原理。 initialDelay 完成后会发生什么?
【问题讨论】:
此方法控制底层 TCP 套接字上的 TCP 保持活动功能。查看this article 了解有关 TCP Keepalive 的信息。这是一个解释 initialDelay(“keepalive 计时器”)做什么的 sn-p:
2.1。什么是 TCP keepalive?
keepalive 的概念很简单:当你建立一个 TCP 连接时,你关联了一组定时器。其中一些计时器处理保活过程。当保活计时器达到零时,您向对等方发送一个保活探测数据包,其中没有数据并且 ACK 标志打开。由于 TCP/IP 规范,您可以这样做,作为一种重复的 ACK,并且远程端点将没有参数,因为 TCP 是面向流的协议。另一方面,您将收到来自远程主机的回复(根本不需要支持 keepalive,只需要 TCP/IP),没有数据和 ACK 集。
如果您收到对 keepalive 探测的回复,您可以断言连接仍在运行,而无需担心用户级实现。事实上,TCP 允许您处理流,而不是数据包,因此长度为零的数据包对用户程序没有危险。
此过程很有用,因为如果其他对等方失去连接(例如通过重新启动),即使您没有流量,您也会注意到连接已断开。如果您的对等方未响应 keepalive 探测,您可以断言连接不能被视为有效,然后采取正确的操作。
【讨论】: