reliable sliding window - RainMz/NintendoClients GitHub Wiki
The reliable sliding window ensures that all packets arrive and in the correct order. Large messages are fragmented. The reliable sliding window is used by the following protocols:
- Mesh protocol
- Session protocol
- Reliable protocol
- Broadcast reliable protocol
- Stream broadcast reliable protocol
When a reliable sliding window is used, messages are wrapped as follows:
Up to 5.12:
Offset | Size | Description |
---|---|---|
0x0 | 2 | Flags |
0x2 | 2 | Payload size |
0x4 | 4 | Padding |
0x8 | 4 | Sequence id |
0xC | 4 | Acknowledgement id |
0x10 | 8 | Extra acknowledgements |
0x18 | Payload |
5.14:
Offset | Size | Description |
---|---|---|
0x0 | 2 | Flags |
0x2 | 2 | Payload size |
0x4 | 2 | Sequence id |
0x6 | 8 | Unknown |
0xE | 8 | Unknown |
0x16 | Payload |
5.17 - 5.19:
Offset | Size | Description |
---|---|---|
0x0 | 1 | Flags |
0x1 | 1 | Stream id |
0x2 | 2 | Payload size |
0x4 | 2 | Sequence id |
0x6 | 2 | Lowest sequence id pending ack |
0x8 | 1 | Number of multicast constant ids (N) |
0x9 | 8*N | Multicast constant ids |
Payload |
5.31:
Offset | Size | Description |
---|---|---|
0x0 | 1 | Flags |
0x1 | 1 | Stream id |
0x2 | 2 | Payload size |
0x4 | 2 | Sequence id |
0x6 | 2 | Unknown |
0x8 | 1 | Unknown |
0x9 | 4*N | Unknown |
Payload |
Flag | Description |
---|---|
1 | Has payload |
2 | First fragment |
4 | Last fragment |
8 | Is initialize |
16 | Is compressed |
32 | Reset |
64 | Reset ack |