2021-03-16 15:57:15 +00:00
|
|
|
|
# QUIC
|
2021-03-15 15:59:11 +00:00
|
|
|
|
|
|
|
|
|
QUIC 全称 Quick UDP Internet Connection,是由 Google 提出的使用 UDP 进行多路并发传输的协议。其主要优势是:
|
|
|
|
|
|
|
|
|
|
1. 减少了握手的延迟(1-RTT 或 0-RTT)
|
|
|
|
|
2. 多路复用,并且没有 TCP 的阻塞问题
|
|
|
|
|
3. 连接迁移,(主要是在客户端)当由 Wifi 转移到 4G 时,连接不会被断开。
|
|
|
|
|
|
|
|
|
|
QUIC 目前处于实验期,使用了正在标准化过程中的 IETF 实现,不能保证与最终版本的兼容性。
|
|
|
|
|
|
|
|
|
|
- 默认设定:
|
|
|
|
|
- 12 字节的 Connection ID
|
|
|
|
|
- 30 秒没有数据通过时自动断开连接 (可能会影响一些长连接的使用)
|
|
|
|
|
|
|
|
|
|
## QuicObject
|
|
|
|
|
|
|
|
|
|
`QuicObject` 对应传输配置的 `quicSettings` 项。
|
|
|
|
|
|
|
|
|
|
::: danger
|
|
|
|
|
对接的两端的配置必须完全一致,否则连接失败。
|
|
|
|
|
QUIC 强制要求开启 TLS,在传输配置中没有开启 TLS 时,Xray 会自行签发一个证书进行 TLS 通讯。
|
2021-03-16 15:57:15 +00:00
|
|
|
|
:::
|
2021-03-15 15:59:11 +00:00
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"security": "none",
|
|
|
|
|
"key": "",
|
|
|
|
|
"header": {
|
|
|
|
|
"type": "none"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> `security`: "none" | "aes-128-gcm" | "chacha20-poly1305"
|
|
|
|
|
|
|
|
|
|
加密方式。
|
|
|
|
|
|
|
|
|
|
此加密是对 QUIC 数据包的加密,加密后数据包无法被探测。
|
|
|
|
|
|
|
|
|
|
默认值为不加密。
|
|
|
|
|
|
|
|
|
|
> `key`: string
|
|
|
|
|
|
|
|
|
|
加密时所用的密钥。
|
|
|
|
|
|
|
|
|
|
可以是任意字符串。当 `security` 不为 `"none"` 时有效。
|
|
|
|
|
|
|
|
|
|
> `header`: [HeaderObject](#headerobject)
|
|
|
|
|
|
|
|
|
|
数据包头部伪装设置
|
|
|
|
|
|
|
|
|
|
### HeaderObject
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"type": "none"
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> `type`: string
|
|
|
|
|
|
|
|
|
|
伪装类型,可选的值有:
|
|
|
|
|
|
|
|
|
|
- `"none"`:默认值,不进行伪装,发送的数据是没有特征的数据包。
|
|
|
|
|
- `"srtp"`:伪装成 SRTP 数据包,会被识别为视频通话数据(如 FaceTime)。
|
|
|
|
|
- `"utp"`:伪装成 uTP 数据包,会被识别为 BT 下载数据。
|
|
|
|
|
- `"wechat-video"`:伪装成微信视频通话的数据包。
|
|
|
|
|
- `"dtls"`:伪装成 DTLS 1.2 数据包。
|
|
|
|
|
- `"wireguard"`:伪装成 WireGuard 数据包。(并不是真正的 WireGuard 协议)
|
|
|
|
|
|
|
|
|
|
::: tip
|
|
|
|
|
当加密和伪装都不启用时,数据包即为原始的 QUIC 数据包,可以与其它的 QUIC 工具对接。
|
|
|
|
|
为了避免被探测,建议加密或伪装至少开启一项。
|
2021-03-16 15:57:15 +00:00
|
|
|
|
:::
|