阅读 80

HTTP/1.x的连接管理

?
HTTP/1.x有三种连接管理方式:
  1. 长连接(Persistent connect)
    1. 节省了TCP连接握手的时间
    1. 在空闲状态,也是会消耗服务器资源
    2. 如果在负载较高时会有大量的连接建立,可能遭受Ddos,这种情况下使用短连接,快速关闭空闲的连接,对性能提升有好处。
    1. 可以重复发送一系列的请求,通过Connection头部设置为Keep-Alive来实现长连接,连接关闭时将其设置为Close。
    2. 这个连接不会一直保留着,在空闲一段时间后会被关闭(服务器可以使用Keep-Alive头设置最小保持连接时间)
    3. HTTP/1.1默认就是长连接。
    4. 好处:
    5. 不足:
  2. 短连接(Short-lived connections)
    1. HTTP/1.0默认是短连接
    2. 每个HTTP请求都由自己的独立连接完成,每个HTTP请求之前都会建立TCP连接
    3. TCP握手是耗时的操作,短连接破坏了TCP具备的能力
  3. HTTP Pipeline
    1. 节省了HTTP请求间的等待时间(连接延迟)
    2. 多个HTTP请求可能被打包到同一个TCP消息包中,可以提升性能
      1. MSS最大段大小
        1. TCP协议允许的从对方收到数据的最大报文段,是通信双方能使用的最大报文段。
        2. 默认值是536,正好可以构成一个576字节的IPV4数据报。IPV4的最小是576个字节,20 + 20 + 536 = 576
      1. 如果HTTP请求在一个TCP消息包放不下,可以设置TCP的MSS(Maximum Segment Size)选项
    1. HEAD
    2. GET
    3. PUT
    4. DELETE
    1. 默认情况下,HTTP是按顺序发出的。下一个请求要等待当前请求收到应答后才会被发出。
    2. 一次按顺序发送多个连续的请求到服务器,不用等待前一个请求应答返回,可以避免连接延迟。
    3. 好处:
    4. 只有幂等(idempotent)的方式能被安全的重试,当有故障发生时,pipeline的内容要能被轻易的重试。
  4. 域名分片(doman sharding)
    1. 如,www.example.com这个域名可以被拆分为3个域名,这些域名都指向同一台服务器:
      1. www1.example.com
      2. www2.example.com
      3. www3.example.com
    2. 浏览器会同时为每个域名建立6条连接
    1. 分配多个域名到网站,浏览器为每个域名建立多个连接,来实现并发请求。默认情况下一个域名的连接数为6。
    2. 可以快速响应网站的应答,使客户端建立多个连接。
?
参考:

原文:https://blog.51cto.com/jlnetc/2984737

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐