zoukankan      html  css  js  c++  java
  • http1.0 的哑代理问题

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

    原以为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的持久连接默认是开启的

  • 相关阅读:
    Android Studio更新升级方法
    手把手教你用android studio创建第一个安卓程序加载html5页面(二)
    手把手教你用android studio创建第一个安卓程序加载html5页面(一)
    spoon kettle连接数据库失败解决方法
    AE多用户同时编辑同一个版本数据的解决方法
    ARCGIS知乎上的好文章
    mac系统访问windows共享文件夹
    奶爸程序员的“育儿”心得
    tomcat取带有中文的参数乱码的解决办法
    java问题排查可能用到的一些命令
  • 原文地址:https://www.cnblogs.com/earendil/p/7443511.html
Copyright © 2011-2022 走看看