KeepAlive通过发送ACK来实现持久连接。HTTP KeepAlive可以为多个请求使用连接。
对于持久连接,如果使用HTTP KeepAlive,则该连接将在HTTP KeepAlive超时之间持久化。因此,正如标题中所描述的那样,HTTP成为TCP KeepAlive的替代品。
对吗?
发布于 2019-11-28 05:36:23
HTTP KeepAlive成为TCP KeepAlive的替代品。
对吗?
不是的。这两者是完全不同的。
在HTTP中,如果没有保持活动集,每个请求都会涉及到自己的连接。当请求完成时,连接将关闭。如果设置好了连接,连接将被重用,但会达到一定的限制。
这完全是关于服务器和客户端是如何交互的,并且与底层网络层无关。
TCP保持活动功能确保连接上存在定期通信.理论上,TCP连接可以无限期地保持打开。但是在实践中,这样的连接可能必须遍历一些维护连接状态的网络组件(例如NAT路由器),并且在没有活动的情况下经过一段时间后就会丢弃该状态。
因此,TCP保持活动状态的一种方法是保持连接活动,以便这些组件保留连接所需的状态。
另一方面,TCP的特性之一是连接的物理链路可以被暂时中断,而不存在问题,只要在这个瞬间中断期间,两个端点都不需要连接。这通常是可取的,因为它允许透明地恢复中断。但在某些情况下,服务器或客户端需要及时显示中断。在这种情况下,使用“保持活动”功能会在连接上产生错误,否则不会发生错误,从而允许端点识别中断。
(顺便说一句,正是这种“在没有其他情况下产生连接错误”的效果,使我个人觉得应该避免使用TCP的“保持生存”功能。但是,它确实有其合法的用途,其他人可能会对利弊作出不同的评价。)
这些TCP保持活跃特性的效果都不是通过使用HTTP保持活动特性来实现的。因此,后者绝对不是前者的替代品。
https://stackoverflow.com/questions/59082206
复制相似问题