FreeBuf|HTTP/3协议的安全优势与挑战( 四 )


HTTP/3使用UDP , 类似于HTTP/2使用TCP的方式 。 每个连接都有几个并行流 , 这些并行流用于通过单个连接同时传输数据 , 而不会影响其他流 。 因此 , 与TCP不同 , 为特定的单个流承载数据的丢失数据包只会影响该特定的流 。 然后 , 每个流帧都可以在到达时立即分配给该流 , 因此可以在不丢失任何流的情况下继续在应用程序中重新组合 。 QUIC的这种连接建立策略是通过加密和传输握手的组合来实现的 。
和HTTP/2的比较分析
QUIC旨在通过减轻HTTP/2的数据包丢失和延迟问题来提高性能 。 虽然HTTP/2对每个数据来源使用单个TCP连接 , 但这会导致行头阻塞问题 。 例如 , 一个请求的对象可能会停滞在另一个遭受丢失的对象之后 , 直到该对象恢复为止 。 QUIC通过将HTTP/2的流层向下推送到传输层来解决此问题 , 从而避免了应用程序层和传输层的问题 。 HTTP/3还支持多路复用 , 在与TLS直接集成的同时 , 提供独立于其他连接请求的请求 。 尽管HTTP/2和HTTP/3的工作方式相似 , 但以下是HTTP/2和HTTP/3的一些重要区别 。 区别HTTP/2HTTP/3传输TCP基于UDP的QUIC流层应用传输默认加密无有独立流无有报头压缩HPACKQPACK握手更快的0-RTTTCP+TLS的1-3RTT连接消除无有拥塞控制损失恢复由TCP执行由QUIC执行
从网络堆栈的角度来看 , HTTP/2广泛使用了符合HTTP标准的TLS1.2+ , 底层的TCP充当了传输协议 。 但是 , 在HTTP/3中 , 默认情况下 , 除了QUIC以外 , 还使用TLS1.3 , 而UDP是传输协议 。 下图说明了QUIC在网络协议堆栈中的位置 。 相比之下 , 以前的版本使用TLS1.2 , 并使用TCP的拥塞控制丢失恢复功能 , 而HTTP/2处理多流功能 。
FreeBuf|HTTP/3协议的安全优势与挑战
文章图片
图2:QUIC在网络协议堆栈中的位置
连接ID的优势
TCP连接即利用数据源和目标网络实体(主要是地址和端口)来标识特定连接 。 但是 , QUIC连接使用连接ID , 它是64位随机生成的客户端标识符 。 这项更改对于当前的Web技术非常有利 , 主要是因为要求它们支持用户的移动性 。 如果用户从Wi-Fi网络移动到蜂窝网络 , 则HTTP/2TCP协议将需要基于当前地址建立新的连接 。 但是 , 由于HTTP/3QUIC协议使用随机连接ID , 因此当从蜂窝网络转移到Wi-Fi连接时 , HTTP/3上的客户端更改IP地址将继续使用现有的连接ID而不会中断 。
从协议的角度来看 , 连接ID提供了其他好处 。 服务器和用户代理可以使用连接ID识别原始连接和重传连接 , 并避免TCP中普遍存在的重传歧义问题 。
结论
QUIC已获得多数浏览器的支持 。 YouTube和Facebook等重要网站已启用该功能 , 可以更快地加载页面 。 在撰写本文时 , 目前只有4%的顶级网站支持QUIC 。 微软已经宣布 , 他们将在内核中交付带有通用QUIC库MsQuic的Windows , 以支持各种收件箱功能 。
QUIC和HTTP/3旨在满足当今互联网网络性能、可靠性和安全性的目标 。 强制性支持TLS1.3的安全性得到了显着改善 , 从而解决了HTTP/2和早期版本的HTTP的弱点 。 在HTTP/3传输过程中使用端到端加密有助于抵御攻击者和数据聚合者的一些隐私问题 。 尽管存在一些弱点 , 但从性能和安全性角度来看 , HTTP/3仍将继续发展 , 不管怎么说都是对HTTP/2的重大改进 。


推荐阅读