Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets TCP套接字状态在更改IP地址后变为持久状态,即使已配置,也要尽早保持活动状态_Sockets_Tcp_Tcp Keepalive - Fatal编程技术网

Sockets TCP套接字状态在更改IP地址后变为持久状态,即使已配置,也要尽早保持活动状态

Sockets TCP套接字状态在更改IP地址后变为持久状态,即使已配置,也要尽早保持活动状态,sockets,tcp,tcp-keepalive,Sockets,Tcp,Tcp Keepalive,我遇到了一个关于TCP套接字keepalive的问题 TCP保持活动在套接字连接后启用和配置,并且系统具有自己的TCP保持活动配置 “ss-to”可以显示连接的保持活动状态信息 网络接口是PPPOE设备,如果我们打开接口,它将获得一个新的ip地址。旧的TCP连接将保持建立,直到保持活动超时 但有时“ss-to”表示tcp连接变为“persist”,需要很长时间(约15分钟)才能关闭 以下是“ss-to”的结果: ESTAB 0 591 172.0.0.60:

我遇到了一个关于TCP套接字keepalive的问题

TCP保持活动在套接字连接后启用和配置,并且系统具有自己的TCP保持活动配置

“ss-to”可以显示连接的保持活动状态信息

网络接口是PPPOE设备,如果我们打开接口,它将获得一个新的ip地址。旧的TCP连接将保持建立,直到保持活动超时

但有时“ss-to”表示tcp连接变为“persist”,需要很长时间(约15分钟)才能关闭

以下是“ss-to”的结果:

ESTAB   0        591           172.0.0.60:46402        10.184.20.2:4335     timer:(persist,1min26sec,14)
ESTAB  0        0             172.0.0.62:46120       10.184.20.2:4335    timer:(keepalive,4.480ms,0)
源地址为“172.0.0.60”,但网络接口的实际地址已更新为“172.0.0.62”

这是“ss-to”的正确结果:

ESTAB   0        591           172.0.0.60:46402        10.184.20.2:4335     timer:(persist,1min26sec,14)
ESTAB  0        0             172.0.0.62:46120       10.184.20.2:4335    timer:(keepalive,4.480ms,0)

我不知道为什么将“计时器”更改为“持久化”,这会使keep alive处于禁用状态。

简而言之:TCP keepalive仅在连接空闲时才相关,即没有要发送的数据。相反,如果仍有数据要发送,但由于缺少ACK或窗口为0,当前无法发送,则与其他超时相关。这可能是你的问题所在

有关详细信息,请参阅