ssk*_*sk3 6 tcp http keep-alive
TCP KeepAlive 通过定期发送 ACK 来建立持久连接。HTTP KeepAlive 可以将连接用于多个请求。
对于持久连接,如果使用HTTP KeepAlive,则在HTTP KeepAlive超时期间连接将被保持。因此,如标题所述,HTTP KeepAlive 成为 TCP KeepAlive 的替代品。
那是对的吗?
HTTP KeepAlive 成为 TCP KeepAlive 的替代品。
那是对的吗?
不,两者完全不同。
在 HTTP 中,如果没有设置 keep-alive,每个请求都会涉及自己的连接。请求完成后,连接将关闭。如果设置了,连接将被重用,但有一定限制。
这完全是关于服务器和客户端如何交互的,与底层网络层无关。
TCP 保持活动功能可确保连接上存在周期性流量。理论上,TCP 连接可以无限期地保持打开状态。但实际上,这样的连接可能必须遍历某些维护连接状态的网络组件(例如 NAT 路由器),并且在经过一段时间没有活动后将丢弃该状态。
因此,TCP 的 keep-alive 的用途之一就是保持连接处于活动状态,以便此类组件保留连接所需的状态。
另一方面,TCP 的特点之一是连接的物理链路可以暂时中断而不会出现问题,只要在该瞬间中断期间没有端点需要该连接即可。通常这是可取的,因为它允许透明地恢复中断。但在某些情况下,服务器或客户端需要及时指示中断。在这种情况下,使用保持活动功能可能会在连接上产生原本不会发生的错误,从而使端点能够识别中断。
(顺便说一句,正是这种“在不会发生连接错误时产生连接错误”的效果,使我个人认为应该避免使用 TCP 的 keep-alive 功能。但是,它确实有其合法用途,其他人可能会评估优缺点不同。)
TCP 保持活动功能的这些效果都不是通过使用 HTTP 保持活动功能来实现的。因此,后者绝对不能替代前者。
| 归档时间: |
|
| 查看次数: |
895 次 |
| 最近记录: |