初识keepalive

概述

  • 说到keepalive机制,就要区分一下是TCP的keepalive还是HTTP的keep-alive,这两者是完全不同的概念。简单来讲,TCP的keepalive机制是在三次握手后双方处于established阶段时探测连接的可用性,而HTTP的keep-alive是保持客户端到服务器端的连接持续有效。

TCP的keepalive机制

  • 首先有三个参数需要了解:

tcp_keepalive_time //距离上次传送数据多长时间未收到数据开始发送检测;
tcp_keepalive_intvl //开始发送检测后间隔多久发送一次心跳包;
tcp_keepalive_probes //发送几次心跳包,若对方没有应答则断开连接;

  • 了解了这三个参数之后,就容易理解keepalive的处理流程以及机制了:

三次握手之后,A和B双方都处于established阶段,开始发送数据包。此时,若A发现在tcp_keepalive_time时间后,都没有收到B发送的数据,则开始进行心跳检测,每隔tcp_keepalive_intvl时间发送一次心跳检测包,若对方返回的都是RST,而不是ACK,则继续发心跳检测包,直到tcp_keepalive_probes次后,对方若无应答,则断开连接。

  • TCP的keepalive机制能够通过判断对方连接的可用性一定程度上避免资源的闲置和浪费。

HTTP的keep-alive机制

  • HTTP在正常情况下采用的是请求-应答的模式,即一次请求-应答之后客户端和服务器就断开连接,下一次请求-应答需要再次建立http连接。当开启了keep-alive模式时,一次请求-应答的连接状态可以被暂时保留下来,即此次连接持续有效。当客户端再次对服务器端发起请求时,不必重新建立连接。这样节省了建立连接、关闭连接的时间及资源开销,同时也有利于提升服务性能。

你可能感兴趣的:(计算机小知识,计算机小知识)