标签: quic

QUIC 多路复用与 HTTP/2 有何不同

QUIC 和 HTTP/3 多路复用(通过 UDP)与 HTTP/2(通过 TCP)带来的有何不同?

http spdy quic http3

6
推荐指数
1
解决办法
694
查看次数

发送 UDP 数据包时忽略 Linux 上的路径 MTU

我正在实现DPLPMTUDerrno = EMSGSIZE ,当我发送的 UDP 数据包长于本地接口的 MTU 时,我想阻止 Linux 内核返回 -1 。我想避免在发送多个数据报时(特别是使用sendmmsg(2))时处理错误处理的痛苦,每个数据报可能属于不同的连接。我宁愿让内核丢弃数据包并让应用程序 DPLPMTUD 逻辑计算出 MTU。

\n

ip(7)有这样说:

\n
              It is possible to implement RFC 4821 MTU probing with SOCK_DGRAM\n              or SOCK_RAW sockets by  setting  a  value  of  IP_PMTUDISC_PROBE\n              (available  since Linux 2.6.22).  This is also particularly use\xe2\x80\x90\n              ful for diagnostic tools such as tracepath(8) that wish  to  de\xe2\x80\x90\n              liberately send probe packets larger than the observed Path MTU.\n
Run Code Online (Sandbox Code Playgroud)\n

然而设置此选项并不会产生预期的效果。下面是说明问题的代码:

\n
              It is possible to …
Run Code Online (Sandbox Code Playgroud)

c linux mtu probe quic

6
推荐指数
0
解决办法
1103
查看次数

如何从服务器端判断客户端是否支持 http/2

我正在编写一个将由网络用户使用的分析服务器。我要测试的参数之一是它们的浏览器支持。请告诉我是否可以获得休耕信息以及如何:

  • 测试客户端(用户浏览器)是否支持http/2
  • 测试客户端(用户浏览器)是否支持http/2 推送,一些如何检测服务器何时发送推送,客户端是否能够使用它,这个可能是一些 js 测试,或者你不告诉我。
  • 测试客户端(用户浏览器)是否支持QUIC,即 http/2 的 UDP 版本

javascript http2 quic

5
推荐指数
1
解决办法
967
查看次数

Chrome 开发工具显示 h2 而不是 quic/h3(即使页面使用 HTTP/3.0)

作为一名开发人员,我对 HTTP/3.0 的下一个版本感到非常兴奋。前段时间我注意到,当我打开 Google.com 时,我可以在 Devtools > Network 中看到该协议显示为 Quic。但现在当我打开它时,我只看到 h2 。这是为什么?

我还注意到 alt-svc 标头表明该资源也可以快速使用。但它仍然在 h2 上加载。

alt-svc: quic=":443";
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我在使用curl时注意到同样的事情,使用的协议是h2而不是h3。但谷歌多年来一直在使用 Quic。为什么会有这样的改变?

curl -v https://www.google.com/

* ALPN, offering h2
* ALPN, offering http/1.1
* ALPN, server accepted to use h2
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)

> GET / HTTP/2
> Host: www.google.com
> User-Agent: curl/7.61.1
> Accept: */*
Run Code Online (Sandbox Code Playgroud)

tcp google-chrome http google-chrome-devtools quic

5
推荐指数
0
解决办法
5254
查看次数

Python中的QUIC流量生成,低吞吐量

我正在编写一个简单的速度测试程序,该程序应该测量两个设备之间的快速吞吐量。有一个 python 脚本可以启动客户端或服务器端。客户端产生流量,服务器测量它接收到的流量。就如此容易。但不知何故,即使我在同一台机器上运行服务器和客户端,它的上限也为 ca。115 MB/秒。在同一台机器上,当我生成 TCP 或 UDP 流量时,其流量约为 30 Gb/s,因此带宽不是问题。我使用的库是 aioquic,不幸的是它几乎没有文档记录。问题是如何提高吞吐量?我主要担心 #HERE 注释周围的一些代码。看起来 Transmission() 是一个阻塞函数,但是当我没有暂停/继续机制或某种粗略的 sleep() 时,程序就会挂起,甚至产生低流量。

from connector import * #my base class
import asyncio as asc
import aioquic.asyncio
from aioquic.quic.configuration import QuicConfiguration
import ssl

class QUIC_client(client):
    def __init__(self, host, port, use_json):
        super().__init__(host, port, use_json)
        self.traffic_type = 'quic'
        self.payload = b'p'*(self.quic_payload_size-1)+b'\n'

        self.config = QuicConfiguration(
            is_client = True,
            verify_mode = ssl.CERT_NONE
            )

    async def _maintask(self, time):
        self._infomessage(f'connecting to server {self.host}:{self.port}')
        async with aioquic.asyncio.connect(host=self.host, port=self.port, configuration=self.config) as client:
            await client.wait_connected() …
Run Code Online (Sandbox Code Playgroud)

python asynchronous quic

5
推荐指数
0
解决办法
2596
查看次数

如何查看 Web 请求/响应是否使用 QUIC 和/或 HTTP/2?

我正在尝试使用 HTTP/2、HTTP1.1、QUIC 和 TCP 在 Chromium 中进行一些测试。我想尝试协议的不同组合。不过,我在浏览器中遇到了一些非常奇怪的行为。当我想尝试 HTTP1.1+QUIC 时,我使用以下命令启动浏览器:

chromium-browser --disable-http2 --enable-quic
Run Code Online (Sandbox Code Playgroud)

我可以在 chrome://net-internals/ 上看到 HTTP2 已禁用,而 QUIC 已启用。但是,当我向支持 HTTP2 和 QUIC 的服务器发出 Web 请求时,我得到以下信息: 在此输入图像描述

http2 enabled: false当它在 chrome://net-internals/如此明确地说明时,为什么会说使用了 HTTP/2 ?

我之前已经成功使用 QUIC 运行 HTTP1.1。QUIC 是否已更新为仅适用于 HTTP/2?或者“协议”字段是否显示错误的协议?

我很想知道是否有人成功地将 QUIC 与 HTTP1.1 结合使用

非常感谢!

chromium http2 quic

3
推荐指数
1
解决办法
2372
查看次数

HTTP/3 及其影响

最近 Chrome、Firefox、cURL 等宣布支持 HTTP/3(之前称为 HTTP-over-QUIC)。

您如何从以下变化的角度看待其适应影响:

  1. 应用程序(基于网络的、移动的、基于纯套接字的等)

  2. 托管基础设施(网络/应用服务器、防火墙、负载均衡器、CDN、路由器、交换机等)和 ISP 等。

  3. 安全性(新威胁、漏洞、VAPT 工具的前景等)

  4. 拥塞控制

quic http3

3
推荐指数
1
解决办法
230
查看次数

QUIC 连接迁移实际上是如何工作的?

据我了解,QUIC 为每个连接都有一个唯一的 ID,允许参与者更改其 IP 地址(例如,从 WIFI 移动到移动网络时),但仍然相互发送数据包,这些数据包仍然可以分配给正确的连接。

但接收方如何知道对方要发送数据包的新 IP 地址呢?

我已经阅读了规范但我不太明白它是如何工作的

http quic http3

3
推荐指数
1
解决办法
1641
查看次数

7.4.2 版本中的 PHP cURL 扩展是否支持带有 HTTP/3 的 cURL

我可以使用 curl 使用 HTTP/3 而不是 HTTP/2、HTTP/1.1 或 HTTP/1.0.curl 来卷曲支持 HTTP/3 的网站吗?这可能吗?如果是这样,如何做到这一点?

php curl php-curl quic http3

3
推荐指数
1
解决办法
1227
查看次数

Wireshark 不显示 QUIC 协议

使用Wireshark 3.2.5版本时,无法捕获QUIC下的数据包,仅显示为UDP。但是Wireshark文档显示支持QUIC?

wireshark quic

3
推荐指数
1
解决办法
3316
查看次数

为什么 QUIC 协议使用在 TCP 上运行的 TLS 数据包时却被说是基于 UDP 构建的?

我正在研究 QUIC 协议,我的教授问了我这个问题。据说 QUIC 是建立在 UDP 之上并使用 TLS 数据包的。TLS本身需要可靠的连接,即TCP。那么,为什么 QUIC 不说是建立在 TCP 之上的呢?PS:如果我的概念错误,请纠正我,如果可能,请深入解释 QUIC 数据包的工作原理。

ssl udp tcp quic

2
推荐指数
1
解决办法
2042
查看次数