zoukankan      html  css  js  c++  java
  • HTTP/1 HTTP/2 HTTP/3 对比分析

    HTTP1.0

    特点:

    • 每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接
    • 不跟踪每个浏览器的历史请求

    缺点:

    • 连接无法复用-每次请求都需建立一个TCP连接,费时费力。
    • 队头阻塞(Head of Line Blocking)下一个请求必须再前一个请求响应到达后发送。如果某请求一直不到达,那么下一个请求就一直不发送。

    HTTP1.1

    特点:

    • 支持长连接(PersistentConnection)通过Keep-Alive保持HTTP连接不断开,避免重复建立TCP连接
    • 管道化(pipelining) 通过长连接实现在一个连接中传输多个文件
    • 加入缓存处理 【新字段 cache-control】
    • 支持断点续传
    • 增加了Host字段(允许一个服务器创建多个web站点)

    缺点:

    • 队头阻塞仍未解决(管道化,服务端仍需按顺序传输,如果前一个文件未收到,后面的文件无法传输)

    HTTP2

    核心:

    SPeeDY(二进制分帧层)

    通过在应用层和传输层间增加一个二进制分帧层,突破HTTP1.1的性能限制、改进传输性能

    特点:

    • 多路复用(实现正真的并行传输,在一个TCP上进行任意数量HTTP请求 基于【二进制分帧】的特性)
    • 头部压缩
    • 服务器推送

    缺点:

    • TCP的队头阻塞没有彻底解决
      • TCP的”超时重传“机制。当HTTP2出现丢包时,整个TPC都要等待重传,那会阻塞该TCP连接中的所有请求
    • TCP及TCP+TLS建立连接的延时
    • 多路复用容易超时
    • 多路复用导致服务器压力上升

    HTTP3

    核心:

    使用了基于UDP的QUIC协议,完美解决”队头阻塞“问题。

    特点:

    • 改进拥塞机制,可靠传输
    • 快速握手
    • 集成TLS1.3加密
    • 多路复用
    • 连接迁移
  • 相关阅读:
    [資料]VS2008技巧
    [資料]MarshalAs的用法
    MS SQL Server 2000安装不成功的原因
    Zend產品線
    [轉]Flex 开发必备10武器
    [轉]C#中的XML注释
    [轉]onpropertychange事件
    [轉]fckeditor添加自定义按钮
    [資源]Web設計資源以及线框工具
    [轉]JS中showModalDialog 详细使用
  • 原文地址:https://www.cnblogs.com/zjhblogs/p/14666796.html
Copyright © 2011-2022 走看看