Difference between revisions of "Packet Layout"
Jump to navigation
Jump to search
(→Body) |
|||
Line 29: | Line 29: | ||
* Bytes 4 to 4 + (data length) | * Bytes 4 to 4 + (data length) | ||
** Message number. This is a numeric encoding of the message types defined in the message_template.msg file. It may be 1, 2 or 4 bytes in length, depending on the message frequency (High, Medium, Low or Fixed). | ** Message number. This is a numeric encoding of the message types defined in the message_template.msg file. It may be 1, 2 or 4 bytes in length, depending on the message frequency (High, Medium, Low or Fixed). | ||
*** High frequency messages are assigned (at run time) numbers | *** High frequency messages are assigned (at run time) numbers 0x01 - 0xFE. | ||
*** Medium frequency messages are assigned (at run time) numbers | *** Medium frequency messages are assigned (at run time) numbers 0xFF01 - 0xFFFE. | ||
*** Low frequency messages are assigned (at run time) numbers | *** Low frequency messages are assigned (at run time) numbers 0xFFFF0001 and up. | ||
*** Messages with "Fixed" frequency are really those with fixed message numbers, i.e. the numbers are assigned in the message_template.msg file itself. There are currently 6 of these, 0xFFFFFFFA - 0xFFFFFFFF. | *** Messages with "Fixed" frequency are really those with fixed message numbers, i.e. the numbers are assigned in the message_template.msg file itself. There are currently 6 of these, 0xFFFFFFFA - 0xFFFFFFFF. | ||
** Message data. This is different for each message type, and is defined in the message_template.msg file. | ** Message data. This is different for each message type, and is defined in the message_template.msg file. |
Revision as of 20:41, 15 January 2007
Header (Packet ID)
+-+-+-+-+-------+---------------+---------------+---------------+ |Z|R|R|A| | | |E|E|E|C| | Sequence number (24 bits) | |R|L|S|K| | | +-+-+-+-+-------+---------------+---------------+---------------+ | | : :
- Byte 0, 4 most significant bits: Flags
- LL_ZERO_CODE_FLAG 0x80 -- 0's in packet body are run length encoded, such that series of 1 to 255 zero bytes are encoded to take 2 bytes.
- LL_RELIABLE_FLAG 0x40 -- This packet was sent reliably (implies please ack this packet)
- LL_RESENT_FLAG 0x20 -- This packet is a resend from the source.
- LL_ACK_FLAG 0x10 -- This packet contains appended acks.
- Byte 0, 4 least significant bits: currently unused
- Bytes 1-3: Sequence number
The term "Packet ID" is sometimes used to refer to all 4 bytes and sometimes just the sequence number.
For further discussion of the bits in the header, see Messages and Packet Accounting
Body
- Bytes 4 to 4 + (data length)
- Message number. This is a numeric encoding of the message types defined in the message_template.msg file. It may be 1, 2 or 4 bytes in length, depending on the message frequency (High, Medium, Low or Fixed).
- High frequency messages are assigned (at run time) numbers 0x01 - 0xFE.
- Medium frequency messages are assigned (at run time) numbers 0xFF01 - 0xFFFE.
- Low frequency messages are assigned (at run time) numbers 0xFFFF0001 and up.
- Messages with "Fixed" frequency are really those with fixed message numbers, i.e. the numbers are assigned in the message_template.msg file itself. There are currently 6 of these, 0xFFFFFFFA - 0xFFFFFFFF.
- Message data. This is different for each message type, and is defined in the message_template.msg file.
- Message number. This is a numeric encoding of the message types defined in the message_template.msg file. It may be 1, 2 or 4 bytes in length, depending on the message frequency (High, Medium, Low or Fixed).
Appended Acks
- Bytes 4+(data length) thru acks
- Rest of packet is filled with as many acks from previous reliable messages as will fit.
See also: libsecondlife documentation