4.7 RDP 6.1 Bulk Compression Example
The following annotation shows how the data used in the examples in section 3.1.8.2.2.1 and 3.1.8.2.3.1 appears in binary encoded format after having been decompressed by the level-2 decompressor, but not yet by the level-1 decompressor.
The first packet contains the following data.
-
a b c d e f g h i j
The encoded version of this packet is represented as follows.
-
00000000 16 80 61 62 63 64 65 66 67 68 69 6a ..abcdefghij 16 -> RDP61_COMPRESSED_DATA::Level1ComprFlags 0x16 = 0x10 | 0x02 | 0x04 = L1_INNER_COMPRESSION | L1_NO_COMPRESSION | L1_PACKET_AT_FRONT 80 -> RDP61_COMPRESSED_DATA::Level2ComprFlags 0x80 = PACKET_FLUSHED 61 62 63 64 65 66 67 68 69 6a -> RDP61_COMPRESSED_DATA::Literals
The second packet contains the following data.
-
[2 matches] [MatchHistoryOffset@3, MatchLength=9, MatchOutputOffset@5] [MatchHistoryOffset@0, MatchLength=4, MatchOutputOffset@14] k l m n o u
The encoded version of this packet is represented as follows.
-
00000000 11 21 02 00 09 00 05 00 03 00 00 00 04 00 0e 00 . .............. 00000010 00 00 00 00 6b 6c 6d 6e 6f 75 ....klmnou 11 -> RDP61_COMPRESSED_DATA::Level1ComprFlags 0x11 = 0x10 | 0x01 = L1_INNER_COMPRESSION | L1_COMPRESSED 21 -> RDP61_COMPRESSED_DATA::Level2ComprFlags 0x21 = PACKET_COMPRESSED | PACKET_COMPR_TYPE_64K 02 00 -> RDP61_COMPRESSED_DATA::MatchCount = 2 matches 09 00 -> RDP61_MATCH_DETAILS::MatchLength = 9 bytes 05 00 -> RDP61_MATCH_DETAILS::MatchOutputOffset = 5 03 00 00 00 -> RDP61_MATCH_DETAILS::MatchHistoryOffset = 3 04 00 -> RDP61_MATCH_DETAILS::MatchLength = 4 bytes 0e 00 -> RDP61_MATCH_DETAILS::MatchOutputOffset = 14 00 00 00 00 -> RDP61_MATCH_DETAILS::MatchHistoryOffset = 0 6b 6c 6d 6e 6f 75 -> RDP61_COMPRESSED_DATA::Literals