HTTP keepalive与TCP keepalive的区别

HTTP-keepalive

  • HTTP是基于TCP传输协议实现的,客户端与服务段要进行HTTP连接前,需要先建立TCP连接,然后客户端发送HTTP请求,服务端收到后就返回响应,至此[请求-应答]完成,随后释放连接。
  • HTTP短连接:每次请求都经历一个建立TCP的连接。一次连接只能请求一次资源。
  • HTTP长连接:HTTP的keepalive实现了这个功能,可以使用同一个TCP连接来发送和接受多个HTTP请求/应答,避免连接建立释放的过程造成的资源消耗。
  • 特点:只要任意一端没有明确提出断开连接,则保持TCP连接。
  • 优点:节省整体响应时间。
  • HTTP流水线:客户端可以先一次性发送多个请求,而在发送过程中不需要先等待服务器的回应。
  • 为了避免资源浪费的情况,web服务器会提供超时连接的参数,用来指定HTTP长连接的超时时间。

TCP-keeaplive

  • 是由TCP内核层实现的,称为TCP的保活机制。
  • 定义在一个时间段,在这个时间段内,如果没有任何连接的相关活动,TCP保活机制会开始作用,每隔一个时间段,发送一个探测报文,该探测报文包含的数据非常少,如果连续几个探测报文都没有得到响应,则认为当前的TCP连接已经死亡,系统内核将错误信息通知上层应用程序。
  • 在linux内核可以有对应的参数可以设置保活时间、保活探测的次数、保活探测的时间间隔(保活时间:规定时间内如果没有任何连接相关的活动,则会启动保活机制;探测次数:没测探测次数;探测时间间隔:每次间隔为多长时间)。
  • 如果对端程序是正常工作的。当TCP保活的探测报文发送给对端,对端会正常响应,这样TCP保活时间会被重置,等待下一个TCP保活时间的到来。
  • 如果对端程序崩溃,或对端由于其他原因导致报文不可达。当TCP保活的探测报文发送给对端后,石沉大海,没有响应,连续几次,达到保活探测次数后,TCP会报告该TCP连接已死亡。

おすすめ

転載: blog.csdn.net/weixin_52099680/article/details/118693326