感觉这就和回字的四种写法一样,并无卵用

原以为http1.1的新特性是提供了keep-alive,后来才知道,keep-alive选项http1.1已经不支持了,http1.1对该功能进行了改版

关于http1.0的扩展,提供的keep-alive选项是这样的,在首部增加:Connection:keep-Alive选项

http1.0默认是不开启的。

对于keep-alive还存在哑代理问题。

哑代理问题主要是,http客户端和服务器端进行通信时,会经过代理服务器,但是代理服务器不一定支持keep-alive。

keep-alive只应该存在一跳,即代理服务器在接收到http请求之后,应该执行Connection首部的规则,并且从首部中删除Connection字段。

但是有些比较老的http代理或者简单代理只是盲中继,只是将字节逐字转发,没有对Connection字段进行处理。

客户端将http数据包发送给代理之后,代理直接转发给http服务器端,http服务器端接收到之后,代理端已经将连接关闭。

但是此时服务器端以为代理端要和自己建立长链接,在接收之后不会关闭连接。

服务器端将带有keep-alive字段的http响应返回给客户端,同样在经过代理时,代理还是原封不动的进行了转发。

当客户端接收到之后以为自己的keep-alive请求得到了支持,因此也会保持连接,然后再在此连接上发送数据。

但是代理端此时认为该连接上将不会再有数据传输,将会等待http客户端关闭连接。

当下次客户端在该连接上发送新的请求时,新请求会被http的代理服务器挂起,因为他认为该连接上已经不会再有数据传输。

这种错误会使服务器和客户端一直挂起,直到设置的连接超时。

所以从技术上来说应该忽略所有来自http1.0设备的首部中的Connection字段。

说完了http1.0 keep-alive的哑代理问题,接下来将说明http1.1的持久连接。

首先http1.1的持久连接 persistent connection是keep-alive连接的目的相同,工作的机制更优。

http1.1的持久连接默认是开启的

http1.0 的哑代理问题的更多相关文章

  1. WebSocket原理及与http1.0/1.1 long poll和 ajax轮询的区别【转自知乎】

    一.WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的ke ...

  2. http1.0 和 http1.1 区别

    http1.0 和 http1.1 主要区别 1.背景   KeepAlive是就是通常所称的长连接.KeepAlive带来的好处是可以减少tcp连接的开销,这对于短response body的请求效 ...

  3. 计算机网络【9】—— HTTP1.0和HTTP1.1的区别及常见状态码

    一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持 ...

  4. HTTP1.1与HTTP1.0

    本文转载自: http://www.cnblogs.com/shijingxiang/articles/4434643.html 1.可扩展性 a.在消息中增添版本号,用于兼容判断,版本号只能判断逐段 ...

  5. HTTP1.0,1.1,2.0,HTTPS

    HTTP1.0/1.1/2.0/HTTPS HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接收HTML页 ...

  6. HTTP1.0与HTTP1.1的区别

    HTTP/1.1与HTTP/1.0的区别 下面主要从几个不同的方面介绍HTTP/1.0与HTTP/1.1之间的差别,当然,更多的内容是放在解释这种差异背后的机制上. 1 可扩展性 可扩展性的一个重要原 ...

  7. http1.1和http1.0区别

    http1.1和服务器建立连接可以获得多个资源 http1.0和服务器建立连接可以获取一个值

  8. HTTP详解(3)-http1.0 和http1.1 区别

    HTTP详解(3)-http1.0 和http1.1 区别 分类: 网络知识2013-03-17 16:51 1685人阅读 评论(0) 收藏 举报   目录(?)[+]   翻了下HTTP1.1的协 ...

  9. HTTP实现长连接(TTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持Connection: keep-alive)

    HTTP实现长连接 HTTP是无状态的 也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接.如果客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web ...

随机推荐

  1. 独家分析:安卓“Janus”漏洞的产生原理及利用过程

    近日,Google在12月发布的安卓系统安全公告中披露了一个名为"Janus"安卓漏洞(漏洞编号:CVE-2017-13156).该漏洞可以让攻击者绕过安卓系统的signature ...

  2. 手动安装lump

    教你编译PHP7 (nginx+mysql+php7)  PHP7正式版已经发布,性能是PHP5.6的两倍! 操作系统: CentOS Linux, 6.5 64位服务器: 阿里云空的操作系统,我们从 ...

  3. Centos-6.5 + python3 + mysql5.6 环境搭建

    注意:Centos6.5 是刚装好的系统 yum install lrzsz  (ftp上传和下载) yum install -y gcc     yum install -y gcc gcc-c++ ...

  4. jupyter的交互小工具-----ipyleaflet

    ipyleaflet(一个用于创建简单的交互式地图的平移和缩放的库,ipyleaflet支持诸如多边形,标记和更一般的任何地理编码地理数据结构的注释) from ipyleaflet import M ...

  5. memcached subList序列化问题

    某个业务场景需要将list超过10个元素时截取前10个然后再丢memcached缓存,因此写了这么一行代码 if(list.size()>10){ list=list.subList(0, 10 ...

  6. Ali RocketMQ与Kafka对照

    淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介.可全然水平扩容,为了进一步减少成本.我们觉得存储部分能够进一步优化,2011年初,Linkin开源了Kaf ...

  7. Activiti源代码分析

    ExecutionEntity内部含有parent,是一个运行树或运行路径.应该是一个流程实例的运行过程,一个实例相应一个ExecutionEntity,通过getActivity得到的是当前正在运行 ...

  8. Javascript 进阶 面向对象编程 继承的一个样例

    Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承.这篇使用一个样例来展示js怎样面向对象编程.以及怎样基于类实现继承. 1. ...

  9. 学习日记之工厂方法模式和Effective C++

    简单工厂模式VS工厂方法模式: 简单工厂模式:最大长处在于工厂类中必须包括必要的逻辑推断,依据client选择条件动态实例化相关类,对于client来说,去除了与详细产品的依赖. 工厂方法模式(Fac ...

  10. Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)

    上一段时间写过一篇文章<基于ViewPager实现微信页面切换效果> 里面实现了相似微信Tab的页面.可是这样的实现方法有个问题.就是以后全部的代码逻辑都必须在MainActivity中实 ...