44 lines
2.8 KiB
Markdown
44 lines
2.8 KiB
Markdown
- [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的端口号`。
|
||
|
||
|