有关TCP连接和TCP的查询保持活动状态?

问题描述:

我有一个关于连接和TCP以下查询永葆:有关TCP连接和TCP的查询保持活动状态?

  1. 是保持TCP强制TCP连接的?
  2. 保持活动的持续时间是固定的还是可配置的?
  3. 假设保持活动间隔每15秒一次,那么保持活动状态总是每15秒发送一次,或者仅在15秒内没有发送应用程序数据时才发送?
  4. 服务器(通过TCP与客户端连接)如何确定与客户端的连接是否完好 - 是否可以使用TCP keepalive完成 - 在这种情况下,它是否需要发送活着?另外,如果keepalive未启用,那么除了发送应用程序级别探测器之外,是否还有任何方法检查连接状态?

对于TCP连接,TCP保持活动状态是强制性的吗?

不,它是可选的,并且通过RFC 1122-3它必须在默认情况下关闭。

保持活动的持续时间是固定的还是可配置的?

默认情况下至少需要两个小时。它通常是可配置的,但通常只在全球范围内适用于所有套接字。

假设keep alive时间间隔是每15秒一次,那么保持活动状态总是每15秒发送一次,或者仅在15秒内没有发送应用程序数据时才发送?

我不确定这是否已定义,但很难看出它对您有什么影响。

服务器(与客户端通过TCP连接)如何能够计算出,如果与客户端的连接是否完好与否

通过观察它是否得到流上接收或ECONNRESET结束,或连接超时。

是否可以使用TCP keepalive来完成 - 在这种情况下,它会是需要发送keepalive的服务器吗?

需要找出的一面应该是发送keepalives的一面。如果两者兼而有之。

另外,如果keepalive没有启用,那么除了发送应用程序级别探测器之外,是否有任何方法检查连接状态?

参见上文。