#quic #web-transport #http-3

webtransport-quinn

Quinn 的 WebTransport 库

20 个版本 (8 个重大更改)

0.9.1 2024年4月26日
0.9.0 2024年3月31日
0.8.0 2024年3月22日
0.7.0 2023年12月21日
0.4.2 2023年7月21日

#2157 in 网络编程

Download history 198/week @ 2024-04-26 52/week @ 2024-05-03 93/week @ 2024-05-10 64/week @ 2024-05-17 4/week @ 2024-05-24 69/week @ 2024-05-31 51/week @ 2024-06-07 55/week @ 2024-06-14 72/week @ 2024-06-21 31/week @ 2024-06-28 42/week @ 2024-07-05 6/week @ 2024-07-12 81/week @ 2024-07-26 7/week @ 2024-08-02 11/week @ 2024-08-09

每月99 次下载

MIT 许可证

115KB
2.5K SLoC

webtransport-quinn

已重命名为 web-transport-quinn. 是的,我添加了一个连字符。


lib.rs:

WebTransport 是一种在 QUIC 上进行客户端-服务器通信的协议。它作为 HTTP 和 WebSocket 的替代方案,在浏览器中可用。

WebTransport 建立在 HTTP/3 之上,而 HTTP/3 又建立在 QUIC 之上。这个库隐藏了这些细节,并尝试仅公开 QUIC API,尽可能地将工作委托给底层实现。有关更多信息,请参阅Quinn 文档

QUIC 提供了两个主要 API

QUIC 流是有序、可靠、流量控制的,可选的双向流。两个端点都可以创建和关闭流(包括错误代码),没有额外开销。您可以将它们视为 TCP 连接,但它们共享单个 QUIC 连接。

数据报

QUIC 数据报是无序、不可靠且不受流量控制的。两个端点都可以发送小于 MTU 大小(至少 1.2kb)的数据报,它们可能会乱序到达或根本不到达。它们基本上是 UDP 数据包,但它们是加密的,并且受拥塞控制。

限制

WebTransport 可以与 HTTP/3 和多个 WebTransport 会话一起池化。这个 crate 避免了这种复杂性,仅执行最小操作以支持单个拥有整个 QUIC 连接的 WebTransport 会话。如果您想在同一主机/端口上支持 HTTP/3,应使用另一个 crate(例如 h3-webtransport)。如果您想在同一 QUIC 连接上支持多个 WebTransport 会话,请只需拨一个新的 QUIC 连接即可。

依赖项

~6–19MB
~220K SLoC