HTTP 保活和 TCP 保活

2024-01-29

HTTP Keep Alive 是如何实现的?它内部是否使用 TCP Keep Alive?如果不是,服务器如何检测客户端是死是活?


我知道这是一个老问题,但仍然:

  • HTTP Keep-Alive 是一项允许 HTTP 客户端(通常是浏览器)和服务器(Web 服务器)通过同一 TCP 连接发送多个请求/响应对的功能。这减少了第二个、第三个……HTTP 请求的延迟,减少了网络流量等。

  • TCP keepalive 是一个完全不同的野兽。它通过发送小数据包来保持 TCP 连接打开。此外,当数据包发送时,这充当检查的作用,因此一旦连接断开,发送者就会收到通知(请注意,否则情况并非如此 - 直到我们尝试通过 TCP 连接进行通信,我们不知道它是否正常)。

要回答有关 HTTP Keep-Alive 的问题:

How is HTTP Keep Alive implemented? 

简而言之,HTTP 服务器不会在每次响应后关闭 TCP 连接,而是等待一段时间,以便其他 HTTP 请求也通过它。经过一段时间后,它还是会关闭它。

Does it internally use TCP Keep Alive? 

不,至少我认为这没有任何意义。

If not, how does the server detect if the client is dead or alive?

它不——它不需要。如果客户端发送请求,它将得到响应。如果客户端没有通过 TCP 连接发送任何内容(可能是因为连接已死),则超时将关闭连接;客户端当然会注意到这一点,并在需要时通过另一个 TCP 连接发送请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 保活和 TCP 保活 的相关文章

随机推荐