- [HTTP3 \& QUIC Protocols](#http3--quic-protocols) - [What is HTTP3](#what-is-http3) - [TCP/IP模型中HTTP3 vs QUIC](#tcpip模型中http3-vs-quic) - [QUIC Protocol](#quic-protocol) - [What is QUIC Used For](#what-is-quic-used-for) # HTTP3 & QUIC Protocols http3旨在通过QUIC(下一代传输层协议)来令网站更快、更安全。 在协议高层,http3提供了和http2相同的功能,例如header compression和stream优先级控制。然而,在协议底层,QUIC传输层协议彻底修改了web传输数据的方式。 ## What is HTTP3 HTTP是一个应用层的网络传输协议,定义了client和server之间的request-reponse机制,允许client/server发送和接收HTML文档和其他文本、meidia files。 http3最初被称为`HTTP-over-QUIC`,其主要目标是令http语法及现存的http/2功能能够和QUIC传输协议兼容。 故而,`HTTP/3`的所有新特性都来源于QUIC层,包括内置加密、新型加密握手、对先前的连接进行zero round-trip恢复,消除头部阻塞问题以及原生多路复用。 ## TCP/IP模型中HTTP3 vs QUIC 通过internet传输信息是复杂的操作,涉及到软件和硬件层面。由于不同的设备、工具、软件都拥有不同的特性,故而单一协议无法描述完整的通信流程。 故而,网络通信是已于通信的协议栈实现的,协议栈中每一层职责都不同。为了使用网络系统来通信,host必须实现构成互联网协议套件的一系列分层协议集。通常,主机至少为每层实现一个协议。 而HTTP则是应用层协议,令web server和web browser之间可以相互通信。http消息(request/reponse)在互联网中则是通过传输层协议来进行传递: - 在http/2和http/1.1中,通过TCP协议来进行传递 - 在`http/3`中,则是通过QUIC协议来进行传递 > `QUIC`为http/3新基于的传输层协议,之前http都基于tcp协议进行传输 ## QUIC Protocol `QUIC`协议是一个通用的传输层协议,其可以和任意兼容的应用层协议来一起使用,HTTP/3是QUIC的最新用例。 `QUIC`协议基于`UDP`协议构建,其负责server和client之间应用数据的物理传输。UDP协议是一个简单、轻量的协议,其传输速度高但是缺失可靠性、安全性等特性。QUIC实现了这些高层的传输特性,故而可以用于优化http数据通过网络的传输。 在HTTP/3中,HTTP的连接从`TCP-based`迁移到了`UDP-based`,底层的网络通信结构都发生了变化。 ### What is QUIC Used For QUIC其创建是同于代替`TCP`协议的,QUIC作为传输层协议,相比于TCP更加灵活,性能问题更少。QUIC协议继承了安全传输的特性,并且拥有更快的adoption rate。 QUIC协议底层基于UDP协议的原因是`大多数设备只支持TCP和UDP的端口号`。