TCP keepalive的典型用法是什么?

TCP keepalive的典型用法是什么?,tcp,tcp-keepalive,Tcp,Tcp Keepalive,考虑一个场景,其中存在一个服务器和多个客户端。每个客户端创建TCP连接以与服务器交互。TCP活动有三种用途: 服务器端keepalive:服务器发送TCP keepalive以确保客户端处于活动状态。如果客户端已死亡,服务器将关闭与客户端的TCP连接 客户端keepalive:客户端发送TCP keepalive以防止服务器关闭与客户端的TCP连接 双面保留:服务器和客户端都发送TCP保留,如1和2中所述 上述TCP keepalive的哪些用法是典型的 服务器端keepalive:服务器发送T

考虑一个场景,其中存在一个服务器和多个客户端。每个客户端创建TCP连接以与服务器交互。TCP活动有三种用途:

  • 服务器端keepalive:服务器发送TCP keepalive以确保客户端处于活动状态。如果客户端已死亡,服务器将关闭与客户端的TCP连接

  • 客户端keepalive:客户端发送TCP keepalive以防止服务器关闭与客户端的TCP连接
  • 双面保留:服务器和客户端都发送TCP保留,如1和2中所述
  • 上述TCP keepalive的哪些用法是典型的

    服务器端keepalive:服务器发送TCP keepalive以确保客户端处于活动状态。如果客户端已死亡,服务器将关闭与客户端的TCP连接

    如果客户端已死机,服务器将收到“连接重置”错误,之后应关闭连接


    客户端keepalive:客户端发送TCP keepalive以防止服务器关闭与客户端的TCP连接

    否。客户端发送keepalive,以便在服务器死机时,客户端将收到“连接重置”错误,之后应关闭连接

    两侧保持

    如上所述,由于keepalive故障,双方都能够获得“连接重置”

    以上哪种用法是典型的


    他们中的任何一个,或者一个也没有。如果一个同伴定期发送邮件,那么它也不需要keepalive。因此,它对服务器的用处往往大于客户端。

    实际上,服务器和客户端对等方都可以使用TCP keepalive。确保操作系统最终释放与死连接相关的任何资源非常有用。请注意,如果两台主机之间的连接由于它们之间的路由器出现问题而丢失,那么两台主机都必须独立地检测到连接已断开,并自行清理

    现在,每个主机将在每个连接上维护一个计时器,指示它最后一次收到与该连接关联的数据包的时间。当计时器超过本地定义的某个阈值时,主机将发送一个keepalive数据包(即,主机不交换有关其自身keepalive配置的信息)。因此,具有最低保留时间的任一主机将主动向另一主机发送保留数据包。如果数据包确实通过,另一个主机(即保持时间较高的主机)将响应该数据包并重置其自己的计时器;因此,具有较高keepalive时间的主机肯定永远不会达到发送keepalive数据包的需要,除非连接确实已丢失


    可以说,服务器在keepalive上通常比客户端机器更具攻击性(也就是说,它们通常配置较低的keepalive时间),因为挂起连接通常会对服务器软件产生不良影响(例如,软件可能接受有限数量的并发连接,或者服务器可能会派生一个与每个连接相关联的新进程实例)。

    @EJB说:“因此,它对服务器的用处往往大于客户端。”,你的意思是服务器发送keepalive的用法更为典型吗?我不知道你会如何衡量这一点,但这似乎是可能的。例如,Telnet服务器使用它是标准的。客户端keepalive:客户端发送TCP keepalive以防止服务器关闭与客户端的TCP连接是不正确的,但如果是一个具有idel超时连接的防火墙,如果客户端发送的keepalive数据包在防火墙理想超时之前发送,keepalive可以防止连接老化。请检查link@Invictus client-side keepalive中的解决方案部分,其工作原理与服务器端keepalive完全相同,特别是它不可能阻止服务器应用程序禁止执行任何操作,因为服务器应用程序根本看不到它。因此,它不可能防止服务器中的空闲套接字超时。只有防火墙。@invicus,并且在您的链接中没有关于“阻止服务器关闭TCP连接”的内容。它是关于防止中间设备(即路由器)丢弃它。