TCP keepalive的典型用法是什么?
What is the typical usage of TCP keepalive?
考虑一个存在一个服务器和多个客户端的场景。每个客户端创建 TCP 连接以与服务器交互。 TCP alive的三种用法:
- Server-side keepalive:服务器端发送TCP keepalive,确保客户端存活。如果客户端挂了,服务器关闭到客户端的TCP连接。
- 客户端保活:客户端发送TCP保活,防止服务器关闭与客户端的TCP连接。
- Both-side keepalive:服务端和客户端都发送TCP keepalive,如1和2所述。
以上TCP keepalive的哪些用法比较典型?
Server-side keepalive: The server sends TCP keepalive to make sure that the client is alive. If the client is dead, the server closes the TCP connection to the client.
如果客户端已死,服务器会收到 'connection reset' 错误,之后 它应该关闭连接。
Client-side keepalive: Clients sends TCP keepalive to prevent the server from closing the TCP connection to the client.
没有。客户端发送 keepalive,这样如果服务器挂了,客户端会得到一个 'connection reset' 错误,之后它应该关闭连接。
Both-side keepalive
由于保活失败,双方都可以获得'connection reset',如上所述。
Whuch of the above usages is typical?
其中任何一个,或 none。如果对等方定期发送,则实际上也不需要保活。因此,它通常对服务器比对客户端更有用。
实际上,服务器端和客户端端都可以使用TCP keepalive。确保操作系统最终释放与死连接关联的任何资源是很有用的。请注意,如果两台主机之间的连接由于它们之间的路由器出现问题而丢失,则两台主机都必须独立检测连接已断开,并自行清理。
现在,每台主机将在每个连接上维护一个计时器,指示它最后一次收到与该连接关联的数据包的时间。当计时器超过本地定义的某个阈值时,主机将发送一个保活数据包(即,主机不交换有关其自己的保活配置的信息)。所以任何一台保活时间最短的主机都会主动向另一台主机发送一个保活包。如果数据包确实通过,另一台主机(即保持活动时间较长的主机)将响应该数据包并重置自己的计时器;所以keepalive时间高的主机肯定永远不会达到自己发送keepalive包的需要,除非连接确实已经丢失了。
可以说,服务器通常比客户端机器更积极地保持活动状态(也就是说,它们通常会配置更短的保持活动时间),因为挂起的连接通常会对服务器软件产生不良影响(例如例如,软件可能会接受有限数量的并发连接,或者服务器可能会派生一个与每个连接关联的新进程实例)。
考虑一个存在一个服务器和多个客户端的场景。每个客户端创建 TCP 连接以与服务器交互。 TCP alive的三种用法:
- Server-side keepalive:服务器端发送TCP keepalive,确保客户端存活。如果客户端挂了,服务器关闭到客户端的TCP连接。
- 客户端保活:客户端发送TCP保活,防止服务器关闭与客户端的TCP连接。
- Both-side keepalive:服务端和客户端都发送TCP keepalive,如1和2所述。
以上TCP keepalive的哪些用法比较典型?
Server-side keepalive: The server sends TCP keepalive to make sure that the client is alive. If the client is dead, the server closes the TCP connection to the client.
如果客户端已死,服务器会收到 'connection reset' 错误,之后 它应该关闭连接。
Client-side keepalive: Clients sends TCP keepalive to prevent the server from closing the TCP connection to the client.
没有。客户端发送 keepalive,这样如果服务器挂了,客户端会得到一个 'connection reset' 错误,之后它应该关闭连接。
Both-side keepalive
由于保活失败,双方都可以获得'connection reset',如上所述。
Whuch of the above usages is typical?
其中任何一个,或 none。如果对等方定期发送,则实际上也不需要保活。因此,它通常对服务器比对客户端更有用。
实际上,服务器端和客户端端都可以使用TCP keepalive。确保操作系统最终释放与死连接关联的任何资源是很有用的。请注意,如果两台主机之间的连接由于它们之间的路由器出现问题而丢失,则两台主机都必须独立检测连接已断开,并自行清理。
现在,每台主机将在每个连接上维护一个计时器,指示它最后一次收到与该连接关联的数据包的时间。当计时器超过本地定义的某个阈值时,主机将发送一个保活数据包(即,主机不交换有关其自己的保活配置的信息)。所以任何一台保活时间最短的主机都会主动向另一台主机发送一个保活包。如果数据包确实通过,另一台主机(即保持活动时间较长的主机)将响应该数据包并重置自己的计时器;所以keepalive时间高的主机肯定永远不会达到自己发送keepalive包的需要,除非连接确实已经丢失了。
可以说,服务器通常比客户端机器更积极地保持活动状态(也就是说,它们通常会配置更短的保持活动时间),因为挂起的连接通常会对服务器软件产生不良影响(例如例如,软件可能会接受有限数量的并发连接,或者服务器可能会派生一个与每个连接关联的新进程实例)。