问题标签 [http3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
190 浏览

c - 在 G-WAN 上安装 HTTP/3

根据您的说法,是否可以在GWAN等 Web 服务器上正确安装 HTTP/3 的使用?如果是,您是否有一个理想的方式来进行?我正在考虑在 init.c 文件中使用 quic lib(其中一个?quiche),但我无法弄清楚其余的......

提前致谢。

0 投票
1 回答
934 浏览

google-chrome - Chrome 忽略 alt-svc 标头并且不发送 HTTP/3 请求

我一直在尝试在 localhost 上设置一个支持 HTTP/3 的网络服务器。我已经成功运行了一个在docker中运行的 caddy 服务器,它使用这个标头回答 GET 请求:

即使收到了 alt-scv 标头,我也无法在开发工具的网络日志中检测到任何 h3-27 请求。

还创建了一个 CA,我将其添加到 chrome,并签署了 Chrome 接受的服务器证书。按照本文的建议,我使用标志--enable-quic --quic-version="h3-27"运行了 Chrome 。我已经在基于此图像的 nginx 服务器上进行了相同的尝试,但无法使其正常工作。

我错过了什么?

球童文件:

球童输出:

0 投票
1 回答
58 浏览

frame - HTTP/3:帧分析

我得到一个 HTTP/3 帧 0x 00 40 78 5f 82。

根据https://datatracker.ietf.org/doc/html/draft-ietf-quic-http-27#page-28

帧布局应为 32 位(类型)、32 位(长度字段)、32 位(有效负载)。

我不认为帧有 96 位。

我有什么误解?

我想找到有效载荷的帧类型、长度字段和长度。

我如何找到它?

0 投票
1 回答
656 浏览

flutter - 颤振的 HTTP3 客户端

飞镖有HTTP3 客户端吗?Java 中有Flupke ,python 中有Aioqic,但我没有找到适用于 dart 和 flutter 的

0 投票
1 回答
304 浏览

sctp - SCTP 真的能防止线头阻塞吗?

我已经了解 SCTP 大约十年了,虽然我还没有使用它,但我一直想使用它,因为它有一些有前途的(据称)功能:

  • 多宿主
  • 多路复用不带行头阻塞
  • 同一连接上的混合订单/无序交付(又名关联)
  • 没有TIME_WAIT
  • 没有 SYN 泛洪

然而,QUIC 和 SCTP 之间的比较声称

SCTP 旨在通过子流摆脱 HOL 阻塞,但其传输序列号 (TSN) 将所有数据块的传输耦合在一起。[...]因此,在 SCTP 中,如果一个数据包丢失,则在该丢失数据包之后的所有具有 TSN 的数据包都无法接收,直到重新传输。

那句话让我感到惊讶,因为:

  • 消除线头阻塞是 SCTP 的既定目标
  • SCTP 确实有一个每个流的序列号,请参见下面的 RFC 4960 引用,它应该允许每个流处理,而不管关联全局 TSN
  • SCTP 已经在电信领域使用了近 2 年,那么怎么会错过呢?

在内部,SCTP 为 SCTP 用户传递给它的每条消息分配一个流序列号。在接收端,SCTP 确保消息在给定流中按顺序传递给 SCTP 用户。然而,虽然一个流可能被阻止等待下一个按顺序的用户消息,但来自其他流的传递可能会继续。

此外,还有一篇论文Head-of-line Blocking in TCP and SCTP: Analysis and Measurements实际测量了多路复用回波服务面对丢包时的往返时间,并得出结论:

我们的结果表明 [..] 少量 SCTP 流或 SCTP 无序模式可以避免这种线头阻塞。在大多数情况下,多个 TCP 连接的替代解决方案性能更差。

0 投票
1 回答
111 浏览

quic - HTTP/3 QPACK 中重复编码器指令的目的是什么?

在 HTTP/3 QPACK 中有一条指令用于复制动态表中的现有条目;据说它用于避免添加对旧条目的引用,这可能会阻止插入新条目。

但是,我看不出这有什么帮助。

如果动态表没有足够的空间容纳新条目而不驱逐其他条目,并且将被驱逐的条目是不可驱逐的,则编码器不得将该条目插入到动态表中(包括现有条目的副本)。

为了确保不阻止编码器添加新条目,编码器可以避免引用接近驱逐的条目。编码器可以发出重复指令(第 4.3.4 节),而不是引用这样的条目,而是引用重复项。

(取自 IETF-QUIC-QPACK-DRAFT16)

这里的想法是,一旦一个字段通过了耗尽索引,我们想让它的存在优先级较低,所以我们会添加一个对它的引用,让任何新的请求都引用该引用,这样旧的字段就变得不被引用了它会被删除吗?在它被删除和添加新引用之间,那些中间请求可以填充到动态表中,否则会被阻塞?

谢谢你。

0 投票
1 回答
111 浏览

http - QUIC 如何确保数据完整性?

我读了一些关于 http2 与 http3 的内容,我学到的主要内容是 h3 将使用 QUIC,而 QUIC 又使用 UDP。据我所知,UDP 和 TCP 之间的主要区别在于 TCP 能够检查数据完整性并在数据损坏时要求客户端重新发送数据。由于这似乎是一个非常重要的方面,我想知道 h3 如何简单地切换到 UDP。那么如何保证数据的完整性呢?

0 投票
2 回答
806 浏览

python - 如何在 python 中通过 udp (DTLS) 套接字实现 http/3 协议?

我读到 http/3 使用 UDP 而不是 TCP 来发送请求,所以它更快,而且我真的需要 http/3 的速度,那么我该怎么办,在 python 中实现它呢?我根据对协议的理解编写了这段代码:

这是一个超文本协议,您使用UDP而不是TCP,将数据包中的http/1.1更改为http/3,然后发送。

而且我认为我错了。

这是我写的代码:

0 投票
0 回答
105 浏览

curl - 使用 Curl 和 http/3 上传文件失败:出现错误 55

我正在尝试使用 curl 和 http/3 上传文件,但我遇到了这个错误。我有:

  • 将 30071 个正文字节传递给乳蛋饼
  • 将 15556 个正文字节传递给乳蛋饼
  • 到主机 server.ftn.kg.ac.rs 的连接 #0 保持原样 curl: (55) 向对等方发送数据失败

我在服务器上使用 openlitespeed。

我使用的命令是:

有什么我可以尝试的吗,或者这一切都是因为 http3 的支持还没有那么完善?

更新:如果文件很小,上传就可以了 - 3.6 KB 就可以了

0 投票
0 回答
52 浏览

quic - 为什么 QUIC 没有标准的 API?

TCP 有一个称为“TCP 套接字”的标准 API,在我们的环境中,我们不需要担心哪个库实现了 TCP。

然而,HTTP/3 解释说 QUIC 没有标准的 API。因此,任何基于 QUIC 的程序都依赖于实现 QUIC 的库。将这些程序移植到其他环境也可能是一项艰巨的工作。

为什么QUIC工作组做出这个决定?