HTTP协议中的keep-alive

本文深入探讨了HTTP协议中的keep-alive机制,解释了其在HTTP/1.0和HTTP/1.1版本中的工作原理及区别,特别强调了如何在不同服务器上关闭keep-alive连接的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?xml version="1.0" encoding="utf-8"?> HTTP协议中的keep-alive

HTTP协议中的keep-alive

1 概述

通常,我们说的http长连接,实际上是包含2种不同的含义:

  1. comet,是服务器和浏览器之间维持一个长时间的http连接,用于服务器消息的实时推送,见Web应用中的Comet技术,这种模式下,浏览器只会发送一次request请求,而server端会不断吐出消息给浏览器端,直到超时或者手工终止连接
  2. keep-alive,是http协议中定义的一个规范,它是利用同一个tcp连接处理多个http请求和响应,节省了tcp连接3次握手的开销,同时也就减少了后续请求的延时

1.1 HTTP/1.0

在HTTP/1.0版本中,并没有官方的标准来规定Keep-Alive如何工作,因此实际上它是被附加到HTTP/1.0协议上,如果客户端浏览器支持 Keep-Alive,那么就在HTTP请求头中添加一个字段 Connection: Keep-Alive,当服务器收到附带有Connection: Keep-Alive的请求时,它也会在响应头中添加一个同样的字段来使用Keep-Alive。这样一来,客户端和服务器之间的HTTP连接就会被保持,不会断开(超过Keep-Alive规定的时间,意外断电等情况除外),当客户端发送另外一个请求时,就使用这条已经建立的连接

1.2 HTTP/1.1

在HTTP/1.1版本中,默认情况下所在HTTP1.1中所有连接都被保持,除非在请求头或响应头中指明要关闭: Connection: Close ,所以在1.1版本中,Connection: Keep-Alive字段实际上已经意义不大了

如果想关闭keepalive,在某些服务器上,只需将keepalivetimeout设为0即可.

resin/tomcat等容器也都是支持Keepalive的,JDK中的URL类同样默认支持keepalive

要想真正理解keep-alive长连接模式,我们可以使用wireshark或tcpdump去抓包

对于一个没有开启keep-alive的server,response会返回Connection: Close,然后tcp连接马上就关闭了.

Date: 2012-12-25 Tue

Author: liweilijie

Org version 7.9.2 with Emacs version 23

Validate XHTML 1.0

转载于:https://www.cnblogs.com/liweilijie/archive/2012/12/25/2832672.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值