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  如果设置,服务器将写入响应。