在套接字中,keepalive不会关闭套接字。客户端向服务器发送keepalive标志,如果服务器同意,则不会关闭连接。如果我理解这个概念,只要客户端没有数据要发送,客户端就会向服务器发送一个keepalive数据包(包含空数据)。
但是,什么时候可以关闭套接字?
以下是我能想到的情景
路由器可以关闭连接吗?
答案 0 :(得分:2)
你混淆了两种叫做keepalive的东西。
在HTTP keepalive中,默认情况下它从HTTP 1.1开启,客户端必须专门请求关闭它。在HTTP 1.0中没有这样的东西,但有一个非正式的约定来请求它:一个Connection: keep-alive
标题。当使用保持活动时,在发送/接收HTTP响应之后,任何一方都不会关闭连接。如果未使用保持活动状态,则双方都会关闭连接。
在TCP keepalive中,TCP堆栈发送的序列号低于已经确认的序列号,这应该激发接收方发送带有当前序列号的ACK。
在HTTP或TCP中,连接可以随时关闭,并且对等方只需检测并处理该连接。