-2
在套接字中,keepalive不会关闭套接字。客户端发送一个keepalive标志给服务器,如果服务器同意连接不会被关闭。如果我很好地理解了这个概念,客户端只要客户端没有数据要发送,就会向服务器发送一个保活包(包含空数据)。“keepalive”功能如何与套接字一起使用?
但是,何时可以关闭一个插座?
以下是我能想到的
- 服务器/客户端的具体情景关闭连接
- 超时异常
路由器可以关闭连接?
在套接字中,keepalive不会关闭套接字。客户端发送一个keepalive标志给服务器,如果服务器同意连接不会被关闭。如果我很好地理解了这个概念,客户端只要客户端没有数据要发送,就会向服务器发送一个保活包(包含空数据)。“keepalive”功能如何与套接字一起使用?
但是,何时可以关闭一个插座?
以下是我能想到的
路由器可以关闭连接?
你混淆了两个不同的东西叫做keepalive。
在HTTP Keepalive中,它默认从HTTP 1.1开启,客户端必须明确请求关闭它。在HTTP 1.0中没有这样的事情,但有一个非正式的约定要求它:一个Connection: keep-alive
头。当使用保持活动状态时,在发送/接收HTTP响应之后,任何一方都关闭连接。当不使用保持活动时,双方关闭连接。
在TCP keepalive中,TCP堆栈发送的序列号低于已经确认的序列号的字节,这应该引起接收器用当前序列号发送ACK。
在HTTP或TCP中,连接可以在任何时候真正关闭,并且对等端只需检测并处理该连接。
我们在这里谈论什么应用层协议?路由器通常不会关闭连接。防火墙或IDS可能会将其确定为违反某些规则并发送RST(使用TCP连接)或开始双向丢弃端点组合的数据包。 –
@ MichaelJ.Gray:路由器在一段时间后关闭空闲连接。 FTP是一个臭名昭着的例子。在长文件传输过程中,除非客户端在命令连接上使用TCP保留,否则路由器可能会关闭空闲命令连接,因此路由器不会关闭它。 –
@RemyLebeau我从来没有说过他们没有。我写道他们通常不会。另外,FTP服务器软件通常是空闲连接被终止的原因。如果路由器正在终止空闲连接,并且它不作为直接上游提供者,则它也被广泛认为是错误配置。对于某些类型的连接,ISP通常具有1-2小时的空闲限制,但通常仅适用于那些按需计量或拨打的用户。但是与往常一样,由于基础设施的类型不同,配置因地区而异。 –