首页 > Web开发 > 详细

HTTP/1.x的连接管理

时间:2021-07-05 23:24:56      阅读:45      评论:0      收藏:0      [点我收藏+]
技术分享图片
?
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. 可以快速响应网站的应答,使客户端建立多个连接。
?
技术分享图片
参考:

HTTP/1.x的连接管理

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!