Client's can detect and handle various tags by their opcode, which is 8-byte value. Additionally, there have been some protocol extensions which also allow 'named' tags, which - logically - have a name instead of simple opcode.
+--------+--------+--------+--------+-------- | type | length = 0x01 | opcode | type-specific amount of data +--------+--------+--------+--------+--------
+-------+-------+-------+~~~~~~~~~~~~~~~+------ | type | length | <length>name | type-specific amount of data +-------+-------+-------+~~~~~~~~~~~~~~~+------
+-------+--------+------- | type | opcode | (type & 0x7f) - 0x10 bytes of string data +-------+--------+-------
Type field in the tag may be one of the following:
TT_HASH = 0x01, //!< unsupported, 16 bytes TT_STRING = 0x02, //!< [u16]len[len]data TT_UINT32 = 0x03, //!< 4 bytes TT_FLOAT = 0x04, //!< 4 bytes TT_BOOL = 0x05, //!< unsupported, 1 byte TT_BOOLARR = 0x06, //!< unsupported, [u16]len[len]data TT_BLOB = 0x07, //!< unsupported, [u16]len[len]data TT_UINT16 = 0x08, //!< 2 bytes TT_UINT8 = 0x09, //!< 1 byte TT_BSOB = 0x0a //!< unsupported, [u16]len[len]data