mirror of
https://github.com/bolucat/Archive.git
synced 2026-04-23 00:17:16 +08:00
2.3 KiB
2.3 KiB
brook wsserver --withoutBrookProtocol protocol
Terminology
-
DST Address: The address that the application actually wants to request, address contains IP/domain and portATYP + IP/Domain + PORTATYP: 1 byte- 0x01: IPv4
- 0x03: Domain
- 0x04: IPv6
IP/Domain: 4/n/16 bytes- If ATYP is 0x01, then this is IPv4, 4 bytes
- If ATYP is 0x03, then this is domain, n bytes, and the first byte is the domain length
- If ATYP is 0x04, then this is IPv6, 16 bytes
Port: 2 bytes- Big Endian 16-bit unsigned integer
-
Password: User-defined password -
SHA256: Defined in FIPS 180-4
Client --TCP--> Server
[Standard WebSocket Protocol Header] + [SHA256(Password) + (DST Address Length+4) + Unix Timestamp + DST Address] + [DATA]...
The maximum length of
[SHA256(Password) + (DST Address Length+4) + Unix Timestamp + DST Address]is 2048 bytes
DST Address Length+4: Big Endian 16-bit unsigned integerUnix Timestamp: If it is not even, it should be increased by 1. Big Endian 32-bit unsigned integerDATA: Actual data being proxied
Server --TCP--> Client
[Standard WebSocket Protocol Header] + [DATA]...
Client --UDP(UDP over TCP)--> Server
[Standard WebSocket Protocol Header] + [SHA256(Password) + (DST Address Length+4) + Unix Timestamp + DST Address] + [Fragment Length + Fragment]...
The maximum length of
[SHA256(Password) + (DST Address Length+4) + Unix Timestamp + DST Address]is 2048 bytes
The maximum length of[Fragment Length + Fragment]is 65507 bytes
DST Address Length+4: Big Endian 16-bit unsigned integerFragment Length: Big Endian 16-bit unsigned integerFragment: Actual data being proxiedUnix Timestamp: If it is not odd, it should be increased by 1. Big Endian 32-bit unsigned integer
Server --UDP(UDP over TCP)--> Client
[Standard WebSocket Protocol Header] + [Fragment Length + Fragment]...
The maximum length of
[Fragment Length + Fragment]is 65507 bytes
Fragment Length: Big Endian 16-bit unsigned integerFragment: Actual data being proxied