Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

http3 有哪些核心的新特性【热度: 313】 #995

Open
yanlele opened this issue Oct 13, 2024 · 0 comments
Open

http3 有哪些核心的新特性【热度: 313】 #995

yanlele opened this issue Oct 13, 2024 · 0 comments
Labels
网络 web 网络相关
Milestone

Comments

@yanlele
Copy link
Member

yanlele commented Oct 13, 2024

关键词:http3 新特性

HTTP/3 带来了以下一些核心新特性:

一、基于 QUIC 协议

  1. 多路复用无队头阻塞

    • HTTP/3 基于 QUIC(Quick UDP Internet Connections)协议,它继承了 QUIC 的多路复用特性。在 HTTP/2 中,虽然也有多路复用,但由于底层使用 TCP 协议,可能会出现队头阻塞问题。而 QUIC 的多路复用在一个连接上可以同时处理多个独立的流,并且各个流之间不会相互影响,即使某个流出现丢包,也不会阻塞其他流的传输。
    • 例如,当同时加载一个网页的多个资源时,如果其中一个资源的数据包丢失,在 HTTP/2 中可能会导致整个连接的传输受阻,直到丢失的数据包被重传成功。而在 HTTP/3 中,其他资源的传输不受影响,大大提高了传输效率。
  2. 快速连接建立

    • QUIC 协议在连接建立方面比传统的 TCP 和 TLS 握手更快。它将 TLS 加密层整合到 QUIC 协议内部,减少了连接建立的往返次数。在首次连接时,虽然也需要一些时间进行密钥交换等操作,但后续连接可以利用之前的连接状态进行快速恢复,实现 0-RTT(Round-Trip Time)或 1-RTT 的连接建立时间。
    • 例如,在移动网络环境下,用户频繁切换网络或重新打开应用时,HTTP/3 可以更快地建立连接,减少用户等待时间,提供更流畅的体验。

二、改进的拥塞控制

  1. 可插拔的拥塞控制算法

    • HTTP/3 允许使用不同的拥塞控制算法,并且可以根据网络环境动态切换。这使得它能够更好地适应各种网络条件,如高延迟、高丢包率的网络环境。
    • 例如,在无线网络环境下,可以选择更适合这种环境的拥塞控制算法,提高数据传输的效率和稳定性。
  2. 更精准的拥塞控制

    • QUIC 协议的拥塞控制机制比 TCP 更加精细。它可以更好地感知网络的拥塞状态,及时调整发送速率,避免网络拥塞的发生。同时,它还可以对不同的流进行独立的拥塞控制,提高整体的网络利用率。
    • 例如,当网络出现拥塞时,HTTP/3 可以更快地降低发送速率,避免拥塞进一步恶化。而在网络状况好转时,又能迅速提高发送速率,充分利用网络带宽。

三、增强的安全性

  1. 内置加密

    • QUIC 协议在设计上就内置了加密功能,从一开始就对数据进行加密传输,提供了更好的安全性。这避免了像 TCP 那样在连接建立后再进行加密协商的过程,减少了安全风险。
    • 例如,在网络中传输的数据更难被窃听或篡改,保护用户的隐私和数据安全。
  2. 前向安全

    • HTTP/3 继承了 QUIC 的前向安全特性。即使一个密钥被泄露,也不会影响之前的通信安全。这意味着攻击者无法通过破解当前的密钥来获取之前的通信内容。
    • 例如,如果一个服务器的密钥在某个时间点被泄露,之前通过 HTTP/3 传输的通信内容仍然是安全的,不会被攻击者窃取。
@yanlele yanlele added the 网络 web 网络相关 label Oct 13, 2024
@yanlele yanlele added this to the milestone Oct 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
网络 web 网络相关
Projects
None yet
Development

No branches or pull requests

1 participant