17. An apparatus for compressing data, the apparatus comprising: at least one memory having at least one computer program stored therein; at least one processor operative to execute the at least one computer program out of the at least one memory to: (a) receive a sequence of input data symbols; (b) copy a predetermined number of the received input data symbols into a defined block of input data symbols; (c) select a subset of input data symbols S N in the defined block of input data symbols according to a first predetermined selection rule; (d) generate a respective input data dictionary-index value DI N for the selected subset of input data symbols S N ; (e) if the dictionary-index value DI N represents a range of dictionary data symbols D N stored in a dictionary, then: (f) determine a range of input data symbols including the subset of input data symbols S N that matches a range of dictionary data symbols that includes the range of dictionary data symbols D N ; and (g) store a correlation of the matching input data range of symbols and the dictionary data range of symbols as a set comprising a pointer to a starting symbol location in the dictionary and a matching range length; (h) select a next subset of input data symbols S N in the defined block of input data symbols according to the first predetermined selection rule; (i) repeat steps (d)-(h) until an end of the defined block of input data symbols is reached; and convert the defined block of input data symbols into an outgoing data payload by replacing those input data symbols determined to be in a matching range of symbols in the dictionary in steps (c)-(i) with an indication of the stored corresponding pointer and matching range length.
17. An apparatus for compressing data, the apparatus comprising: at least one memory having at least one computer program stored therein; at least one processor operative to execute the at least one computer program out of the at least one memory to: (a) receive a sequence of input data symbols; (b) copy a predetermined number of the received input data symbols into a defined block of input data symbols; (c) select a subset of input data symbols S N in the defined block of input data symbols according to a first predetermined selection rule; (d) generate a respective input data dictionary-index value DI N for the selected subset of input data symbols S N ; (e) if the dictionary-index value DI N represents a range of dictionary data symbols D N stored in a dictionary, then: (f) determine a range of input data symbols including the subset of input data symbols S N that matches a range of dictionary data symbols that includes the range of dictionary data symbols D N ; and (g) store a correlation of the matching input data range of symbols and the dictionary data range of symbols as a set comprising a pointer to a starting symbol location in the dictionary and a matching range length; (h) select a next subset of input data symbols S N in the defined block of input data symbols according to the first predetermined selection rule; (i) repeat steps (d)-(h) until an end of the defined block of input data symbols is reached; and convert the defined block of input data symbols into an outgoing data payload by replacing those input data symbols determined to be in a matching range of symbols in the dictionary in steps (c)-(i) with an indication of the stored corresponding pointer and matching range length. 19. The apparatus of claim 17 , wherein: selecting a subset of input data symbols S N comprises selecting an N th input data symbol B N in the defined block of input data symbols; generating a respective input data dictionary-index value DI N comprises generating a respective input data hash value HV N for the selected input data symbol B N ; and selecting a next subset of input data symbols S N comprises selecting a next N th input data symbol B N in the defined block of input data symbols.