github.com/sagernet/sing-box@v1.9.0-rc.20/docs/configuration/shared/v2ray-transport.zh.md (about) 1 V2Ray Transport 是 v2ray 发明的一组私有协议,并污染了其他协议的名称,如 clash 中的 `trojan-grpc`。 2 3 ### 结构 4 5 ```json 6 { 7 "type": "" 8 } 9 ``` 10 11 可用的传输协议: 12 13 * HTTP 14 * WebSocket 15 * QUIC 16 * gRPC 17 * HTTPUpgrade 18 19 !!! warning "与 v2ray-core 的区别" 20 21 * 没有 TCP 传输层, 纯 HTTP 已合并到 HTTP 传输层。 22 * 没有 mKCP 传输层。 23 * 没有 DomainSocket 传输层。 24 25 !!! note "" 26 27 当内容只有一项时,可以忽略 JSON 数组 [] 标签。 28 29 ### HTTP 30 31 ```json 32 { 33 "type": "http", 34 "host": [], 35 "path": "", 36 "method": "", 37 "headers": {}, 38 "idle_timeout": "15s", 39 "ping_timeout": "15s" 40 } 41 ``` 42 43 !!! warning "与 v2ray-core 的区别" 44 45 不强制执行 TLS。如果未配置 TLS,将使用纯 HTTP 1.1。 46 47 #### host 48 49 主机域名列表。 50 51 如果设置,客户端将随机选择,服务器将验证。 52 53 #### path 54 55 !!! warning 56 57 V2Ray 文档称服务端和客户端的路径必须一致,但实际代码允许客户端向路径添加任何后缀。 58 sing-box 使用与 V2Ray 相同的行为,但请注意,该行为在 `WebSocket` 和 `HTTPUpgrade` 传输层中不存在。 59 60 HTTP 请求路径 61 62 服务器将验证。 63 64 #### method 65 66 HTTP 请求方法 67 68 如果设置,服务器将验证。 69 70 #### headers 71 72 HTTP 请求的额外标头 73 74 如果设置,服务器将写入响应。 75 76 #### idle_timeout 77 78 在 HTTP2 服务器中: 79 80 指定闲置客户端应在多长时间内使用 GOAWAY 帧关闭。PING 帧不被视为活动。 81 82 在 HTTP2 客户端中: 83 84 如果连接上没有收到任何帧,指定一段时间后将使用 PING 帧执行健康检查。需要注意的是,PING 响应被视为已接收的帧,因此如果连接上没有其他流量,则健康检查将在每个间隔执行一次。如果值为零,则不会执行健康检查。 85 86 默认使用零。 87 88 #### ping_timeout 89 90 在 HTTP2 客户端中: 91 92 指定发送 PING 帧后,在指定的超时时间内必须接收到响应。如果在指定的超时时间内没有收到 PING 帧的响应,则连接将关闭。默认超时持续时间为 15 秒。 93 94 ### WebSocket 95 96 ```json 97 { 98 "type": "ws", 99 "path": "", 100 "headers": {}, 101 "max_early_data": 0, 102 "early_data_header_name": "" 103 } 104 ``` 105 106 #### path 107 108 HTTP 请求路径 109 110 服务器将验证。 111 112 #### headers 113 114 HTTP 请求的额外标头 115 116 如果设置,服务器将写入响应。 117 118 #### max_early_data 119 120 请求中允许的最大有效负载大小。默认启用。 121 122 #### early_data_header_name 123 124 默认情况下,早期数据在路径而不是标头中发送。 125 126 要与 Xray-core 兼容,请将其设置为 `Sec-WebSocket-Protocol`。 127 128 它需要与服务器保持一致。 129 130 ### QUIC 131 132 ```json 133 { 134 "type": "quic" 135 } 136 ``` 137 138 !!! warning "与 v2ray-core 的区别" 139 140 没有额外的加密支持: 141 它基本上是重复加密。 并且 Xray-core 在这里与 v2ray-core 不兼容。 142 143 ### gRPC 144 145 !!! note "" 146 147 默认安装不包含标准 gRPC (兼容性好,但性能较差), 参阅 [安装](/zh/installation/build-from-source/#_5)。 148 149 ```json 150 { 151 "type": "grpc", 152 "service_name": "TunService", 153 "idle_timeout": "15s", 154 "ping_timeout": "15s", 155 "permit_without_stream": false 156 } 157 ``` 158 159 #### service_name 160 161 gRPC 服务名称。 162 163 #### idle_timeout 164 165 在标准 gRPC 服务器/客户端: 166 167 如果传输在此时间段后没有看到任何活动,它会向客户端发送 ping 请求以检查连接是否仍然活动。 168 169 在默认 gRPC 服务器/客户端: 170 171 它的行为与 HTTP 传输层中的相应设置相同。 172 173 #### ping_timeout 174 175 在标准 gRPC 服务器/客户端: 176 177 经过一段时间之后,客户端将执行 keepalive 检查并等待活动。如果没有检测到任何活动,则会关闭连接。 178 179 在默认 gRPC 服务器/客户端: 180 181 它的行为与 HTTP 传输层中的相应设置相同。 182 183 #### permit_without_stream 184 185 在标准 gRPC 客户端: 186 187 如果启用,客户端传输即使没有活动连接也会发送 keepalive ping。如果禁用,则在没有活动连接时,将忽略 `idle_timeout` 和 `ping_timeout`,并且不会发送 keepalive ping。 188 189 默认禁用。 190 191 ### HTTPUpgrade 192 193 ```json 194 { 195 "type": "httpupgrade", 196 "host": "", 197 "path": "", 198 "headers": {} 199 } 200 ``` 201 202 #### host 203 204 主机域名。 205 206 服务器将验证。 207 208 #### path 209 210 HTTP 请求路径 211 212 服务器将验证。 213 214 #### headers 215 216 HTTP 请求的额外标头。 217 218 如果设置,服务器将写入响应。