Enhanced computer networking via multi-connection object retrieval
Abstract
Method and device implementations for network communications are disclosed. In at least one implementation, a computer networking method is disclosed which comprises opening a plurality of parallel TCP connections at a client computing device between a client program executed on the client computing device and a server program executed on a server computing device over a computer network. The method further comprises sending each of a plurality of application level HTTP requests for respective byte ranges of an object from the client program executed on the client computing device to the server program executed on the server computing device over a corresponding one of the plurality of parallel TCP connections.
Claims
exact text as granted — not AI-modified1 . A computer networking method, comprising:
at a client computing device, opening a plurality of parallel TCP connections between a client program executed on the client computing device, and a server program executed on a server computing device over a computer network; sending each of a plurality of application level HTTP requests for respective byte ranges of an object from the client program executed on the client computing device to the server program executed on the server computing device over a corresponding one of the plurality of parallel TCP connections; and upon detecting packet loss in one or more of the opened parallel TCP connections, sending a request for a recovery byte range over another new or opened parallel TCP connection, the recovery byte range beginning following the most recently received byte from the parallel TCP connection on which packet loss was detected.
2 . The method of claim 1 , further comprising:
determining whether to open an additional parallel TCP connection based, at least in part, on a connection state of one or more of the opened parallel TCP connections.
3 . The method of claim 2 , wherein the connection state includes a data transfer rate.
4 . The method of claim 3 , wherein the data transfer rate is based, at least in part, on an amount of information received over time at the client computing device in response to the HTTP requests.
5 . The method of claim 3 , further comprising:
wherein determining whether to open an additional parallel TCP connection includes comparing a blended data transfer rate of two or more of the opened parallel TCP connections to a threshold data transfer rate.
6 . The method of claim 2 ,
wherein the connection state includes a round trip time for responses received at the client computing device in response to the HTTP requests; and wherein determining whether to open an additional parallel TCP connection includes, if the round trip time is greater than a predetermined threshold, then determining to open an additional parallel TCP connection.
7 . The method of claim 2 ,
wherein the connection state includes a maximum segment size for each parallel TCP connection; and wherein determining whether to open an additional parallel TCP connection includes, if the maximum segment size is smaller than a predetermined threshold, then determining to open an additional parallel TCP connection.
8 . The method of claim 2 ,
wherein the connection state includes a slow start threshold for one or more of the parallel TCP connections; and wherein determining whether to open an additional parallel TCP connection includes, if the slow start threshold is remaining constant or is increasing over time, then determining to open an additional parallel TCP connection.
9 . The method of claim 2 ,
wherein the connection state includes an estimated bandwidth for the parallel TCP connections; and wherein determining whether to open an additional parallel TCP connection includes, if the measured data transfer rate approaches within a predetermined threshold from the estimated bandwidth, then determining to open an additional parallel TCP connection.
10 . The method of claim 1 , further comprising
determining the byte range for each HTTP request based, at least in part, on a round trip time and a maximum segment size for the opened parallel TCP connections.
11 . The method of claim 1 , wherein the object is a static object and the respective byte ranges are determined based, at least in part, on a content length header of a reply from the server computing device indicating a file size of the object.
12 . The method of claim 1 , further comprising:
receiving hint information from the server computing device at the client computing device in HTTP format over one or more of the plurality of parallel TCP connections, the hint information indicating a suggested byte range for the client computing device to request.
13 . The method of claim 12 , further comprising:
wherein the object includes a dynamic object, and the server computing device at least partially buffers the dynamic object in memory prior to sending the dynamic object to the client computing device; and wherein the suggested byte range of the hint information is based, at least in part, upon bytes of the dynamic object that are detected as buffered in the server computing device upon sending the hint information.
14 . The method of claim 1 , wherein the server computing device functions as a load balancer by proxying requests from the client computing device and retrieving the requested objects from one of a plurality of back end servers in a server farm before serving those objects to the requesting client computing device.
15 . The method of claim 1 , wherein the computer network comprises at least a wide area network which exhibits packet loss on a threshold percentage of connections over the wide area network.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.