美文网首页网络协议学习
十六.网络协议学习笔记 SPDY_QUIC_HTTP2_HTTP

十六.网络协议学习笔记 SPDY_QUIC_HTTP2_HTTP

作者: crazyfox | 来源:发表于2021-08-15 11:30 被阅读0次

    HTTP协议的不足(HTTP,HTTPS)

    同一时间,一个连接只能对应一个请求

    只允许客户端主动发起请求

    同一个会话多次请求中,头信息会重复传输

    SPDY

    SPDY基于TCP的应用层协议,强制要求使用SSL/TLS

    image.jpeg

    HTTP/2

    • 复用流:SPDY允许在一个连接上无限制并发流。因为请求在一个通道上,TCP效率更高:更少的网络连接,发出更少更密集的数据包。
    • 请求优先级:虽然无限的并发流解决了序列化的问题,但他们引入了另一个问题:如果带宽通道受限制, 客户端可能会因防止堵塞通道而阻止请求。为了克服这个问题,SPDY实行请求优先级:客户端从服务器端请求它希望的项目数量,并为每个请求分配一个优先级。这可以防止在网络通道被非关键资源堵塞时,高优先级的请求被挂起。
    • HTTP报头压缩:SPDY压缩请求和响应HTTP报头,从而减少传输的数据包数量和字节数。

    HTTP2特性-二进制格式

    • HTTP报头压缩:SPDY压缩请求和响应HTTP报头,从而减少传输的数据包数量和字节数。HTTP/2采用二进制格式传输数据,而非HTTP/1.1的文本格式
    • 二进制格式在协议的解析和优化扩展上带来更多的优势和可能
    • 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息

    所有通信都在一个TCP连接上完成,此连接可以承载任意数量的双向数据流

    • 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息消息:与逻辑HTTP请求或响应消息对应,由一系列帧组成
    • 帧:HTTP/2通信的最小单位,每个帧都包含帧头(会标识出当前帧所属的数据流)

    来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装

    HTTP2特性-多路复用

    • HTTP/2 标准允许每个数据流都有一个关联的权重和依赖关系
    • 可以向每个数据流分配一个介于1至256之间的整数
    • 每个数据流与其他数据流之间可以存在显式依赖关系
    • 客户端可以构建和传递“优先级树”,表明它倾向于如何接收响应
    • 服务器可以使用此信息通过控制CPU、内存和其他资源的分配设定数据流处理的优先级
    • 在资源数据可用之后,确保将高优先级响应以最优方式传输至客户端
    • image sprites 将多张小图合并为一张大图

    HTTP2特性-优先级

    • HTTP/2 标准允许每个数据流都有一个关联的权重和依赖关系

    • 可以向每个数据流分配一个介于1至256之间的整数

    • 每个数据流与其他数据流之间可以存在显式依赖关系

    • 客户端可以构建和传递“优先级树”,表明它倾向于如何接收响应

    • 服务器可以使用此信息通过控制CPU、内存和其他资源的分配设定数据流处理的优先级

    在资源数据可用之后,确保将高优先级响应以最优方式传输至客户端

    • 应尽可能先给父数据流分配资源
    • 同级数据流(共享相同父项)应按其权重比例分配资源

    HTTP2特性-头部压缩

    • HTTP/2使用HPACK压缩请求头和响应头
    • 可以极大减少头部开销,进而提高性能
    • 早期版本的HTTP/2和SPDY使用 zlib压缩
    • 可以将所传输头数据的大小减小85%~88%
    • 但在2012年夏天,被攻击导致会话劫持后被更安全的HPACK取代

    HTTP2特性-服务器推送

    • 服务器可以对一个客户端请求发送多个响应
    • 除了对最初请求的响应外,服务器还可以向客户端推送额外资源,而无需客户端额外明确地请求

    HTTP2问题-队头阻塞

    HTTP2问题-握手延迟

    HTTP3

    https://www.jianshu.com/p/dd9719c4c2c1

    image.jpeg

    相关文章

      网友评论

        本文标题:十六.网络协议学习笔记 SPDY_QUIC_HTTP2_HTTP

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