zoukankan      html  css  js  c++  java
  • HTTP协议中的keepalive

    HTTP协议中的keep-alive

    HTTP协议中的keep-alive

    Table of Contents

    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
  • 相关阅读:
    C# 判断一个文本文件的编码格式(转载)
    img图片加载出错处理(转载)
    C#中当程序的访问权限不足时,Directory.Exists和File.Exists方法不会抛出异常报错
    ajax上传文件以及实现上传进度条(转载)
    通过jQuery Ajax使用FormData对象上传文件 (转载)
    CMD命令查看当前电脑安装所有版本.NET Core SDK(转载)
    SQL Server聚合函数与聚合开窗函数 (转载)
    C#中,使用显式类型转换(int)和Math.Round方法,将浮点数转换为整数的区别
    SQLServer 窗口函数(转载)
    node-webkit教程(8)Platform Service之Clipboard
  • 原文地址:https://www.cnblogs.com/liweilijie/p/2832672.html
Copyright © 2011-2022 走看看