HTTP协议中keep-alive

一 . http协议是有连接的协议,这样每一个连接过来都要重新打开一个tcp的http socket,短期内同一个host 对服务器的请求就会很慢,若是能够保持住连接,就可以节省socket open,socket close 等时间,早期在http1.0协议中附加了keep-alive字段,connection:keep-alive ,客户端发送http包含一个keepa-live段,S端识别并返回一个keep-alive这样一个保持的链接就建立了,http1.1 中所有的链接默认都被保持,这时客户端发送一个connection:close 字段表示关闭这个链接.  

在linux 上#tcpdump -n host 218.1.57.236 and port 80 监控信息  

nginx 上配置

client_header_timeout 默认60s  指定等待client发送一个请求头的超时时间.  如果在超时时间内没有收到任何请求头,nginx返回408 request time out

keepalive_timeout 默认75s S在75s后主动关闭http链接. 配置了这个参数后,S端才会返回keep-alive 的header ,否则即使http1.1 也不会返回header

二.  http的keep-alive 和tcp的keep-alive http的keep-alive 相当于保存了一个连接池,使用完之后不会立即销毁而是放在池子里,下次用的时候重新用.tcp的keep-alive 是保活机制,防止对面的服务器挂掉,而浪费这个连接,如果挂掉之后会返回rst.

  

原文地址:https://www.cnblogs.com/liuyuxing/p/5085426.html