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()单独关闭输入或输出信道,为半关闭。

      

  • 相关阅读:
    使用spring AOP获得session的思路
    Oracle相关操作示例(导出导入dmp需要采用)
    sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
    Java之旅hibernate(8)——基本关系映射
    进一步优化SPA的首屏打开速度(模块化与懒载入) by 嗡
    Codeforces461A Appleman and Toastman 贪心
    程序猿,一个吃青春饭的行业
    The 14th UESTC Programming Contest Final B
    我开发的“小灵”,自觉得比微软“小冰”好多了
    windows下安装配置apacheserver
  • 原文地址:https://www.cnblogs.com/dreamerjdw/p/6208648.html
Copyright © 2011-2022 走看看