跳转至

UDP over TCP

It's a proprietary protocol created by SagerNet, not part of shadowsocks.

The UDP over TCP protocol is used to transmit UDP packets in TCP.

Structure

{
  "enabled": true,
  "version": 2
}

The structure can be replaced with a boolean value when the version is not specified.

Fields

enabled

Enable the UDP over TCP protocol.

version

The protocol version, 1 or 2.

2 is used by default.

Application support

Project UoT v1 UoT v2
sing-box v0 (2022/08/11) v1.2-beta9
Xray-core v1.5.7 (2022/06/05) f57ec13 (Not released)
Clash.Meta v1.12.0 (2022/07/02) 8cb67b6 (Not released)
Shadowrocket v2.2.12 (2022/08/13) /

Protocol details

Protocol version 1

The client requests the magic address to the upper layer proxy protocol to indicate the request: sp.udp-over-tcp.arpa

Stream format

ATYP address port length data
u8 variable u16be u16be variable

ATYP / address / port: Uses the SOCKS address format.

Protocol version 2

Protocol version 2 uses a new magic address: sp.v2.udp-over-tcp.arpa

Request format
isConnect ATYP address port
u8 u8 variable u16be

isConnect: Set to 1 to indicates that the stream uses the connect format, 0 to disable.

ATYP / address / port: Request destination, uses the SOCKS address format.

Connect stream format
length data
u16be variable
Non-connect stream format

As the same as the stream format in protocol version 1.