Method and system for reducing network latency in data communication
First Claim
1. In a communications network having a plurality of devices which are located at different network nodes, a method of communicating data between devices in an accelerated manner, said method comprising:
- a) compressing data with software acting as an encoder, said software running on a first device in network communication with other devices, said compressed data to be transmitted to a second device in the network running software acting as a decoder, said compressing consisting of representing runs of data with at least one identifier;
b) storing said at least one identifier and corresponding data represented by said at least one identifier in a database associated with said encoder;
c) transmitting from the encoder to the decoder data corresponding to the identifier only when said data is specifically requested by the decoder.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and systems for accelerating data communication by reducing network latency particularly by data compression in which requested data is recursively compressed by an encoder and sent to the requester in codes which may or may not be understood by the requester. The requester can subsequently request data corresponding to unknown codes. The request-reply sequence is also recursive and continues until the requested data is present at the requester. To further accelerate communication, a persistently connected network is employed, together with a new socket layer capable of combining multiple messages from different machines, threads, and/or processes into single TCP/IP packets to be relayed along message hubs in the persistent network. These features are introduced singly and combined to create a new caching network. A new content distribution network can take advantage of these data communication improvements since requested content can be distributed in caches in a caching network.
-
Citations
124 Claims
-
1. In a communications network having a plurality of devices which are located at different network nodes, a method of communicating data between devices in an accelerated manner, said method comprising:
-
a) compressing data with software acting as an encoder, said software running on a first device in network communication with other devices, said compressed data to be transmitted to a second device in the network running software acting as a decoder, said compressing consisting of representing runs of data with at least one identifier;
b) storing said at least one identifier and corresponding data represented by said at least one identifier in a database associated with said encoder;
c) transmitting from the encoder to the decoder data corresponding to the identifier only when said data is specifically requested by the decoder. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. In a communications network having a plurality of devices which are located at different network nodes, a method of communicating data between devices in an accelerated manner, said method comprising:
-
a) compressing data with software acting as an encoder, said software running on a first device in network communication with other devices, said compressed data to be transmitted to a second device in the network running software acting as a decoder, said compressing consisting of representing runs of data with at least one identifier;
b) storing said at least one identifier and corresponding data represented by said at least one identifier in a database associated with said encoder, c) determining whether there are any runs of identifiers in compressed data;
d) representing runs of identifiers in compressed data with a single identifier, thereby achieving further compression of said data;
e) storing said single identifier and corresponding runs of identifiers represented by single identifier in the database associated with said encoder; and
f) transmitting from the encoder to the decoder data corresponding to an identifier only when said data is specifically requested by the decoder. - View Dependent Claims (27, 28, 29, 39, 40, 41, 42)
-
-
30. In a communications network having a plurality of devices which are located at different network nodes, a method of communicating data between devices, said method comprising:
-
a) breaking up data to be compressed and transmitted to a second device at a first device, said data broken up into logical segments according to data type;
b) compressing data by representing segments of data with at least one identifier;
c) transmitting said at least one identifier when data is requested by the second device; and
d) at the second device looking up the identifier and producing associated data for a known identifier and for an unknown identifier, requesting data associated with said unknown identifier, whereby the requested data enables decompression of the compressed data. - View Dependent Claims (31, 32, 33, 34, 35, 36, 37, 38)
-
-
43. In a communications network having a plurality of devices which are located at different network nodes, a method of communicating data between devices in an accelerated manner, said method comprising:
-
a) compressing data with software acting as an encoder, said software running on a first device in network communication with a other devices, said compressed data to be transmitted to a second device in the network running software acting as a decoder, said compressing consisting of breaking up data at predetermined points to create runs of data and representing said runs of data with at least one identifier, thereby achieving compression of said data; and
b) storing said at least one identifier and corresponding data represented by said at least one identifier in a database associated with said encoder, c) transmitting from the encoder to the decoder data corresponding to the identifier only when said data is specifically requested by the decoder. - View Dependent Claims (44, 45, 46, 47)
-
-
48. In a communications network having a plurality of devices which are located at different network nodes, a method of communicating data between devices in an accelerated manner, said method comprising:
-
a) compressing data with software acting as an encoder, said software running on a first device in network communication with other devices, said compressed data to be transmitted to a second device in the network running software acting as a decoder, said compressing consisting of representing runs of data with at least one identifier;
b) storing said at least one identifier and corresponding data represented by said at least one identifier in a database associated with said encoder;
c) repeating steps a) and b) as necessary to achieve a desired level of compression; and
d) transmitting from the encoder to the decoder data corresponding to the identifier only when said data is specifically requested by the decoder. - View Dependent Claims (49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64)
-
-
65. In a communications network, a method for decoding data at a client running software acting as a decoder wherein the client has previously requested data from a server running software acting as a encoder, said method comprising:
-
a) receiving at the decoder an encoded reply from the server, said encoded reply having identifiers corresponding to data in the reply;
b) determining whether a database associated with the decoder recognizes identifiers present in the encoded reply;
c) sending another request from the decoder to the encoder for data corresponding to unrecognized identifiers not present in the decoder'"'"'s database;
d) sending requested data corresponding to unrecognized identifiers from the encoder to the decoder;
e) repeating steps c) and d) if necessary; and
f) assembling the reply from the data at the decoder.
-
-
66. In a communications network, a method for decoding data at a client running software acting as a decoder wherein the client has previously requested data from a server running software acting as a decoder, said method comprising:
-
a) receiving at the decoder an encoded reply from the server, said encoded reply having identifiers corresponding to data in the reply;
b) sending a further request to the encoder for data corresponding to identifiers not recognized by a database associated with the decoder;
c) receiving a reply to the further request at the decoder;
d) repeating steps b) and c) if necessary; and
f) assembling the first reply from the data with the decoder.
-
-
67. In a communications network having a plurality of devices which are located at different network nodes, a system for communicating data between devices in an accelerated manner, said system comprising:
-
a) an encoder having means for compressing data by representing runs of data with at least one identifier and storing said at least one identifier and corresponding data represented by said at least one identifier in a database associated with encoder, said encoder running on a first device in network communication with other devices, said compressed data to be transmitted to a second device in the network, said encoder running on a first device in network communication with other devices; and
b) a decoder having means for decompressing compressed data received from the encoder by determining whether said at least one identifier in the compressed data is contained in a second database associated with the decoder and requesting data corresponding to an unknown identifier from the encoder, said decoder running on a second device in network communication with other devices. - View Dependent Claims (68, 69, 70, 71, 72)
-
-
73. In a communications system, a method for transmitting data requested by a client from a server in an accelerated manner, said method comprising:
-
a) receiving at a server running software acting as an encoder a request for data from a client running software acting as a decoder;
b) compressing with the encoder portions of a reply to the request known to the encoder by representing said portions of the reply with at least one identifier;
c) caching the at least one identifier and corresponding data in a database associated with the encoder; and
d) returning the reply to the client, wherein the decoder decompresses the reply and assembles the data. - View Dependent Claims (74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87)
-
-
88. In a communications system, a method for encoding and transmitting data requested by a client from a server, said method comprising:
-
a) receiving at a server running software acting as an encoder a request for data from a client running software acting as a decoder;
b) encoding with the encoder a reply to said request, c) returning the reply to the client;
d) receiving the reply at the client;
e) determining with decoder whether a database stored at the client contains data corresponding to identifiers sent by the encoder such that the entire reply can be decoded and assembled;
f) requesting the encoder to send data strings corresponding to any identifiers contained in the reply which are not stored in a database at the client;
g) receiving said request at the encoder;
h) returning the requested data to the client;
i) repeating steps e)-h) if necessary;
j) decoding the request at the client; and
k) assembling the requested data at the client. - View Dependent Claims (89, 90, 91, 92, 93, 94, 95, 96, 97)
-
-
98. In a communications system, a method for transmitting data requested by a client from a server in an accelerated manner, said method comprising:
-
a) receiving at a server a request for data from a client running software acting as a decoder;
b) sending a reply from the server to an intermediate device running software acting an encoder, said intermediate machine in network connection with the server and the client;
c) compressing the reply with the encoder said compressing consisting of representing runs of data with at least one identifier;
d) caching the at least one identifier and corresponding data in a database associated with the encoder; and
e) returning the reply to the client, wherein the decoder decompresses the reply and assembles the data. - View Dependent Claims (99, 100, 101, 102, 103, 104, 105, 106, 107, 108)
-
-
109. In a communications network containing a plurality of network hubs, a method of communicating data between an encoder and a decoder comprising:
-
a) encoding data to be transmitted to a decoder, said encoded data containing at least one identifier, said at least one identifier and data corresponding to said at least one identifier stored in a first database associated with an encoder;
b) establishing a second database at the decoder having a plurality of identifiers and data corresponding to said plurality of identifiers;
c) receiving a request for encoded data, said request sent by the decoder;
d) determining whether any identifiers contained in requested data are known to the decoder; and
e) transmitting requested, encoded data and data corresponding to any identifier not contained in the second database to the decoder. - View Dependent Claims (110, 111, 112, 113)
-
-
114. In a communications network, a method of communicating data between an encoder and a decoder, said method comprising:
-
a) sending a request from a decoder to an encoder, said request including an identifier representing requested data previously sent to the decoder;
b) determining whether the requested data corresponds to the identifier sent by the decoder;
c) sending an encoded reply to the requested data from the encoder to the decoder if the requested data has been updated, otherwise sending a confirmation that the identifier sent by the decoder corresponds to the requested data. - View Dependent Claims (115, 116, 117, 118)
-
-
119. A method of compressing data to be communicated in a network, said method comprising:
-
a) breaking up data to be compressed into logical segments according to data type;
b) storing said at least one identifier and data corresponding to said at least one identifier in a database;
c) detecting runs of identifiers in compressed data;
d) representing runs of identifiers in compressed data;
e) storing said another identifier in said database; and
f) repeating steps d)-e) as necessary to achieve desired level of compression. - View Dependent Claims (120, 121, 122, 123)
-
-
124. In a communications network where compressed data is exchanged between members of the network, a method of efficiently communicating compressed data, said method comprising:
-
a) receiving compressed data, said data compressed by representing each segment of data with an identifier, said identifier and data corresponding to said identifier stored in a first database associated with compression software;
b) storing received identifiers and data corresponding to said identifiers in a second database associated with decompression software;
c) requesting data that contains a subset of data previously received, wherein identifiers and data are contained in the second database;
d) receiving an identifier in reply to said request, said identifier including;
i) a code identifying a set of data contained in the second database;
ii) a second code identifying a starting offset, said offset indicating where the requested data may be found in the set of data contained in the second database;
iii) a third code identifying a length, said length indicating an end point of the requested data contained in the second database; and
e) assembling the requested data from the reply and the data contained in the second database.
-
Specification