阿里一面:TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个 ...

      最后更新:2022-04-14 18:07:52 手机定位技术交流文章

      今天早些时候,一位读者向我提出以下问题:

      是否有TCP 保存和 HTTP 保持 HTTP 寿命?

      这是一个极好的问题。很多人变得困惑, 因为这两个物体看起来很相似, 很容易被误认为相同的东西。

      在现实中,这两个概念截然相反,实现的程度各不相同:

      • HTTP 保存-运行协议,又称 HTTP 长连接,由应用层(用户状态)执行。
      • TCP 保存,由TCP层(核心核状态)完成,称为TCP生存机制;

      那就分开讨论吧

      HTTP 保持实时

      HTTP协议使用“请求-回复”模式,客户在其中开始提出请求,服务器响应,如它再次这样做。

      请求-应答

      由于HTTP基于TCP运输协议,在通过HTTP进行沟通之前,客户和服务机构应当这样做。首先,必须建立TCP连接。客户然后提交HTTP的要求。当服务被调用时,它会做出回应。"请求回应"的范式已经结束了然后终止TCP连接。

      HTTP 请求

      如果每次请求都要经历这样的过程:建立 TCP -> 请求资源 -> 响应资源 -> 释放连接,那么此方式就是HTTP 短连接,如下图:

      HTTP 短连接

      由于这种负担如此沉重,每个连接只可能要求一次资源。

      能不能在第HTTP 请求完后,先不断开 TCP 连接,让后续的 HTTP 请求继续使用此连接?

      当然可以,HTTP 保持实时 就是实现了这个功能,可以使用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,避免了连接建立和释放的开销,这个方法称为HTTP 长连接。

      HTTP 长连接

      HTTP很长的连接保持TCP连接状态,只要两端均未明确提供。

      怎么才能使用 HTTP 保持实时 功能?

      HTTP 1. 在 HTTP 1. 0 中, 默认值已关闭, 如果浏览器想要启用“ 保存- 启用”, 它必须在请求的包头上附加以下内容 :

      Connection: Keep-Alive
      

      当服务器收到请求和答案时, 它会将以下内容附加到响应中 :

      Connection: Keep-Alive
      

      连接不会被中断, 但会被保存 。 当客户再次提交请求时, 它会使用相同的连接 。 这将持续到客户或服务器提供断开连接 。

      在 HTTP 1. start 中默认启用“ 保持启用” 。 如果您想要禁用“ 保持启用”, 您必须在 HTTP 软件包中包含以下代码 :

      Connection:close
      

      大部分浏览器现在都使用 HTTP/1 作为默认协议。 因此, 默认启用了“ 保存- 启用 ” 。 在客户端和服务同意后, 将建立很长的连接 。

      长链路高端传输平台不仅降低了TCP连接资源的成本,而且还为HTTP流线技术提供了可行的基础。

      所谓的HTTP流线的特点是客户能够一次性提交许多请求,而不必等待服务器作出反应,从而减少总响应时间。

      举例来说,客户必须请求提供两种资源。以前的做法是,使用与以前相同的 TCP 连接,先发送 A 请求,然后您必须等待服务器响应 。请求B将在收到后转交。客户可使用HTTP流技术提交A和B申请。

      HTTP流机制右侧可见。

      另一方面,服务器按逻辑顺序回答,首先回答A要求,然后回答B要求。

      此外,当服务器答复客户收到的第一批请求时,客户只能发送下一批请求,这意味着如果服务器的响应程序受阻,客户就不能发送下一批请求,从而造成“车队阻塞”问题。

      可能有的同学会问,如果使用了 HTTP 长连接,如果客户端完成HTTP 请求后,就不再发起新的请求,此时这个 TCP 连接一直占用着不是挺浪费资源的吗?

      事实上,为了减少资源浪费,网络服务软件通常包括关键超时选项,从而允许您为延长HTTP会议设定超时时间。

      例如,HTTP长期连接的超时为60秒。网络服务程序将启动计时器 。如果客户端在完后HTTP 请求后,60秒后,没有提出新的查询。定时器的时间一到,,它导致回声函数被调用,以便断开连接。

      HTTP 长 HTTP 连接超时

      TCP 保存性

      TCP 保存性 这东西其实就是TCP 的保活机制,它的工作原理我之前的文章写过,这里就直接贴下以前的内容。

      如果TCP连接的两端都没有互动,启动TCP生存机制的要求也得到满足,内核中的TCP将发出检测信息。

      • 当TCP现场检测信息传送到另一端时,终端通常会反应,因此TCP时间被重置,下一次TCP时间正在等待。
      • 如果终端主机失灵,或者由于其他原因,终端使信息无法进入。 当 TCP 现场检测报告被送回到另一端时, 石头被埋了, 没有回应, TCP 报告说TCP 连接连续多次死亡。

      因此,在双方之间没有数据交换的情况下,TCP生存机制可以通过检测报告确定另一方TCP连接是否有效,这项工作是在核心内部进行的。

      TCP 保活机制

      必须指出,想要利用TCP生存机制的程序必须通过插座界面配置SO_KEPALive,才能有效;如果不设置该变量,TCP生存机制就无法使用。

      总结

      HTTP 保持实时 也叫 HTTP 长连接,“ 应用程序” 执行此功能 。它使得能够发送和接收许多有关同一TCP连接的HTTP请求/答复。减少建立和释放HTTP短期连接TCP连接的费用。

      TCP 保存性 也叫 TCP 保活机制,内核负责此函数。如果客户和服务机构在一段时间内不与其互动,则无法接触数据。内核程序用于检查连接是否仍然有效 。就会发送探测报文,这是我第一次登录互联网之后您必须选择是否断开连接 。

      原文链接:
      https://mp.weixin.qq.com/s/25atTs4b-vORIx525ur_aw

      小林编码是提交人。

      如果你相信这些材料对你有益, 你可以把注意力放在它上。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/22115.html

          热门文章

          文章分类