zoukankan      html  css  js  c++  java
  • HTTP(一) 连接管理

    ・HTTP是如何使用TCP连接的

      HTTP传送一条报文时,以流的形式将报文数据内容通过一条打开的TCP连接按序传输。

      TCP收到数据流之后,由TCP/IP软件将数据流砍成被称作段的小数据块,并将段封装在IP

      分组中,通过因特网进行传输。

      TCP是通过端口号来保持连接的正确运行。

    ・TCP连接性能

      TCP慢启动:连接会随着时间的推移提高传输的速度。

      TIME_WAIT累计与端口耗尽:

      当某个端点关闭TCP连接时,会在内存中维护一个小的控制块,用来记录最近所关闭连接的IP地址和端口号。

      一般为2分钟(最大分段生存期),2MSL。防止在两分钟内创建、关闭并重新创建两个具有相同IP地址和端口号的连接。(防止破坏TCP数据)

    提高HTTP的连接性能:

      ・并行连接

        通过多条TCP连接发起并发的HTTP请求。

        并行连接总数限制通常为4个

      

      ・持久连接

        重用TCP连接,以消除连接及关闭时延。

        在事物处理结束之后仍然保持打开状态。

        可以避开缓慢的连接建立阶段,并避免了慢启动的拥塞适应阶段。

       

        HTTP/1.0 keep-alive:默认关闭,注意哑代理;

        HTTP/1.1 proxy-connection: 默认开启,不会产生哑代理;

        限制和规则:

        客户端不想在连接上发送其他请求时,应在最后一条请求中发送Connection: close首部;

        一个用户客户端对任何服务器或代理最多只能维护两条持久连接,防止服务器过载;

       

      ・管道化连接

        通过共享的TCP连接发起并发的HTTP请求。

        HTTP1.1 允许在持久连接上可选使用请求管道。在响应到达之前,将多条请求放入队列。

       

        限制:

        如果HTTP客户端无法确认连接时持久的,就不应该使用管道;

        必须按照与请求相同的顺序回送HTTP响应;

        HTTP客户端必须做好连接在任意时刻关闭的准备,并重发未完成的管道化请求;

        HTTP客户端不应该使用管道化方式发送会产生副作用的请求(如POST);

      ・复用的连接

        交替传送请求和响应报文

    连接管理:

       幂等:如果一个事物,不管执行一次还是多次,得到的结果都相同;

       GET、HEAD、PUT、DELETE、TRACE、OPTIONS都有幂等性;

      

       关闭连接:

       TCP连接时双向的,每一端都有一个输入和输出队列;

    完全关闭和半关闭:

       套接字调用close()会将TCP输入输出信道都关闭,为完全关闭;

       套接字调用shutdown()单独关闭输入或输出信道,为半关闭。

      

  • 相关阅读:
    zookeeper使用场景
    zookeeper安装配置
    hadoop 远程调试
    deep learning笔记
    Sentiment Analysis(1)-Dependency Tree-based Sentiment Classification using CRFs with Hidden Variables
    PRML阅读笔记 introduction
    Python 学习笔记(2)
    python nltk 学习笔记(5) Learning to Classify Text
    python nltk 学习笔记(4) Writing Structured Programs
    python nltk 学习笔记(3) processing raw text
  • 原文地址:https://www.cnblogs.com/dreamerjdw/p/6208648.html
Copyright © 2011-2022 走看看