From 66382b4845152c8ca3fe9673d60a7cae32e3fb49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E6=89=87=E6=BB=91=E7=BF=94=E7=BF=BC?= Date: Fri, 5 Jul 2024 04:36:23 +0800 Subject: [PATCH] Refine splithttp doc --- docs/config/transports/splithttp.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/config/transports/splithttp.md b/docs/config/transports/splithttp.md index 80f5b07..19f55f5 100644 --- a/docs/config/transports/splithttp.md +++ b/docs/config/transports/splithttp.md @@ -5,7 +5,7 @@ 可以通过不支持WebSocket的CDN上,但仍有一些要求: -- CDN必须支持HTTP分块传输,且支持流式传输不会缓冲响应,核心将会发送 `X-Accel-Buffering: no` 以告知CDN,但是需要CDN遵守此标头。如果连接被挂起,该传输很可能无法工作。 +- CDN必须支持HTTP分块传输,且支持流式响应不会缓冲,核心将会发送 `X-Accel-Buffering: no` 以及 `Content-Type: text/event-stream` 以告知CDN,但是需要CDN遵守此标头。如果中间盒不支持流式响应而导致连接被挂起,则该传输很可能无法工作。 目的与V2fly Meek相同,由于使用了分块下载,下行速率更为优秀,上行也经过优化但仍非常有限,也因此对 HTTP 中间盒要求更高(见上)。 @@ -65,7 +65,7 @@ SplitHTTP 的HTTP请求中所发送的host,默认值为空。若服务端值 1. 使用 `GET /` 开始下载。服务器立即回复 `200 OK` 和 `Transfer Encoding:chunked` , 并立即发送一个两字节的有效负载,以强制HTTP中间盒刷新标头。 -2. 使用 `POST //` 开始发送上行数据. `seq` 作用类似于 TCP 序列号,从0开始,数据包可以被同时发送,服务端必须按序列号将数据重组。序列号不应该重置。 +2. 使用 `POST //` 开始发送上行数据. `seq` 作用类似于 TCP 序列号,从0开始,数据包可以被同时发送,服务端必须按序列号将数据重组。序列号不应重置。 客户端可以以任意决定打开上行与下行请求的顺序,任何一种都可以启动会话,但是必须要在30秒内打开 `GET` 连接,否则会话将被终止。 @@ -73,8 +73,8 @@ SplitHTTP 的HTTP请求中所发送的host,默认值为空。若服务端值 建议: -* 不要假设CDN会正确传输所有标头,这个协议是为了穿透不支持WS的CDN设计的,这些CDN的架构通常不怎么友好。 +* 不要期望CDN会正确传输所有标头,这个协议的目的是为了穿透不支持WS的CDN,而这些CDN的行为通常不怎么友好。 -* 应该假设所有HTTP连接都没有流式请求,所以每个包的大小应该基于延迟、吞吐量以及中间盒本身的限制考虑(类似TCP的MTU与纳格算法)。 +* 应当假设所有HTTP连接都不支持流式请求,所以上行连接发送的的每个包的大小应该基于延迟、吞吐量以及中间盒本身的限制考虑(类似TCP的MTU与纳格算法)。 -* 关于HTTP版本,核心暂时未支持 h2c,故未使用 HTTPS 时 Xray 仅支持 http/1.1. 为了避免ALPN协商造成的额外复杂性,Xray总是在使用 HTTPS 时使用h2,但是出于对CDN回源连接类型的兼容考虑,Xray服务端兼容 HTTPS+http/1.1 的请求。其他实现可以根据实际需求和限制选择版本号。 +* 关于HTTP版本,核心暂时未支持 h2c,故未使用 HTTPS 时 Xray 仅会发送 http/1.1 请求。 为了避免ALPN协商造成的额外复杂性,Xray客户端在使用 HTTPS 时使用 h2 (除非在 tlsSettings 中手动指定 alpn 为 http/1.1 ),Xray服务端则兼容各种类型的入站连接(暂时没有h3),因为入站连接可以由于中间盒而出现各种类型的请求。