美文网首页
HTTP版本升级之路学习笔记0

HTTP版本升级之路学习笔记0

作者: sydneywhatever | 来源:发表于2019-10-21 22:07 被阅读0次

    本文主旨:历数HTTP不同版本的升级之路。升级的目的:完善功能、加速访问、增加安全。

    HTTP协议:HyperText Transfer Protocol,超文本传输协议

    一、HTTP版本升级——功能篇

    1、HTTP/0.9

    仅一个GET命令,只能访问HTML格式网页。

    2、HTTP/1.0

    升级亮点:除了GET命令,引入了POST和HEAD命令,增加了多种格式。

    缺点:无状态,短连接。

    每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。

    临时解决办法:客户端使用非标准的Connection字段,要求服务器不要关闭TCP连接,以便其他请求复用。

    3、HTTP/1.1

    升级亮点:

    支持长连接,对于同一个域名,大多数浏览器允许同时建立6个持久连接。

    同一个TCP连接里面,客户端可以同时发送多个请求,能够加快访问速度(详见下文二)。

    缺点:

    队头堵塞:同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个回应,才会进行下一个回应。要是前面的回应特别慢,后面就会有许多请求排队等着。

    只能通过关闭TCP连接来取消数据流。

    临时解决办法:减少请求数,同时多开持久连接。

    4、HTTP/2

    升级亮点:

    复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了"队头堵塞"。

    可以取消某一次请求,同时保证TCP连接还打开着,可以被其他请求使用。

    允许服务器未经请求,主动向客户端发送资源。

    二、HTTP版本升级——性能篇

    HTTP基于TCP,在TCP建立连接后,客户端发送HTTP Request,服务器回复HTTP Responses,完成一次会话。

    HTTP通信时间 = TCP连接时间 + HTTP交易时间 = 1.5 RTT + 1 RTT = 2.5RTT

    1RTT=一个数据来回时间

    HTTPS增加了TLS建立连接时间,IP / TCP / TLS / [HTTP]

    HTTPS通信时间 = TCP连接时间 + TLS 连接时间 + HTTP交易时间 = 1.5 RTT+ 1.5 RTT + 1 RTT = 4 RTT

    1、HTTP/1.1

    访问页面通常嵌入其它动态或链接资源,对于这些资源通常需要重新建立一个TCP连接、TLS连接、HTTP交易。所以完整页面加载时间 = 4RTT *2 = 8RTT。

    第二次连接还是相同的服务器,TCP和TLS可复用,节约5RTT的时间。

    2、HTTP/2

    1)使用无连接的UDP;

    2)使用QUIC(Quick UDP Internet Connection)协议,集成了TCP可靠传输机制、TLS安全加密、HTTP /2 流量复用技术。

    IP / UDP / QUIC

    HTTPS通信时间 = UDP连接时间 + QUIC交易时间(TLS 连接时间 + HTTP交易时间)  = 0RTT+ 2.5 RTT = 2.5 RTT

    完成QUIC交易的连接的Session ID会缓存在浏览器内存里,如果用户再次打开该页

    面,无需建立TLS连接。

    所以,第二次通信时间 = HTTP交易时间 = 1 RTT。

    3、HTTP/3

    QUIC不仅可以运输HTTP,还可以运输其它协议,把QUIC与HTTP分离:IP / UDP / QUIC / HTTP。

    新的QUIC集成了TLS 1.3版本,建立TLS连接不再需要1.5 RTT,而只需要1 RTT。

    HTTPS通信时间 = UDP连接时间 + QUIC交易时间  = 0RTT+ 2 RTT = 2 RTT

    三、HTTP版本升级——安全篇

    主要针对HTTP/2以上,QUIC的升级。

    TCP 协议头部没有经过任何加密和认证,所以在传输过程中很容易被中间网络设备篡改,注入和窃听。比如修改序列号、滑动窗口。这些行为有可能是出于性能优化,也有可能是主动攻击。

    QUIC 除了个别报文比如 PUBLIC_RESET 和 CHLO,所有报文头部都是经过认证的,报文 Body 都是经过加密的。这样只要对 QUIC 报文任何修改,接收端都能够及时发现,有效地降低了安全风险。

    四、问题

    1,抛弃了TCP,QUIC如何保障传输可靠性?怎么集成的TCP可靠传输机制?

    QUIC基于UDP的传输层协议,集成了TCP可靠传输机制、TLS安全加密、

    HTTP /2 流量复用技术。

    2,TCP头部为什么不加密?

    3、QUIC为什么个别报文不加密?


    学习资料来源:

    1、公众号车小胖谈网络

    2、阮一峰的博客

    3、罗成关于QUIC的解读

    相关文章

      网友评论

          本文标题:HTTP版本升级之路学习笔记0

          本文链接:https://www.haomeiwen.com/subject/jcgxvctx.html