Second revision of protocol 800

This commit is contained in:
frekky 2015-08-28 15:01:31 +08:00
parent 917a6af7b8
commit ce0c0dc03b

View File

@ -169,10 +169,10 @@ Upstream data header:
+-----+-----+--------+--------+----+ +-----+-----+--------+--------+----+
Downstream data header: |=> only if P(ing) bit set Downstream data header: |=> only if P(ing) bit set
76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210
+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+--------+
|DDDDDDDD|SSSSSSSS|00PCANFL|ZZZZZZZZ|WWWWWWWW| |DDDDDDDD|SSSSSSSS|00PCANFL|ZZZZZZZZ|WWWWWWWW|XXXXXXXX|YYYYYYYY|
+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+--------+
UUUU = Userid UUUU = Userid
L = Last fragment flag L = Last fragment flag
@ -185,6 +185,8 @@ SSSSSSSS = Upstream packet sequence number/ACK
DDDDDDDD = Downstream packet sequence number/ACK DDDDDDDD = Downstream packet sequence number/ACK
ZZZZZZZZ = Downstream window size ZZZZZZZZ = Downstream window size
WWWWWWWW = Upstream window size WWWWWWWW = Upstream window size
XXXXXXXX = Downstream window start seqID
YYYYYYYY = Upstream window start seqID
UDCMC = Upstream Data CMC char (actually base36 [a-z0-9]), case-insensitive UDCMC = Upstream Data CMC char (actually base36 [a-z0-9]), case-insensitive
Upstream data packet starts with 1 byte ASCII hex coded user byte; then Upstream data packet starts with 1 byte ASCII hex coded user byte; then
@ -192,11 +194,9 @@ Upstream data packet starts with 1 byte ASCII hex coded user byte; then
data, encoded with the chosen upstream codec. data, encoded with the chosen upstream codec.
Downstream data starts with 3 byte header. Then payload data, which may be Downstream data starts with 3 byte header. Then payload data, which may be
compressed. If Ping flag is set, another 8 bits of downstream window size and compressed. If Ping flag is set, another 4 bytes are appended to the header.
8 bits of upstream window size are appended to the header and the downstream or This occurs either when the server wants to re-sync its window parameters or
upstream sequence IDs are the start of the remote windows. This occurs either when the client has requested a ping response.
when the server wants to re-sync its window parameters or when the client has
requested a ping response.
In NULL and PRIVATE responses, downstream data is always raw. In all other In NULL and PRIVATE responses, downstream data is always raw. In all other
response types, downstream data is encoded (see Options above). response types, downstream data is encoded (see Options above).
@ -224,16 +224,20 @@ Client sends:
First byte p or P First byte p or P
Second byte CMC Second byte CMC
Rest encoded with Base32: Rest encoded with Base32:
76543 21076543 21076543 21076543 21076543 210 76543 21076543 21076543 21076543 21076543 21076543 21076543
+!----+!----!--+--!----!+----!---+-!----!-+--------+ +!----+!----!--+--!----!+----!---+-!----!-+--------+--------+
|0UUUU|DDDDDDDD|SSSSSSSS|WWWWWWWW|ZZZZZZZZ|0000000R| |0UUUU|DDDDDDDD|WWWWWWWW|ZZZZZZZZ|XXXXXXXX|YYYYYYYY|00000ANR|
+-----+--------+--------+--------+--------+--------+ +-----+--------+--------+--------+--------+--------+--------+
4 bits Userid 4 bits Userid
1 byte Downstream seq ID of window start 1 byte Downstream seq ID ACK
1 byte upStream seq ID of window start
1 byte Window size (upstream) 1 byte Window size (upstream)
1 byte window siZe (downstream) 1 byte window siZe (downstream)
1 byte "Respond with ping" flag 1 byte window start (downstream)
1 bYte window start (upstream)
1 byte:
A = is ACKing downstream frag
N = is NACKing downstream frag (unused)
R = respond with a data/ping packet
2 bytes CMC 2 bytes CMC
The server response to Ping and Data packets is a DNS NULL/TXT/.. type response, The server response to Ping and Data packets is a DNS NULL/TXT/.. type response,