System providing faster and more efficient data communication

Information

  • Patent Grant
  • 12095841
  • Patent Number
    12,095,841
  • Date Filed
    Sunday, September 3, 2023
    a year ago
  • Date Issued
    Tuesday, September 17, 2024
    2 months ago
  • Inventors
  • Original Assignees
    • BRIGHT DATA LTD.
  • Examiners
    • Nguyen; Minh Chau
    Agents
    • May Patents Ltd. c/o Dorit Shem-Tov
Abstract
A system designed for increasing network communication speed for users, while lowering network congestion for content owners and ISPs. The system employs network elements including an acceleration server, clients, agents, and peers, where communication requests generated by applications are intercepted by the client on the same machine. The IP address of the server in the communication request is transmitted to the acceleration server, which provides a list of agents to use for this IP address. The communication request is sent to the agents. One or more of the agents respond with a list of peers that have previously seen some or all of the content which is the response to this request (after checking whether this data is still valid). The client then downloads the data from these peers in parts and in parallel, thereby speeding up the Web transfer, releasing congestion from the Web by fetching the information from multiple sources, and relieving traffic from Web servers by offloading the data transfers from them to nearby peers.
Description
FIELD OF THE INVENTION

The present invention is related to Internet communication, and more particularly, to improving data communication speed and bandwidth efficiency on the Internet.


BACKGROUND OF THE INVENTION

There are several trends in network and Internet usage, which tremendously increase the bandwidth that is being used on the Internet. One such trend is that more and more video is being viewed on demand on the Internet. Such viewing includes the viewing of both large and short video clips. In addition, regular shows and full-featured films may be viewed on the Internet. Another trend that is increasing the traffic on the Internet is that Web sites (such as shopping portals, news portals, and social networks) are becoming global, meaning that the Web sites are serving people in many diverse places on the globe, and thus the data is traversing over longer stretches of the Internet, increasing the congestion.


The increase in bandwidth consumption has created several major problems, a few of which are described below:

    • The problem for users—the current Internet bandwidth is not sufficient, and thus the effective ‘speed’ experienced by users is slow;
    • The problem for content owners—the tremendous amount of data being viewed by users is costing large amounts of money in hosting and bandwidth costs; and
    • The problem for Internet Service Providers (ISPs)—the growth in Internet traffic is requiring the ISPs to increase the infrastructure costs (communication lines, routers, etc.) at tremendous financial expense.


The need for a new method of data transfer that is fast for the consumer, cheap for the content distributor and does not require infrastructure investment for ISPs, has become a major issue which is yet unsolved.


There have been many attempts at making the Internet faster for the consumer and cheaper for the broadcaster. Each such attempt is lacking in some aspect to become a widespread, practical solution, or is a partial solution in that it solves only a subset of the major problems associated with the increase in Internet traffic. Most of the previous solutions require billions of dollars in capital investment for a comprehensive solution. Many of these attempts are lacking in that much of the content on the Internet has become dynamically created per the user and the session of the user (this is what used to be called the “Web2.0” trend). This may be seen on the Amazon Web site and the Salesforce Web site, for example, where most of the page views on these Web sites is tailored to the viewer, and is thus different for any two viewers. This dynamic information makes it impossible for most of the solutions offered to date to store the content and provide it to others seeking similar content.


One solution that has been in use is called a “proxy”. FIG. 1 is a schematic diagram providing an example of use of a proxy within a network 2. A proxy, or proxy server 4, 6, 8 is a device that is placed between one or more clients, illustrated in FIG. 1 as client devices 10, 12, 14, 16, 18, 20, that request data, via the Internet 22, and a Web server or Web servers 30, 32, 34 from which they are requesting the data. The proxy server 4, 6, 8 requests the data from the Web servers 30, 32, 34 on their behalf, and caches the responses from the Web servers 30, 32, 34, to provide to other client devices that make similar requests. If the proxy server 4, 6, 8 is geographically close enough to the client devices 10, 12, 14, 16, 18, 20, and if the storage and bandwidth of the proxy server 4, 6, 8 are large enough, the proxy server 4, 6, 8 will speed up the requests for the client devices 10, 12, 14, 16, 18, 20 that it is serving.


It should be noted, however, that to provide a comprehensive solution for Internet surfing, the proxy servers of FIG. 1 would need to be deployed at every point around the world where the Internet is being consumed, and the storage size of the proxy servers at each location would need to be near the size of all the data stored anywhere on the Internet. The abovementioned would lead to massive costs that are impractical. In addition, these proxy solutions cannot deal well with dynamic data that is prevalent now on the Web.


There have been commercial companies, such as Akamai, that have deployed such proxies locally around the world, and that are serving a select small group of sites on the Internet. If all sites on the Web were to be solved with such a solution, the capital investment would be in the range of billions of dollars. In addition, this type of solution does not handle dynamic content.


To create large distribution systems without the large hardware costs involved with a proxy solution, “peer-to-peer file sharing” solutions have been introduced, such as, for example, BitTorrent. FIG. 2 is a schematic diagram providing an example of a peer-to-peer file transfer network 50. In the network 50, files are stored on computers of consumers, referred to herein as client devices 60. Each consumer can serve up data to other consumers, via the Internet 62, thus taking the load of serving off of the distributors and saving them the associated costs, and providing the consumer multiple points from which to download the data, referred to herein as peers 70, 72, 74, 76, 78, thus increasing the speed of the download. However, each such peer-to-peer solution must have some sort of index by which to find the required data. In typical peer-to-peer file sharing systems, because the index is on a server 80, or distributed among several servers, the number of files available in the system is not very large (otherwise, the server costs would be very large, or the lookup time would be very long).


The peer-to-peer file sharing solution is acceptable in file sharing systems, because there are not that many media files that are of interest to the mass (probably in the order of magnitude of millions of movies and songs that are of interest). Storing and maintaining an index of millions of entries is practical technically and economically. However, if this system were to be used to serve the hundreds of billions of files that are available on the Internet of today, the cost of storing and maintaining such an index would be again in the billions of dollars. In addition, these types of peer-to-peer file sharing systems are not able to deal with dynamic HTTP data.


In conclusion, a system does not exist that enables fast transmission of most of the data on the Internet, that does not incur tremendous costs, and/or that provides only a very partial solution to the problem of Internet traffic congestion. Thus, a heretofore unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.


SUMMARY OF THE INVENTION

The present system and method provides for faster and more efficient data communication within a communication network. Briefly described, in architecture, one embodiment of the system, among others, can be implemented as follows. A network is provided for accelerating data communication, wherein the network contains: at least one client communication device for originating a data request for obtaining the data from a data server; at least one agent communication device which is assigned to the data server for receiving the data request from the client communication device, wherein the agent keeps track of which client communication devices have received responses to data requests from the assigned data server; at least one peer communication device for storing portions of data received in response to the data request by the at least one client communication device, wherein the portions of data may be transmitted to the at least one client communication device upon request by the client communication device; and at least one acceleration server for deciding which agent communication device is to be assigned to which data server and providing this information to the at least one client communication device.


The present system and method also provides a communication device within a network, wherein the communication device contains: a memory; and a processor configured by the memory to perform the steps of: originating a data request for obtaining data from a data server; being assigned to a data server, referred to as an assigned data server; receiving a data request from a separate device within the network, and keeping track of which client communication devices within the network have received responses to data requests from the assigned data server; and storing portions of data received in response to the originated data request, wherein the portions of data may be transmitted to communication device upon request by the communication device.


Other systems, methods, features, and advantages of the present invention will be or become apparent to one with skill in the art upon examination of the following drawings and detailed description. It is intended that all such additional systems, methods, features, and advantages be included within this description, be within the scope of the present invention, and be protected by the accompanying claims.





BRIEF DESCRIPTION OF THE DRAWINGS

Many aspects of the invention can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present invention. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.



FIG. 1 is a schematic diagram providing a prior art example of use of a proxy within a network.



FIG. 2 is a schematic diagram providing a prior art example of a peer-to-peer file transfer network.



FIG. 3 is a schematic diagram providing an example of a communication network in accordance with the present invention.



FIG. 4 is a schematic diagram further illustrating a communication device of the communication network of FIG. 3.



FIG. 5 is a schematic diagram further illustrating the memory of FIG. 4.



FIG. 6 is a schematic diagram further illustrating elements of the acceleration application of FIG. 5, as well as communication paths of the acceleration application.



FIG. 7 is a chart further illustrating two of the main databases utilized within the communication network.



FIG. 8 is a flowchart illustrating operation of the acceleration system initializer module.



FIG. 9 is a flowchart further illustrating communication between different elements of the communication network.



FIG. 10 is a flowchart continuing the flowchart of FIG. 9 and focused on agent response to the HTTP request.



FIG. 11 is a flowchart continuing the flowchart of FIG. 10, which illustrates actions taken upon receipt of the list of peers, or single peer listing, from the agent.



FIG. 12 is a flowchart illustrating steps taken by an agent, client, or peer to determine whether a certain HTTP request is still valid.



FIG. 13 is a flowchart outlining operation of the acceleration server.



FIG. 14 is a flowchart further illustrating TCPIP acceleration in accordance with an alternative embodiment of the invention.



FIG. 15 is a flowchart further illustrating TCPIP acceleration in accordance with an alternative embodiment of the invention, detailing the communication between the client and the TCPIP server (read and write commands) after the connect phase has completed successfully.





DETAILED DESCRIPTION

The present system and method provides for faster and more efficient data communication within a communication network. An example of such a communication network 100 is provided by the schematic diagram of FIG. 3. The network 100 of FIG. 3 contains multiple communication devices. Due to functionality provided by software stored within each communication device, which may be the same in each communication device, each communication device may serve as a client, peer, or agent, depending upon requirements of the network 100, as is described in detail herein. It should be noted that a detailed description of a communication device is provided with regard to the description of FIG. 4.


Returning to FIG. 3, the exemplary embodiment of the network 100 illustrates that one of the communication devices is functioning as a client 102. The client 102 is capable of communication with one or more peers 112, 114, 116 and one or more agents 122. For exemplary purposes, the network contains three peers and one agent, although it is noted that a client can communicate with any number of agents and peers.


The communication network 100 also contains a Web server 152. The Web server 152 is the server from which the client 102 is requesting information and may be, for example, a typical HTTP server, such as those being used to deliver content on any of the many such servers on the Internet. It should be noted that the server 152 is not limited to being an HTTP server. In fact, if a different communication protocol is used within the communication network, the server may be a server capable of handling a different protocol. It should also be noted that while the present description refers to the use of HTTP, the present invention may relate to any other communication protocol and HTTP is not intended to be a limitation to the present invention.


The communication network 100 further contains an acceleration server 162 having an acceleration server storage device 164. As is described in more detail herein, the acceleration server storage device 164 has contained therein an acceleration server database. The acceleration server database stores Internet protocol (IP) addresses of communication devices within the communication network 100 having acceleration software stored therein. Specifically, the acceleration server database contains stored therein a list of communication devices having acceleration software stored therein that are currently online within the communication network 100. For each such agent, the acceleration server assigns a list of IP addresses.


In the communication network 100 of FIG. 3, the application in the client 102 is requesting information from the Web server 152, which is why the software within the communication device designated this communication device to work as a client. In addition, since the agent 122 receives the request from the client 102 as the communication device closest to the Web server 152, functionality of the agent 122, as provided by the software of the agent 122, designates this communication device to work as an agent. It should be noted, that in accordance with an alternative embodiment of the invention, the agent need not be the communication device that is closest to the Web server. Instead, a different communication device may be selected to be the agent.


Since the peers 112, 114, 116 contain at least portions of the information sought by the client 102 from the Web server 152, functionality of the peers 112, 114, 116, as provided by the software of the peers 112, 114, 116, designates these communication devices to work as peers. It should be noted that the process of designating clients, agents, and peers is described in detail herein. It should also be noted that the number of clients, agents, peers, acceleration servers, Web servers, and other components of the communication network 100 may differ from the number illustrated by FIG. 3. In fact, the number of clients, agents, peers, acceleration servers, Web servers, and other components of the communication network 100 are not intended to be limited by the current description.


Prior to describing functionality performed within a communication network 100, the following further describes a communication device 200, in accordance with a first exemplary embodiment of the invention. FIG. 4 is a schematic diagram further illustrating a communication device 200 of the communication network 100, which contains general components of a computer. As previously mentioned, it should be noted that the communication device 200 of FIG. 4 may serve as a client, agent, or peer.


Generally, in terms of hardware architecture, as shown in FIG. 4, the communication device 200 includes a processor 202, memory 210, at least one storage device 208, and one or more input and/or output (I/O) devices 240 (or peripherals) that are communicatively coupled via a local interface 250. The local interface 250 can be, for example but not limited to, one or more buses or other wired or wireless connections, as is known in the art. The local interface 250 may have additional elements, which are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications. Further, the local interface 250 may include address, control, and/or data connections to enable appropriate communications among the aforementioned components.


The processor 202 is a hardware device for executing software, particularly that stored in the memory 210. The processor 52 can be any custom made or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors associated with the communication device 200, a semiconductor based microprocessor (in the form of a microchip or chip set), a macroprocessor, or generally any device for executing software instructions.


The memory 210, which is further illustrated and described by the description of FIG. 5, can include any one or combination of volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.)) and nonvolatile memory elements (e.g., ROM, hard drive, tape, CDROM, etc.). Moreover, the memory 210 may incorporate electronic, magnetic, optical, and/or other types of storage media. Note that the memory 210 can have a distributed architecture, where various components are situated remote from one another, but can be accessed by the processor 202.


The software 212 located within the memory 210 may include one or more separate programs, each of which contains an ordered listing of executable instructions for implementing logical functions of the communication device 200, as described below. In the example of FIG. 4, the software 212 in the memory 210 at least contains an acceleration application 220 and an Internet browser 214. In addition, the memory 210 may contain an operating system (O/S) 230. The operating system 230 essentially controls the execution of computer programs and provides scheduling, input-output control, file and data management, memory management, and communication control and related services. It should be noted that, in addition to the acceleration application 220, Internet browser 214, and operating system 230, the memory 210 may contain other software applications.


While the present description refers to a request from the client originating from an Internet browser, the present invention is not limited to requests originating from Internet browsers. Instead, a request may originate from an email program or any other program that would be used to request data that is stored on a Web server, or other server holding data that is requested by the client device.


Functionality of the communication device 200 may be provided by a source program, executable program (object code), script, or any other entity containing a set of instructions to be performed. When a source program, then the program needs to be translated via a compiler, assembler, interpreter, or the like, which may or may not be included within the memory 210, so as to operate properly in connection with the operating system 230. Furthermore, functionality of the communication device 200 can be written as (a) an object oriented programming language, which has classes of data and methods, or (b) a procedure programming language, which has routines, subroutines, and/or functions.


The I/O devices 240 may include input devices, for example but not limited to, a keyboard, mouse, scanner, microphone, etc. Furthermore, the I/O devices 240 may also include output devices, for example but not limited to, a printer, display, etc. Finally, the I/O devices 240 may further include devices that communicate via both inputs and outputs, for instance but not limited to, a modulator/demodulator (modem; for accessing another device, system, or network), a radio frequency (RF) or other transceiver, a telephonic interface, a bridge, a router, etc.


When the communication device 200 is in operation, the processor 202 is configured to execute the software 212 stored within the memory 210, to communicate data to and from the memory 210, and to generally control operations of the communication device 200 pursuant to the software 212. The software 212 and the O/S 230, in whole or in part, but typically the latter, are read by the processor 202, perhaps buffered within the processor 202, and then executed.


When functionality of the communication device 200 is implemented in software, as is shown in FIG. 4, it should be noted that the functionality can be stored on any computer readable medium for use by or in connection with any computer related system or method. In the context of this document, a computer readable medium is an electronic, magnetic, optical, or other physical device or means that can contain or store a computer program for use by or in connection with a computer related system or method. The functionality of the communication device 200 can be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable medium” can be any means that can store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.


The computer readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection (electronic) having one or more wires, a portable computer diskette (magnetic), a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM, EEPROM, or Flash memory) (electronic), an optical fiber (optical), and a portable compact disc read-only memory (CDROM) (optical). Note that the computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via for instance optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory.


In an alternative embodiment, where the functionality of the communication device 200 is implemented in hardware, the functionality can be implemented with any or a combination of the following technologies, which are each well known in the art: a discrete logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit (ASIC) having appropriate combinational logic gates, a programmable gate array(s) (PGA), a field programmable gate array (FPGA), etc.


The at least one storage device 208 of the communication device 200 may be one of many different categories of storage device. As is described in more detail herein, the storage device 208 may include a configuration database 280 and a cache database 282. Alternatively, the configuration database 280 and cache database 282 may be located on different storage devices that are in communication with the communication device 200. The description that follows assumes that the configuration database 280 and cache database 282 are located on the same storage device, however, it should be noted that the present invention is not intended to be limited to this configuration.


The configuration database 280 stores configuration data that is common to all elements of the communication network 100 and is used to provide set up and synchronization information to different modules of the acceleration application 220 stored within the memory 210, as is described in further detail herein. The cache database 282 stores responses to HTTP requests that the communication device 200 has dispatched, either for its own consumption or on behalf of other elements of the communication network 100. As is explained in additional detail herein, the responses to HTTP requests are stored within the cache database 282 for future use by this communication device 200, or for other communication devices within the communication network 100 that need to retrieve this information and will use this communication device as either a peer or an agent.


In addition to the abovementioned, as is explained in further detail herein, the cache database 282 has stored therein a list of URLs that the communication device is aware of (i.e., has seen requests for). For each URL, the cache database 282 has stored therein the URL itself, HTTP headers returned by the Web Server for this URL, when the last time was that the contents of this URL was loaded directly from the Web Server, when the contents of the URL had last changed on the Web Server, as well as a list of chunks that contain the contents of this URL, and the chunks of data themselves. Chunks in the present description are defined as equally sized pieces of data that together form the whole content of the URL. It should be noted that while the present description provides for chunks being equally sized pieces of data, in accordance with an alternative embodiment of the invention, the chunks may instead be of different size.



FIG. 5 is a schematic diagram further illustrating the memory 210 of FIG. 4. As shown by FIG. 5, the memory 210 may be separated into two basic levels, namely, an operating system level 260 and an application level 270. The operating system level 260 contains the operating system 230, wherein the operating system 230 further contains at least one device driver 262 and at least one communication stack 264. The device drivers 262 are software modules that are responsible for the basic operating commands for various hardware devices of the communication device 200, such as the processor 202, the storage device 208 and the I/O devices 240. In addition, the communication stacks 264 provide applications of the communication device 200 with a means of communicating within the network 100 by implementing various standard communication protocols.


The application level 270 includes any application that is running on the communication device 200. As a result, the application level 270 includes the Internet browser 214, which is used to view information that is located on remote Web servers, the acceleration application 220, as described in more detail below, and any other applications 216 stored on the communication device 200.


As is explained in additional detail below, the acceleration application 220 intercepts the requests being made by applications of the communication device (client) that use the Internet, in order to modify the requests and route the requests through the communication network. There are various methods that may be used to intercept such requests. One such method is to create an intermediate driver 272, which is also located within the memory 210, that attaches itself to all communication applications, intercepts outgoing requests of the communication applications of the communication device 200, such as the Internet browser 214, and routes the requests to the acceleration application 220. Once the acceleration application 220 modifies the requests, routes the requests to other system elements on the communication network 100, and receives replies from other system elements of the communication network 100, the acceleration application 220 returns the replies to the intermediate driver 272, which provides the replies back to the requesting communication application.



FIG. 6 is a schematic diagram further illustrating elements of the acceleration application 220, as well as communication paths of the acceleration application 220. The acceleration application 220 contains an acceleration system initializer module 222, which is called when the acceleration application 220 is started. The acceleration system initializer module 222 is capable of initializing all elements of the communication device 200 The acceleration application 220 also contains three separate modules that run in parallel, namely, a client module 224, a peer module 226, and an agent module 228, each of which comes into play according to the specific role that the communication device 200 is partaking in the communication network 100 at a given time. The role of each module is further described herein.


The client module 224 provides functionality required when the communication device 200 is requesting information from the Web server 152, such as, for example, but not limited to, Web pages, data, video, or audio. The client module 224 causes the communication device 200 having the client module 224 therein to intercept the information request and pass the information request on to other elements of the communication network 100, such as, servers, agents or peers. This process is further described in detail herein.


The peer module 226 provides functionality required by the communication device 200 when answering other clients within the communication network 100 and providing the other clients with information that they request, which this communication device 200, having this peer module 226 therein, has already downloaded at a separate time. This process is further described in detail herein.


The agent module 228 provides functionality required when other communication devices of the communication network 100 acting as clients query this communication device 200, having this agent module 228 therein, as an agent, to obtain a list of peers within the communication network 100 that contain requested information. This process is further described in detail herein.


The acceleration application 220 interacts with both the configuration database 280 and the cache database 282 of the storage device 208. As previously mentioned herein, the configuration database 280 stores configuration data that may be common to all communication devices of the communication network 100 and is used to provide setup and synchronization information to different modules 222, 224, 226, 228 of the acceleration application 220 stored within the memory 210.


The cache database 282 stores responses to information requests, such as, for example, HTTP requests, that the communication device 200 has dispatched, either for its own consumption or on behalf of other elements of the communication network 100. The responses to HTTP requests are stored within the cache database 282 for future use by this communication device 200, or for other communication devices within the communication network 100 that need to retrieve this same information and will use this communication device 200 as either a peer or an agent. This process is described in detail herein.


Information stored within the cache database 282 may include any information associated with a request sent by the client. As an example, such information may include, metadata and actual requested data. For example, for an HTTP request for a video, the metadata may include the version of the Web server answering the request from the client and the data would be the requested video itself. In a situation where there is no more room for storage in the cache database, the software of the associated communication device may cause the communication device to erase previous data stored in order to clear room for the new data to store in the cache database. As an example, such previous data may include data that is most likely not to be used again. Such data may be old data or data that is known to no longer be valid. The communication device may choose to erase the least relevant data, according to any of several methods that are well known in the art.



FIG. 7 is a chart further illustrating two of the main databases utilized within the communication network 100, namely, the acceleration server database 164 and the cache database 282. As previously mentioned, the acceleration server database 164 stores IP addresses of communication devices located within the communication network 100, which have acceleration software stored therein. Specifically, the acceleration server database 164 contains stored therein a list of communication devices having acceleration software stored therein that are currently online within the communication network 100. The acceleration server assigns a list of IP addresses to each communication device functioning as an agent. Each communication device will be the agent for any Web servers whose IP address is in the range ‘owned’ by that communication device. As an example, when a first ever communication device goes online, namely, the first communication device as described herein having the acceleration application 220 therein, the acceleration server assigns all IP addresses in the world to this communication device, and this communication device will be the agent for any Web server. When a second communication device goes online it will share the IP address list with the first communication device, so that each of the communication devices will be responsible for a different part of the world wide web servers.


The cache database 282 of the communication device 200 has stored therein a list of URLs 286 of which the communication device 200 is aware. The communication device 200 becomes aware of a URL each time that the communication device 200 receives a request for information located at a specific URL. As shown by FIG. 7, for each URL 288 within the list of URLs 286, the cache database 282 stores: the URL itself 290; HTTP headers 292 returned by the Web Server 152 for this URL; when the last time 294 was that the contents of this URL were loaded directly from the Web Server 152; when the contents of the URL last changed 296 on the Web Server 152; and a list of chunks 298 that contain the contents of this URL, and the content of the chunk. As previously mentioned, chunks, in the present description, are defined as equally sized pieces of data that together form the entire content of the URL, namely, the entire content whose location is described by the URL. As a non-limiting example, a chunk size of, for example, 16 KB can be used, so that any HTTP response will be split up into chunks of 16 KB. In accordance with an alternative embodiment of the invention, if the last chunk of the response is not large enough to fill the designated chunk size, such as 16 KB for the present example, the remaining portion of the chunk will be left empty.


For each such chunk 300, the cache database 282 includes the checksum of the chunk 302, the data of the chunk 304 itself, and a list of peers 306 that most likely have the data for this chunk. As is described in additional detail herein, the data for the chunk may be used by other clients within the communication network 100 when other communication devices of the communication network 100 serve as peers to the clients, from which to download the chunk data.


For each chunk, a checksum is calculated and stored along side of the chunk itself. The checksum may be calculated in any of numerous ways known to those in the art. The purpose of having the checksum is to be able to identify data uniquely, whereas the checksum is the “key” to the data, where the data is the chunk. As an example, a client may want to load the contents of a URL, resulting in the agent that is servicing this request sending the checksums of the chunks to the client, along with the peers that store these chunks. It is to be noted that there could be a different peer for every different chunk. The client then communicates with each such peer, and provides the checksum of the chunk that it would like the peer to transmit back to the client. The peer looks up the checksum (the key) in its cache database, and provides back the chunk (data) that corresponds to this checksum (the key). As shown by FIG. 7, for each peer 308 within the list of peers 306, the cache database 282 includes the peer IP address 310, as well as the connection status 312 of the peer, which represents whether the peer 308 is online or not.


In accordance with one embodiment of the invention, the cache database 282 may be indexed by URL and by Checksum. Having the cache database indexed in this manner is beneficial due to the following reason. When the agent is using the cache database, the agent receives a request from a client for the URL that the client is looking for. In such a case the agent needs the cache database to be indexed by the URL, to assist in finding a list of corresponding peers that have the chunks of this URL. When the peers are using this cache database, the peers obtain a request from the client for a particular checksum, and the peers need the database to be indexed by the checksum so that they can quickly find the correct chunk. Of course, as would be understood by one having ordinary skill in the art, the cache database may instead be indexed in any other manner.


Having described components of the communication network 100, the following further describes how such components interact and individually function. FIG. 8 is a flowchart 300 illustrating operation of the acceleration system initializer module 222 (hereafter referred to as the initializer 222 for purposes of brevity). It should be noted that any process descriptions or blocks in flowcharts should be understood as representing modules, segments, portions of code, or steps that include one or more instructions for implementing specific logical functions in the process, and alternative implementations are included within the scope of the present invention in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those reasonably skilled in the art of the present invention.


The initializer 222 is the first element of the communication device 200 to operate as the communication device 200 starts up (block 302). As the initializer 222 starts, it first communicates with the acceleration server 162 to sign up with the acceleration server 162. This is performed by providing the acceleration server 162 with the hostname, and all IP addresses and media access control (MAC) addresses of the interfaces on the communication device 200 having the initializer 222 thereon.


In accordance with an alternative embodiment of the invention, as shown by block 304, the initializer 222 checks with the acceleration server 162 whether a more updated version of the acceleration application software is available. This may be performed by any one of many known methods, such as, but not limited to, by providing the version number of the acceleration application software to the acceleration server 162. The message received back from the acceleration server 162 indicates whether there is a newer version of the acceleration application software or not. If a newer version of the acceleration application software exists, the initializer 222 downloads the latest version of the acceleration application software from the acceleration server 162, or from a different location, and installs the latest version on the communication device 200. In addition to the abovementioned, the initializer 222 may also schedule additional version checks for every set period of time thereafter. As an example, the initializer 222 may check for system updates every two days.


As shown by block 306, the initializer 222 then redirects outgoing network traffic from the communication device 200 to flow through the acceleration application 162. As previously mentioned, one way to redirect the outgoing network traffic is to insert an intermediate driver 212 that intercepts and redirects the traffic. It should be noted that there are many other ways to implement this redirection, which are well known to those having ordinary skill in the art.


As shown by block 308, the initializer 222 then launches the client module 224 of the communication device 200, and configures the client module 224 of the communication device 200 to intercept to all outgoing network communications of the communication device 200 and route the outgoing network communications to the client module 224, from the intermediate driver 272 or other routing method implemented. This is performed so that the client module 224 is able to receive all network traffic coming from the network applications, modify the network traffic if necessary, and re-route the traffic. As is known by those having ordinary skill in the art, in order to re-route the traffic, the traffic needs to be modified, as an example, to change the destination of requests.


As shown by block 310, the initializer 222 then launches the agent module 228 and the peer module 226 to run on the communication device 200. The agent module 228 and peer module 226 listen on pre-determined ports of the communication device 200, so that incoming network traffic on these ports gets routed to the agent module 228 and peer module 226. As is explained in further detail herein, the abovementioned enables the communication device 200 to function as an agent and as a peer for other communication devices within the communication network 100, as needed.



FIG. 9 is a flowchart 350 further illustrating communication between different elements of the communication network 100, in accordance with the present system and method for providing faster and more efficient data communication.


As shown by block 352, an application running on the client 200 initiates a request for a resource on a network. Such a request may be, for example, “GET http://www.aol.com/index.html HTTP/1.1”. The request may come from an Internet browser 214 located on the client 200, where the Internet browser 214 is loading a page from the Internet, an application that wants to download information from the Internet, fetch or send email, or any other network communication request.


Through the intermediate driver 272, or other such mechanism as may be implemented that is re-routing the communication to the client module 224 of the client 200, the resource request is intercepted by the client module 224 that is running on the client 200 (block 354). The client module 224 then looks up the IP address of the server 152 that is the target of the resource request (e.g., the IP address of the Web server that is the host of www.aol.com in the example above), and sends this IP address to the acceleration server 162 (block 356) in order to obtain a list of communication devices that the client 200 can use as agents (hereafter referred to as agents). It should be noted that the process of performing an IP lookup for a server is known by one having ordinary skill in the art, and therefore is not described further herein.


In response to receiving the IP address of the server 152, the acceleration server 162 prepares a list of agents that may be suitable to handle the request from this IP address (block 358). The size of the list can differ based on implementation. For exemplary purposes, the following provides an example where a list of five agents is prepared by the acceleration server 162. The list of agents is created by the acceleration server 162 by finding the communication devices of the communication network 100 that are currently online, and whose IP address is numerically close to the IP of the destination Web server 152. A further description of the abovementioned process is described here in.


As shown by block 360, the client module 224 then sends the original request (e.g., “GET http://www.aol.com/index.html HTTP/1.1”) to all the agents in the list received from the acceleration server 162 in order to find out which of the agents in the list is best suited to be the one agent that will assist with this request.


It should be noted that, in accordance with an alternative embodiment of the invention, the communication device 200 may be connected to a device that is actually requesting data. In such an alternative embodiment, the communication device would be a modular device connected to a requesting device, where the requesting device, such as, for example, a personal data assistant (PDA) or other device, would request data, and the communication device connected thereto, either through a physical connection, wireless connection, or any other connection, would receive the data request and function as described herein. In addition, as previously mentioned, it should be noted that the HTTP request may be replaced by any request for resources on the Web.



FIG. 10 is a flowchart continuing the flowchart 380 of FIG. 9 and focused on agent response to the request. As shown by block 382, upon receiving the request from the client 200, each agent that received the request from the client responds to the client 200 with whether it has information regarding the request, which can help the client to download the requested information from peers in the network. Specifically, each agent responds with whether the agent has seen a previous request for this resource that has been fulfilled. In such a case, the agent may then provide the client with the list of peers and checksums of the chunks that each of them have.


As shown by block 384, the client then decides which of the agents in the list to use as its agent for this particular information request. To determine which agent in the list to use as its agent for the particular information request, the client may consider multiple factors, such as, for example, factoring the speed of the reply by each agent and whether that agent does or does not have the information required. There are multiple ways to implement this agent selection, one practical way being to start a timer of a small window of time, such as, for example, 5 ms, after receiving the first response from the agents, and after the small window, choosing from the list of agents that responded, the agent that has the information about the request, or in the case that none of the agents responded, to choose the first agent from the list received from the acceleration server 162.


As shown by block 386, after selecting an agent, the client notifies the selected agent that it is going to use it for this request, and notifies the other agents that they will not be used for this request. The client then sends the selected agent a request for the first five chunks of data of the original information request (block 388). By specifying to the selected agent the requested chunks by their order in the full response, the client receives the peer list and checksums of the requested chunks from the selected agent. As an example, for the first five chunks the client will ask the selected agent for chunks one through five, and for the fourth batch of five chunks the client will ask the agent for chunks sixteen through twenty. As previously mentioned, additional or fewer chunks may be requested at a single time.


As shown by block 390, after receiving the request from the client, the selected agent determines whether it has information regarding the requested chunks of data by looking up the request in its cache database and determining if the selected agent has stored therein information regarding peers of the communication network that have stored the requested data of the request, or whether the selected agent itself has the requested data of the request stored in its memory. In addition to determining if the selected agent contains an entry for this request in its database, the selected agent may also determine if this information is still valid. Specifically, the selected agent determines whether the data that is stored within the memory of the selected agent or the memory of the peers, still mirrors the information that would have been received from the server itself for this request. A further description of the process utilized by the selected agent to determine if the information is still valid, is described in detail herein.


As shown by block 392, if the information (requested data of the request) exists and is still valid, then the agent prepares a response to the client, which includes for each of the chunks: (i) the checksum of the chunk; (ii) a list of peers that according to the database of the selected agent contains these chunks; and (iii) if these are the first five chunks of the information, then the selected agent also provides the specific protocol's headers that would have been received from the server, had the initial request from the client been made directly to the server.


As shown by block 394, the list of peers for each chunk is sorted by geographical proximity to the requesting client. In accordance with the present example, only the five closest peers are kept in the list for every chunk, and the rest of the peers are discarded from this list. As shown by block 396, the prepared response, namely, the list of closest peers, is sent back to the client. It should be noted that, if this were the last set of chunks to be provided for this request, then it would be beneficial to include information about this to the client.


If the selected agent discovers that it does not have information about this request, or if the selected agent discovers that the information it has is no longer valid, the selected agent needs to load the information directly from the server in order to be able to provide an answer to the requesting client. As shown by block 400, the selected agent then sends the request directly to the server. The selected agent then stores the information it receives from the server (both the headers of the request, as well as chunks of the response itself) in its database, for this particular response to the client, as well as for future use to other clients that may request this data (block 402). The selected agent then prepares a response (list) for the client, where the response includes the protocol headers (if these are the first five chunks), and the checksums of the five chunks, and provides itself as the only peer for these chunks (block 404). This list is then sent back to the client (block 406).



FIG. 11 is a flowchart 420 continuing the flowchart of FIG. 10, which illustrates actions taken upon receipt of the list of peers, or single peer listing, from the agent. As shown by block 422, the client receives the response from the agent (including the list of chunks and their corresponding data, including peers and other information previously mentioned) and, for each of the five chunks, the client sends a request to each of the peers listed for the chunk to download the chunk. The chunk request that the client sends to each of the peers is the checksum of the data that the client seeks to receive, which is the key (identifier) of the chunk.


As shown by block 424, the peers then respond regarding whether they still have the data of the chunk. As an example, some of the peers may not currently be online, some may be online but may have discarded the relevant information, and some may still have the relevant information, namely, the chunk. As shown by block 426, the client then selects the quickest peer that responds with a positive answer regarding the requested information, the client lets that peer know that it is chosen to provide the client with the chunk, and the client notifies the other peers that they are not chosen.


As shown by block 428, the chosen peer then sends the chunk to the client. It should be noted that if no peers answer the request of the client, the client goes back to the agent noting that the peers were all negative, and the agent either provides a list of 5 other agents, if they exist, or the agent goes on to download the information directly from the Web server as happens in the case where no peers exist as described above.


The client then stores the chunks in its cache for future use (block 430), when the client may need to provide the chunks to a requesting communication device when acting as a peer for another client that is looking for the same information. As shown by block 432, if some of the chunks were not loaded from any of the peers, the client requests the chunks again from the agent in a next round of requests, flagging these chunks as chunks that were not loadable from the client list of peers. In this situation, the agent will load the data directly from the server and provide it back to the client.


The client then acknowledges to the agent which of the chunks it received properly (block 434). The agent then looks up these chunks in the database of the agent, and adds the client to the list of peers for these chunks, specifically, since this client is now storing these chunks, and can provide these chunks to other clients that turn to it as a peer (block 436).


As shown by block 438, the client then passes the data on to the Web browser or other application of the client that made the original request, for it to use as it had originally intended. The client then checks whether all of the chunks for this request were received (block 440), by checking the flag set by the agent. Specifically, when the agent is providing the list of the last 5 chunks, the agent includes that information as part of its reply to the client, which is referred to herein as a flag. This information is what enables the client to know that all information has been received for a particular resource request.


If the last received chunks were not the last chunks for this request, the processing flow of the client continues by returning to the functionality of block 384 of FIG. 10, but instead sending the chosen agent a request for the next five chunks of data of the original information request. Alternatively, if all chunks for this request were received, the request is complete, and the flow starts again at block 352 of FIG. 9.



FIG. 12 is a flowchart 500 illustrating steps taken by an agent, client, or peer to determine whether a certain HTTP request is still valid. Specifically, the following provides an example of how the agent, client, or peer can determine whether particular data that is stored within the memory of the agent, or the memory of a peer or client, still mirrors the information that is currently on the Web server. As shown by block 502, the HTTP request is looked up in the cache database of the agent, client or peer that is checking the validity of the HTTP request. As an example, the HTTP protocol, defined by RFC 2616, outlines specific methods that Web servers can define within the HTTP headers signifying the validity of certain data, such as, but not limited to, by using HTTP header information such as “max age” to indicate how long this data may be cached before becoming invalid, “no cache” to indicate that the data may never be cached, and using other information.


As shown by block 504, these standard methods of validation are tested on the HTTP request information in question. As shown by block 506, a determination is made whether the requested information that is stored is valid or not. If the requested information is valid, a “VALID” response is returned (block 508). Alternatively, if the requested information is not valid, an HTTP conditional request is sent to the relevant Web server, to determine if the data stored for this request is still valid (block 510). If the data stored for this request is still valid, a “VALID” response is returned (block 508). Alternatively, if the data stored for this request is not valid, an “INVALID” response is returned (block 514). It should be noted, that the abovementioned description with regard to FIG. 12 is an explanation of how to check if HTTP information is still valid. There are similar methods of determining validity for any other protocol, which may be utilized, and which those having ordinary skill in the art would appreciate and understand.



FIG. 13 is a flowchart 550 outlining operation of the acceleration server, whose main responsibility in the present system and method is to provide clients with information regarding which agents serve which requests, and to keep the network elements all up to date with the latest software updates. As shown by block 552, the acceleration server sends “keep alive” signals to the network elements, and keeps track within its database as to which network elements are online. As shown by block 554, the acceleration server continues to wait for a client request and continues to determine if one is received.


Once a request is received, the acceleration server tests the type of request received (block 556). If the client request is to sign up the client within the network, an event that happens every time that the client starts running on its host machine, then that client is added to the list of agents stored on the acceleration server, sorted by the IP address of the client (block 558).


If the request is to find an agent to use for a particular request, the acceleration server creates a new agent list, which is empty (block 560). The acceleration server then searches the agent database for the next 5 active agents whose IP address is closest to the IP address of the server who is targeted in the request (block 562). In this context, 192.166.3.103 is closer to 192.166.3.212 than to 192.167.3.104. The acceleration server then sends this agent list to the client (block 564).


If instead, the request is to check the version of the latest acceleration software then the acceleration server sends that network element (client, peer or agent) the version number of the latest existing acceleration software version, and a URL from where to download the new version, for the case that the element needs to upgrade to the new version (block 566).


While the abovementioned example is focused on HTTP requests for data, as previously mentioned, other protocol requests are equally capable of being handled by the present system and method. As an example, in separate embodiments the acceleration method described may accelerate any communication protocol at any OSI layer (SMTP, DNS, UDP, ETHERNET, etc.). In the following alternative embodiment, it is illustrated how the acceleration method may accelerate TCPIP. As is known by those having ordinary skill in the art, TCPIP is a relatively low-level protocol, as opposed to HTTP, which is a high level protocol. For purposes of illustration of TCPIP communication, reference may be made to FIG. 3, wherein the Web server is a TCPIP server.


In TCPIP there are three communication commands that are of particular interest, namely, connect, write, and read. Connect is a command issued by an application in the communication device that is initiating the communication to instruct the TCPIP stack to connect to a remote communication device. The connect message includes the IP address of the communication device, and the port number to connect to. An application uses the write command to instruct the TCPIP stack to send a message (i.e., data) to a communication device to which it is connected. In addition, an application uses the read command to ask the TCPIP stack to provide the message that was sent from the remote communication device to which it is connected. A communication session typically exists of a connect, followed by a read and write on both sides.



FIG. 14 is a flowchart 600 further illustrating TCPIP acceleration in accordance with this alternative embodiment of the invention. As shown by blocks 601 and 602 when an application of the communication device makes a request to the communications stack to connect with the TCPIP server, that communication is intercepted by the acceleration application.


To find an agent, upon receiving that connect message from the communication device application, which includes the IP address of the TCPIP server and the port to connect to, the acceleration application in the client makes a request to the acceleration server to find out who the agent for the communication with the TCPIP server is. This step is performed in a similar manner to that described with regard to the main HTTP embodiment of the invention (block 604). As shown by block 606, the server then provides the client with a list of agents, for example, a primary agent and four others.


To establish a connection, as shown by block 608, the client issues a TCPIP connect with the primary agent or one of the other agents if the primary agent does not succeed, to create a connection with the agent. The client then sends to the agent the IP address of the TCPIP server and connection port that were provided by the communication device application (block 610). As shown by block 612, that agent in turn issues a TCPIP connect to the TCPIP server to the port it received from the client, to create a connection with the agent.



FIG. 15 is a flowchart 800 further illustrating TCPIP acceleration in accordance with this alternative embodiment of the invention, detailing the communication between the client and the TCPIP server (read and write commands) after the connect phase has completed successfully.


As shown by block 802, if the network application within the client wants to send a message to the TCPIP server, the network application within the client writes the message to the TCPIP stack in the operating system of the client. This WRITE command is received by the acceleration application of the client and handled in the manner described below. If the TCPIP server wants to send a message to the client, the TCPIP server writes the message to the TCPIP stack of TCPIP operating system, on the connection to the agent, since this agent is where the server received the original connection. This WRITE command is received by the acceleration application of the agent and handled in the manner described below.


When the acceleration application of the client receives a message from the network application of the client to be sent to the agent, or when the acceleration application of the agent receives a message from the connection to the TCPIP server that is to be sent to the client, the acceleration application proceeds to send the message to the communication device on the other side. For instance, if the client has intercepted the message from the communication application, the client sends the message to the agent, and if it is the agent that intercepted the message from the connection to the TCPIP server, such as the TCPIP server sending a message that is intended for the communication with client, the agent sends the message to the client in the following manner:


As shown by block 804, the acceleration application breaks up the content of the message to chunks and calculates the corresponding checksums, in the same manner as in the main embodiment described herein. The acceleration application then looks up each checksum in its cache database (block 806). As shown by block 808, the acceleration application checks if the checksum exists in the cache database. Hit does, then, as shown by block 810, the acceleration application prepares a list of peers that have already received the chunk of the checksum in the past (if any), and adds the communication device of the other side to the list of communication devices that have received this chunk (adds it to the peer list of the checksum in its database), to be provided to other communication devices requesting this information in the future. As shown by block 812, the list of peers is sent to the receiving communication device, which, as shown by block 814 retrieves the chunks from the peers in the list received, in the same manner as in the main embodiment.


If the checksum does not exist within the cache database of the sending communication device then, as shown by block 820, the acceleration application adds the checksum and chunk to its cache database, sends the chunk to the communication device on the other side, and adds the other communication device to the list of peers for that checksum in its database.


As shown by block 816, a determination is then made as to whether all chunks have been received. If all chunks have not been received, the process continues on again from block 806.


Once all data has been received, as shown by block 818, the acceleration application passes the data on to the requester. Specifically, in the client, the acceleration application passes on the complete data to the communication application, and in the agent, the acceleration application passes on the complete data to the requesting TCPIP server.


It should be emphasized that the above-described embodiments of the present invention are merely possible examples of implementations, merely set forth for a clear understanding of the principles of the invention. Many variations and modifications may be made to the above-described embodiments of the invention without departing substantially from the spirit and principles of the invention. All such modifications and variations are intended to be included herein within the scope of this disclosure and the present invention and protected by the following claims.

Claims
  • 1. A method for use with a first web server that is configured to respond to Hypertext Transfer Protocol (HTTP) requests and is storing a first web-page that is identified by a first Uniform Resource Locator (URL), the method comprising: executing, by a first client device, a web browser application;periodically sending, by the first client device to a first server that is not the first web server over the Internet, a first message associated with a status or an availability of the first client device;sending, by the first client device to the first web server over an Internet, a first Hypertext Transfer Protocol (HTTP) request that comprises the first URL;receiving, by the first client device from the first web server over the Internet, in response to the HTTP request, the first web-page; andsending, by the first client device to the first server over the Internet, the received first web-page.
  • 2. The method according to claim 1, wherein the first client device is identified by a Media Access Control (MAC) address or a hostname, and wherein the method further comprising sending, by the first client device, during, as part of, or in response to, a start-up or power-up of the first client device, a second message to the first server, and wherein the second message comprises an IP address, the MAC address, or the hostname, of the first client device.
  • 3. The method according to claim 2, for use with a first application that is stored in the first client device and that is associated with a first version number, wherein the second message comprises the first version number.
  • 4. The method according to claim 3, for use with a second application that is a version of the first application, that is stored in the first server, and that is associated with a second version number, wherein the method further comprising receiving, by the first client device from the first server, in response to the second message, a third message that comprises the second version number.
  • 5. The method according to claim 4, wherein the method further comprising downloading, by the first client device from the first server over the Internet, in response to the second message, the second application, and installing the second application in the first client device as a replacement for the first application.
  • 6. The method according to claim 1, further comprising periodically receiving, by the first client device from the first server over the Internet, a second message.
  • 7. The method according to claim 6, wherein the periodically sending of the first message is in response to the periodically receiving of the second message.
  • 8. The method according to claim 1, wherein the executing of the web browser comprises identifying, by the web browser, the first HTTP request, and wherein the sending of the HTTP request is in response to the identifying.
  • 9. The method according to claim 8, further comprising receiving, by the first client device over the Internet, the first HTTP request, and wherein the identifying is in response to the receiving of the first HTTP request.
  • 10. The method according to claim 1, further comprising storing, by the first client device in response to the receiving from the first web server, the first web-page, so that the first client device provides the first web-page without accessing the first web-page.
  • 11. The method according to claim 10, further comprising executing, by the first client device, a web browser application or an email application.
  • 12. The method according to claim 1, further comprising determining, by the first client device, that the received first web-page, is valid.
  • 13. The method according to claim 12, wherein the determining is based on checking a received HTTP header according to, or based on, IETF RFC 2616.
  • 14. The method according to claim 1, wherein the first message comprises a ‘keeping alive’ message.
  • 15. The method according to claim 1, further comprising executing, by the first client device, a client operating system stored in the first client device.
  • 16. The method according to claim 1, further for use with a second web server that is configured to respond to HTTP requests and is storing a second web-page that is identified by a second URL, the method further comprising: executing, by the first client device, a web browser application;identifying, as part of the executing of the web browser, a second HTTP request that comprises the second URL;sending, by the first client device to the second web server over an Internet, the second HTTP request; andreceiving, by the first client device from the second web server over the Internet, in response to the second HTTP request, the second web-page.
  • 17. The method according to claim 1, wherein the first server is a Transmission Control Protocol/Internet Protocol (TCP/IP) server that communicates over the Internet based on, or according to, using TCP/IP protocol or connection, and wherein the first client device is a Transmission Control Protocol/Internet Protocol (TCP/IP) client that communicates with the first server over the Internet based on, or according to, TCP/IP protocol.
  • 18. The method according to claim 1, wherein the first client device communicates over the Internet based on, or according to, one out of UDP, DNS, TCP, FTP, POP #, SMTP, or SQL standards.
  • 19. The method according to claim 1, wherein the first web-page comprises audio or video content.
  • 20. The method according to claim 1, for use with a second web server that is Hypertext Transfer Protocol (HTTP) server, the second web server responds to HTTP requests and stores a third web-page identified by a third URL, the method by the first client device further comprising: receiving, over the Internet, the third URL;sending, to the second web server over the Internet, in response to the receiving, the third URL; andreceiving, from the second web server over the Internet, in response to the sending, the third web-page.
  • 21. The method according to claim 1, further comprising establishing, by the first client device, a Transmission Control Protocol (TCP) connection over the Internet with the first server.
  • 22. The method according to claim 1, wherein the periodically sending comprises exchanging ‘keep alive’ messages with the first server when the first client device in online.
  • 23. The method according to claim 1, further comprising executing, by the first client device, an email application.
  • 24. The method according to claim 1, wherein the steps are sequentially executed.
  • 25. The method according to claim 1, wherein the first client device comprises a wireless modem for Radio-Frequency (RF) communication, and wherein the sending and the receiving is using the RF communication.
  • 26. A non-transitory computer readable medium containing computer instructions that, when executed by a computer processor, cause the processor to perform the method according to claim 1.
CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation application of U.S. non-provisional patent application Ser. No. 14/025,109, filed Sep. 12, 2013, which is a divisional application of U.S. non-provisional patent application entitled “SYSTEM AND METHOD FOR PROVIDING FASTER AND MORE EFFICIENT DATA COMMUNICATION” having Ser. No. 12/836,059, filed Jul. 14, 2010 and issued as U.S. Pat. No. 8,560,604 on Oct. 15, 2013, and claims priority to U.S. provisional patent application entitled “SYSTEM AND METHOD FOR REDUCING INTERNET CONGESTION,” having Ser. No. 61/249,624, filed Oct. 8, 2009, which are hereby incorporated herein by reference in their entirety.

US Referenced Citations (770)
Number Name Date Kind
3922494 Cooper et al. Nov 1975 A
4347827 Lo Cascio Sep 1982 A
4855894 Asahi Aug 1989 A
4937781 Lee et al. Jun 1990 A
5519693 Galuszka May 1996 A
5577243 Sherwood et al. Nov 1996 A
5734829 Robinson Mar 1998 A
5758195 Balmer May 1998 A
5826014 Coley Oct 1998 A
5974566 Ault Oct 1999 A
6012083 Savitzky Jan 2000 A
6012090 Chung Jan 2000 A
6061278 Kato et al. May 2000 A
6085193 Malkin Jul 2000 A
6134584 Chang Oct 2000 A
6154782 Kawaguchi Nov 2000 A
6185625 Tso Feb 2001 B1
6240444 Fin May 2001 B1
6266704 Reed Jul 2001 B1
6173330 Guo et al. Sep 2001 B1
6311216 Smith Oct 2001 B1
6345303 Knauerhase et al. Feb 2002 B1
6351775 Yu Feb 2002 B1
6356934 Delph Mar 2002 B1
6389422 Doi May 2002 B1
6389462 Cohen May 2002 B1
6397259 Lincke et al. May 2002 B1
6412008 Fields et al. Jun 2002 B1
6421733 Tso Jul 2002 B1
6449640 Haverstock Sep 2002 B1
6466470 Chang Oct 2002 B1
6477581 Carpenter et al. Nov 2002 B1
6484149 Jammes et al. Nov 2002 B1
6513061 Ebata Jan 2003 B1
6519693 Debey Feb 2003 B1
6578066 Logan et al. Jun 2003 B1
6601098 Case et al. Jul 2003 B1
6658463 Dillon et al. Dec 2003 B1
6661799 Molitor Dec 2003 B1
6665715 Houri Dec 2003 B1
6687732 Bector Feb 2004 B1
6701374 Gupta Mar 2004 B2
6785705 Kocherlakota Aug 2004 B1
6792461 Hericourt Sep 2004 B1
6795848 Border et al. Sep 2004 B1
6820133 Grove Nov 2004 B1
6829638 McBrearty Dec 2004 B1
6842463 Drwiega Jan 2005 B1
6868453 Watanabe Mar 2005 B1
6895011 Lassers May 2005 B1
6941562 Gao et al. Sep 2005 B2
6961783 Cook Nov 2005 B1
7007228 Carro Feb 2006 B1
7010526 Denesuk et al. Mar 2006 B2
7020667 Guest et al. Mar 2006 B2
7047315 Srivastava May 2006 B1
7080158 Squire Jul 2006 B1
7009927 Cudd Aug 2006 B2
7120666 McCanne et al. Oct 2006 B2
7139276 Sitaraman et al. Nov 2006 B1
7139557 Tang et al. Nov 2006 B2
7139579 Hatano Nov 2006 B2
7203741 Marco et al. Apr 2007 B2
7234059 Beaver Jun 2007 B1
7240100 Wein et al. Jul 2007 B1
7246272 Cabezas Jul 2007 B2
7353279 Durvasula et al. Apr 2008 B2
7381366 Carter Jun 2008 B2
7401115 Arsenault Jul 2008 B1
7464123 Croker Dec 2008 B2
7543018 Appelman Jun 2009 B2
7558942 Chen et al. Jul 2009 B1
7620703 Shteyn Nov 2009 B1
7639682 Suzuki et al. Dec 2009 B2
7673048 O'Toole Mar 2010 B1
7702784 Berstis Apr 2010 B2
7706362 Senthilnathan Apr 2010 B1
7719971 Issa May 2010 B1
7742485 Zhang Jun 2010 B2
7751628 Reisman Jul 2010 B1
7761500 Wei et al. Jul 2010 B1
7734777 Raja Aug 2010 B2
7783777 Pabla Aug 2010 B1
7788378 Rao Aug 2010 B2
7801824 Bryar Sep 2010 B1
7805517 Shim Sep 2010 B2
7818430 Zuckerman Oct 2010 B2
7831720 Noureddine Nov 2010 B1
7853472 Al-Abdulqader Dec 2010 B2
7860988 Aoki Dec 2010 B2
7865585 Samuels Jan 2011 B2
7877511 Berger Jan 2011 B1
7886050 Raja et al. Feb 2011 B2
7890547 Hotti Feb 2011 B2
7890624 Bivens Feb 2011 B2
7894431 Goring Feb 2011 B2
7917755 Giliyaru Mar 2011 B1
7929429 Bornstein Apr 2011 B2
7929535 Chen et al. Apr 2011 B2
7970835 St. Jacques Jun 2011 B2
7984110 Raman Jul 2011 B1
8014292 Breau et al. Sep 2011 B1
8041784 Amidon Oct 2011 B1
8108554 Masters Jan 2012 B1
8135912 Shribman et al. Mar 2012 B2
8144611 Agarwal Mar 2012 B2
8156275 de Cesare Apr 2012 B2
8171101 Gladwin et al. May 2012 B2
8306022 Cranor Nov 2012 B1
8307089 Rothschild Nov 2012 B1
8347405 Backhouse Jan 2013 B2
8375434 Cottrell Feb 2013 B2
8453227 Aiello May 2013 B2
8458786 Kailash Jun 2013 B1
8464350 Kanevsky Jun 2013 B2
8479251 Feinleib et al. Jul 2013 B2
8490059 Huang et al. Jul 2013 B2
8499059 Stoyanov Jul 2013 B2
8514812 Tang et al. Aug 2013 B2
8516084 Grieve Aug 2013 B1
8527631 Liang Sep 2013 B1
8533628 Rohrabaugh Sep 2013 B2
8543721 White et al. Sep 2013 B2
8577724 Gandhi Nov 2013 B1
8595786 Choi Nov 2013 B2
8612641 Bozarth et al. Dec 2013 B1
8627422 Hawkes Jan 2014 B2
8639630 Fomenko et al. Jan 2014 B2
8639748 Kazerani et al. Jan 2014 B2
8769035 Resch et al. Jan 2014 B2
8655838 Wright Feb 2014 B2
8655985 De Feb 2014 B2
8719430 Van Ackere May 2014 B2
8719505 Shribman et al. Jun 2014 B2
8793347 Chow et al. Jul 2014 B2
8832179 Owen et al. Sep 2014 B2
8832260 Raja et al. Sep 2014 B2
8838811 Chen Sep 2014 B2
8874594 Want et al. Oct 2014 B2
8935418 Knouse et al. Jan 2015 B2
8935798 Smith Jan 2015 B1
9201808 Shribman et al. Jan 2015 B2
8972602 Mithyantha Mar 2015 B2
8990357 Graham-Cumming Mar 2015 B2
8996856 Amit Mar 2015 B2
9015335 Gigliotti Apr 2015 B1
9049247 Holloway Jun 2015 B2
9059938 Strand Jun 2015 B1
9071668 Brueck et al. Jun 2015 B2
9100320 Hsy Aug 2015 B2
9122554 Callaghan Sep 2015 B2
9154557 Lev-Ran Oct 2015 B2
9177157 Binder Nov 2015 B2
9210094 Warren et al. Dec 2015 B1
9237210 Liu Jan 2016 B2
9253164 Gouge Feb 2016 B2
9313100 Jenkins Apr 2016 B1
9374244 Reed Jun 2016 B1
9380028 Rizzo Jun 2016 B2
9418243 Bauer Aug 2016 B2
9380523 Mijar Sep 2016 B1
9438564 Weng et al. Sep 2016 B1
9444903 Nuaimi Sep 2016 B2
9529911 Richard et al. Dec 2016 B2
9584529 Su Feb 2017 B2
9634994 Prince Apr 2017 B2
9654581 Pollack et al. May 2017 B2
9705959 Strand Jul 2017 B1
9742866 Shribman Aug 2017 B2
9769121 Joy et al. Sep 2017 B2
9838497 Lawrence Dec 2017 B2
9880881 Perez et al. Jan 2018 B1
9979674 Kumar May 2018 B1
9990295 Shribman et al. Jun 2018 B2
10069852 Turgeman et al. Sep 2018 B2
10104165 Killian Oct 2018 B1
10110606 Mizhar Oct 2018 B2
10182466 Nirantar Jan 2019 B2
10277711 Shribman Apr 2019 B2
10361911 Brandwine Jul 2019 B2
10404791 Puri Sep 2019 B2
10410244 Toval Sep 2019 B2
10484337 Subbarayan Nov 2019 B2
10484510 Shribman Nov 2019 B2
10511630 Weiss et al. Dec 2019 B1
10560509 Lo Feb 2020 B2
10594660 Smith Mar 2020 B2
10601948 Juravicius Mar 2020 B1
10601984 Olligschlaeger Mar 2020 B2
10637956 Juravicius Apr 2020 B1
10645654 Backholm May 2020 B1
10650166 Sundberg May 2020 B1
10652357 Shribman et al. May 2020 B2
10735322 Alstad et al. Aug 2020 B2
10743051 Reed Aug 2020 B1
10749893 Dahlberg Aug 2020 B1
10771524 Long Sep 2020 B1
10798209 Juravicius et al. Oct 2020 B1
10805181 Boutros et al. Oct 2020 B2
10887313 Mitevski Jan 2021 B2
10972434 Kupisiewicz et al. Apr 2021 B2
11140235 Vilcinskas et al. Oct 2021 B1
11258872 Gogel Feb 2022 B1
11424946 Shribman et al. Aug 2022 B2
11469992 Gerstel Oct 2022 B2
11614893 Kannan et al. Mar 2023 B2
11635877 Lopez et al. Apr 2023 B2
11658876 Hooda et al. May 2023 B2
11677853 Acharya et al. Jun 2023 B2
11757961 Shribman et al. Sep 2023 B2
11818096 Jain et al. Nov 2023 B2
11831532 Nakamura et al. Nov 2023 B2
20010011312 Chu Aug 2001 A1
20010033583 Rabenko et al. Oct 2001 A1
20010054020 Barth Dec 2001 A1
20020007413 Garcia-Luna-Aceves et al. Jan 2002 A1
20020026517 Watson Feb 2002 A1
20020052947 Duimovich et al. May 2002 A1
20020055956 Krasnoiarov et al. May 2002 A1
20020055966 Border et al. May 2002 A1
20020059371 Jamail May 2002 A1
20020059429 Carpenter May 2002 A1
20020065930 Rhodes May 2002 A1
20020069241 Narlikar et al. Jun 2002 A1
20020073075 Dutta Jun 2002 A1
20020073232 Hong Jun 2002 A1
20020091760 Rozen Jul 2002 A1
20020103823 Jackson Aug 2002 A1
20020112036 Bohannon Aug 2002 A1
20020112152 VanHeyningen Aug 2002 A1
20020120874 Shu et al. Aug 2002 A1
20020123895 Potekhin Sep 2002 A1
20020133621 Marco et al. Sep 2002 A1
20020169818 Stewart Nov 2002 A1
20020178217 Nguyen Nov 2002 A1
20020194183 Yoakum Dec 2002 A1
20020194292 King Dec 2002 A1
20030009518 Harrow et al. Jan 2003 A1
20030009583 Chan et al. Jan 2003 A1
20030018705 Chen Jan 2003 A1
20030018834 Eilers Jan 2003 A1
20030061282 Ebata et al. Mar 2003 A1
20030074403 Harrow et al. Apr 2003 A1
20030095520 Aalbers May 2003 A1
20030097408 Kageyama May 2003 A1
20030115364 Shu et al. Jun 2003 A1
20030120805 Couts Jun 2003 A1
20030149720 Goldstein Aug 2003 A1
20030163413 Wiczkowski Aug 2003 A1
20030174648 Wang et al. Sep 2003 A1
20030187925 Inala Oct 2003 A1
20030200307 Raju et al. Oct 2003 A1
20030204602 Hudson et al. Oct 2003 A1
20030210694 Jayaraman et al. Nov 2003 A1
20030212648 Cunningham et al. Nov 2003 A1
20030217144 Fu et al. Nov 2003 A1
20030229718 Tock Dec 2003 A1
20030229785 Daseke Dec 2003 A1
20040044731 Chen Mar 2004 A1
20040052257 Abdo Mar 2004 A1
20040054748 Ackaouy Mar 2004 A1
20040054800 Shah Mar 2004 A1
20040068579 Marmigere Apr 2004 A1
20040088646 Yeager et al. May 2004 A1
20040107242 Vert et al. Jun 2004 A1
20040111529 Parmar Jun 2004 A1
20040117455 Kaminsky Jun 2004 A1
20040133692 Blanchet Jul 2004 A1
20040136370 Moore et al. Jul 2004 A1
20040143665 Mace Jul 2004 A1
20040153473 Hutchinson Aug 2004 A1
20040199629 Bomer Oct 2004 A1
20040212490 Fredericks Oct 2004 A1
20040215717 Seifert Oct 2004 A1
20040221207 Yokota Nov 2004 A1
20040230593 Rudin Nov 2004 A1
20040236962 Wong Nov 2004 A1
20040254907 Crow et al. Dec 2004 A1
20040257761 Park Dec 2004 A1
20040263479 Shkolnikov Dec 2004 A1
20040264506 Furukawa Dec 2004 A1
20050015552 So et al. Jan 2005 A1
20050022236 Ito et al. Jan 2005 A1
20050027782 Jalan Feb 2005 A1
20050050097 Yeh Mar 2005 A1
20050060542 Risan Mar 2005 A1
20050086328 Landram et al. Apr 2005 A1
20050091399 Candan et al. Apr 2005 A1
20050091540 Dick Apr 2005 A1
20050096753 Arling May 2005 A1
20050097217 Val et al. May 2005 A1
20050097221 James May 2005 A1
20050097441 Herbach May 2005 A1
20050108244 Riise May 2005 A1
20050108551 Toomey May 2005 A1
20050125412 Glover Jun 2005 A1
20050138426 Styslinger Jun 2005 A1
20050165903 Doan Jul 2005 A1
20050180319 Hutnik Aug 2005 A1
20050198309 Li et al. Sep 2005 A1
20050228964 Sechrest et al. Oct 2005 A1
20050235044 Tazuma Oct 2005 A1
20050289648 Grobman et al. Dec 2005 A1
20060015545 Ezra Jan 2006 A1
20060026304 Price Feb 2006 A1
20060031407 Dispensa et al. Feb 2006 A1
20060036755 Abdullah Feb 2006 A1
20060039352 Karstens Feb 2006 A1
20060047844 Deng Mar 2006 A1
20060059091 Wang Mar 2006 A1
20060075114 Panasyuk Apr 2006 A1
20060155995 Torvinen Jul 2006 A1
20060184647 Dixit Aug 2006 A1
20060200541 Wikman et al. Sep 2006 A1
20060206586 Ling Sep 2006 A1
20060212542 Fang Sep 2006 A1
20060212584 Yu Sep 2006 A1
20060224687 Popkin Oct 2006 A1
20060236083 Fritsch Oct 2006 A1
20060242318 Nettle Oct 2006 A1
20060256772 Yarlagadda Nov 2006 A1
20060259607 O'Neal et al. Nov 2006 A1
20060259728 Chandrasekaran et al. Nov 2006 A1
20060271438 Shotland Nov 2006 A1
20060280191 Nishida Dec 2006 A1
20060287738 Rizzi et al. Dec 2006 A1
20060293052 Orler Dec 2006 A1
20070011674 Joo Jan 2007 A1
20070047452 Lohr Mar 2007 A1
20070050522 Grove Mar 2007 A1
20070061440 Sundaram Mar 2007 A1
20070073878 Issa Mar 2007 A1
20070088821 Sankuratripati Apr 2007 A1
20070100839 Kim May 2007 A1
20070142036 Wikman Jun 2007 A1
20070156855 Johnson Jul 2007 A1
20070160072 Thalanany et al. Jul 2007 A1
20070171921 Wookey Jul 2007 A1
20070174246 Sigurdsson Jul 2007 A1
20070177513 Kuokkanen Aug 2007 A1
20070180111 Chmaytelli Aug 2007 A1
20070204003 Abramson Aug 2007 A1
20070226810 Hotti Sep 2007 A1
20070239655 Agetsuma Oct 2007 A1
20070283026 Lohmar Dec 2007 A1
20070299954 Fatula Dec 2007 A1
20080008089 Bornstein et al. Jan 2008 A1
20080010365 Schneider Jan 2008 A1
20080025506 Muraoka Jan 2008 A1
20080034072 He et al. Feb 2008 A1
20080034416 Kumar Feb 2008 A1
20080037536 Padmanabhan Feb 2008 A1
20080052156 Brenner Feb 2008 A1
20080071907 Thompson Mar 2008 A1
20080071925 Leighton Mar 2008 A1
20080072178 Budzisch Mar 2008 A1
20080091812 Lev-Ran Apr 2008 A1
20080098101 Black Apr 2008 A1
20080109446 Wang May 2008 A1
20080120427 Ramanathan May 2008 A1
20080125123 Dorenbosch May 2008 A1
20080134258 Goose et al. Jun 2008 A1
20080155016 Tsai Jun 2008 A1
20080162700 Abom Jul 2008 A1
20080195712 Lin et al. Aug 2008 A1
20080196098 Cottrell Aug 2008 A1
20080201438 Mandre Aug 2008 A1
20080209028 Kurup Aug 2008 A1
20080214152 Ramer Sep 2008 A1
20080222244 Huang Sep 2008 A1
20080222267 Horn Sep 2008 A1
20080222291 Weller et al. Sep 2008 A1
20080225710 Raja Sep 2008 A1
20080228537 Monfried Sep 2008 A1
20080228938 Plamondon Sep 2008 A1
20080235385 Li Sep 2008 A1
20080235391 Painter et al. Sep 2008 A1
20080235623 Li Sep 2008 A1
20080235746 Peters Sep 2008 A1
20080086730 Vertes Oct 2008 A1
20080243735 Rish Oct 2008 A1
20080256175 Lee Oct 2008 A1
20080263180 Hurst Oct 2008 A1
20080263193 Chalemin et al. Oct 2008 A1
20080282112 Bailey Nov 2008 A1
20080288973 Carson Nov 2008 A1
20080298328 Sharma Dec 2008 A1
20080320151 McCanne Dec 2008 A1
20090010426 Redmond Jan 2009 A1
20090016337 Jorgensen Jan 2009 A1
20090037529 Armon-Kest Feb 2009 A1
20090037977 Gai Feb 2009 A1
20090055471 Kozat Feb 2009 A1
20090055749 Chatterjee Feb 2009 A1
20090070489 Lu Mar 2009 A1
20090077233 Kurebayashi Mar 2009 A1
20090100005 Guo Apr 2009 A1
20090106551 Boren Apr 2009 A1
20090136219 Kikugawa May 2009 A1
20090138538 Klein May 2009 A1
20090150534 Miller Jun 2009 A1
20090150930 Sherwin Jun 2009 A1
20090157850 Gagliardi Jun 2009 A1
20090161554 Agarwal Jun 2009 A1
20090177761 Meyer Jul 2009 A1
20090182843 Hluchyj Jul 2009 A1
20090187654 Raja Jul 2009 A1
20090193498 Agarwal Jul 2009 A1
20090199000 Hsu Aug 2009 A1
20090204700 Satya Sudhakar Aug 2009 A1
20090216887 Hertle Aug 2009 A1
20090217122 Yokokawa et al. Aug 2009 A1
20090217351 Burch Aug 2009 A1
20090222515 Thompson Sep 2009 A1
20090228603 Ritzau et al. Sep 2009 A1
20090232003 Vasseur Sep 2009 A1
20090234970 Sun Sep 2009 A1
20090248793 Jacobsson Oct 2009 A1
20090262724 Suzuki Oct 2009 A1
20090278506 Winger Nov 2009 A1
20090279559 Wong et al. Nov 2009 A1
20090287641 Rahm Nov 2009 A1
20090292816 Etchegoyen Nov 2009 A1
20090300208 Lepeska Dec 2009 A1
20090307351 Raja et al. Dec 2009 A1
20090313318 Dye Dec 2009 A1
20090319502 Chalouhi et al. Dec 2009 A1
20090320119 Hicks Dec 2009 A1
20090327489 Swildens Dec 2009 A1
20100030839 Ceragioli et al. Feb 2010 A1
20100031183 Kang Feb 2010 A1
20100036954 Sakata Feb 2010 A1
20100042724 Jeon Feb 2010 A1
20100066808 Tucker et al. Mar 2010 A1
20100067703 Candelore Mar 2010 A1
20100082513 Liu Apr 2010 A1
20100082804 Patel et al. Apr 2010 A1
20100085977 Khalid et al. Apr 2010 A1
20100094970 Zuckerman Apr 2010 A1
20100095197 Klevenz et al. Apr 2010 A1
20100095208 White Apr 2010 A1
20100100952 Sample Apr 2010 A1
20100105443 Vaisanen Apr 2010 A1
20100115613 Ramaswami May 2010 A1
20100125673 Richardson May 2010 A1
20100125675 Richardson May 2010 A1
20100115063 Gladwin et al. Jun 2010 A1
20100145925 Flinta Jun 2010 A1
20100146569 Janardhan Jun 2010 A1
20100154044 Manku Jun 2010 A1
20100161752 Collet Jun 2010 A1
20100161756 Lewis Jun 2010 A1
20100161760 Maloo Jun 2010 A1
20100161799 Maloo Jun 2010 A1
20100162126 Donaldson Jun 2010 A1
20100180082 Sebastian Jul 2010 A1
20100235438 Narayanan et al. Sep 2010 A1
20100235473 Koren Sep 2010 A1
20100262650 Chauhan Oct 2010 A1
20100293555 Vepsalainen Nov 2010 A1
20100322237 Raja Dec 2010 A1
20100329270 Asati et al. Dec 2010 A1
20110007665 Dinur Jan 2011 A1
20110022582 Unnikrishnan Jan 2011 A1
20110023125 Kim Jan 2011 A1
20110035503 Zaid Feb 2011 A1
20110066924 Dorso Mar 2011 A1
20110072129 Le Pennec et al. Mar 2011 A1
20110087733 Shribman et al. Apr 2011 A1
20110099619 Jewell Apr 2011 A1
20110106972 Grube May 2011 A1
20110117938 Pyo May 2011 A1
20110128911 Shaheen Jun 2011 A1
20110137973 Wei Jun 2011 A1
20110154477 Parla Jun 2011 A1
20110173345 Knox Jul 2011 A1
20110208732 Melton et al. Aug 2011 A1
20110218866 Wilson Sep 2011 A1
20110264809 Koster Oct 2011 A1
20110282997 Prince Nov 2011 A1
20110314347 Nakano et al. Dec 2011 A1
20110320589 Hietala Dec 2011 A1
20120002815 Wei et al. Jan 2012 A1
20120005334 Raja et al. Jan 2012 A1
20120023155 Myers et al. Jan 2012 A1
20120023212 Roth Jan 2012 A1
20120036220 Dare Feb 2012 A1
20120059934 Rafiq et al. Mar 2012 A1
20120096116 Mislove Apr 2012 A1
20120099566 Laine et al. Apr 2012 A1
20120117641 Holloway et al. May 2012 A1
20120124173 De et al. May 2012 A1
20120124239 Shribman et al. May 2012 A1
20120124348 Dundas et al. May 2012 A1
20120124384 Livni et al. May 2012 A1
20120136926 Dillon May 2012 A1
20120144047 Armstrong Jun 2012 A1
20120164980 Van Phan Jun 2012 A1
20120166582 Binder Jun 2012 A1
20120166611 Kim Jun 2012 A1
20120185947 Phillips Jul 2012 A1
20120198524 Celebisoy Aug 2012 A1
20120209945 Chandrasekhar Aug 2012 A1
20120239811 Kohli Sep 2012 A1
20120246273 Bornstein Sep 2012 A1
20120254370 Bacher Oct 2012 A1
20120254456 Visharam et al. Oct 2012 A1
20120254960 Lortz Oct 2012 A1
20120264520 Marsland Oct 2012 A1
20120271823 Asikainen et al. Oct 2012 A1
20120290717 Luna Nov 2012 A1
20120297041 Momchilov Nov 2012 A1
20120310906 Miller et al. Dec 2012 A1
20120323674 Simmons Dec 2012 A1
20130007031 Makino Jan 2013 A1
20130007232 Wang Jan 2013 A1
20130007253 Li Jan 2013 A1
20130019258 Bhatia Jan 2013 A1
20130041808 Pham et al. Feb 2013 A1
20130046817 Isbister Feb 2013 A1
20130047020 Hershko Feb 2013 A1
20130060925 Nagamine et al. Mar 2013 A1
20130064370 Gouge Mar 2013 A1
20130067085 Hershko et al. Mar 2013 A1
20130067086 Hershko Mar 2013 A1
20130072233 Sandholm Mar 2013 A1
20130080498 Desilva Mar 2013 A1
20130080575 Prince Mar 2013 A1
20130081129 Niemelä Mar 2013 A1
20130083800 Lezama Bounine Apr 2013 A1
20130091273 Ly Apr 2013 A1
20130095806 Salkintzis et al. Apr 2013 A1
20130097236 Khorashadi et al. Apr 2013 A1
20130117413 Kaneko May 2013 A1
20130145017 Luna Jun 2013 A1
20130145036 Ly et al. Jun 2013 A1
20130151709 Luna Jun 2013 A1
20130157699 Talwar Jun 2013 A1
20130166768 Gouache et al. Jun 2013 A1
20130167045 Xu Jun 2013 A1
20130171964 Bhatia Jul 2013 A1
20130173756 Luna Jul 2013 A1
20130201316 Binder et al. Aug 2013 A1
20130212462 Athas Aug 2013 A1
20130219281 Trevelyan Aug 2013 A1
20130219458 Ramanathan Aug 2013 A1
20130263280 Cote Oct 2013 A1
20130268357 Heath Oct 2013 A1
20130272519 Huang Oct 2013 A1
20130304796 Jackowski Nov 2013 A1
20130326607 Feng Dec 2013 A1
20130339477 Majeti Dec 2013 A1
20130340031 Amit Dec 2013 A1
20140013001 Cox Jan 2014 A1
20140040035 Cusack Feb 2014 A1
20140059168 Ponec et al. Feb 2014 A1
20140078462 Abreu Mar 2014 A1
20140082260 Oh et al. Mar 2014 A1
20140108671 Watson et al. Apr 2014 A1
20140115119 Padinjareveetil Apr 2014 A1
20140122580 Nuaimi May 2014 A1
20140122865 Ovsiannikov May 2014 A1
20140133392 Das et al. May 2014 A1
20140189069 Gero et al. Jul 2014 A1
20140189802 Montgomery Jul 2014 A1
20140199044 Gupta Jul 2014 A1
20140201323 Fall Jul 2014 A1
20140215391 Little et al. Jul 2014 A1
20140222798 Want et al. Aug 2014 A1
20140222963 Gangadharan Aug 2014 A1
20140222974 Liu Aug 2014 A1
20140223537 Islam Aug 2014 A1
20140244727 Kang et al. Aug 2014 A1
20140244778 Wyatt Aug 2014 A1
20140258465 Li Sep 2014 A1
20140259093 Narayanaswamy Sep 2014 A1
20140280884 Searle et al. Sep 2014 A1
20140283068 Call et al. Sep 2014 A1
20140301334 Labranche Oct 2014 A1
20140310709 Nirantar Oct 2014 A1
20140337308 De Francisci Morales Nov 2014 A1
20140344908 Rizzo Nov 2014 A1
20140359081 Van Deventer Dec 2014 A1
20140372624 Wang et al. Dec 2014 A1
20140372627 Axelrod Dec 2014 A1
20140376403 Shao Dec 2014 A1
20150006615 Wainner Jan 2015 A1
20150016261 Backholm Jan 2015 A1
20150026239 Hofmann Jan 2015 A1
20150026341 Blacka Jan 2015 A1
20150032803 Graham-Cumming Jan 2015 A1
20150033001 Ivanov Jan 2015 A1
20150036485 Poulson Feb 2015 A1
20150039674 Agarwal Feb 2015 A1
20150067819 Shribman et al. Mar 2015 A1
20150074266 Alisawi et al. Mar 2015 A1
20150092860 Benight Apr 2015 A1
20150120863 Wu Apr 2015 A1
20150134848 Mutz et al. May 2015 A1
20150135302 Cohen May 2015 A1
20150143456 Raleigh et al. May 2015 A1
20150149431 Trevelyan May 2015 A1
20150153810 Sasidharan et al. Jun 2015 A1
20150156525 Lemmons Jun 2015 A1
20150169620 Schmidt et al. Jun 2015 A1
20150172324 Calme Jun 2015 A1
20150172406 Hansen Jun 2015 A1
20150180762 Medved et al. Jun 2015 A1
20150189401 Yi Jul 2015 A1
20150199498 Liu et al. Jul 2015 A1
20150206176 Toval Jul 2015 A1
20150206197 Toval Jul 2015 A1
20150207894 De Los Reyes et al. Jul 2015 A1
20150208352 Backholm Jul 2015 A1
20150215426 Torii et al. Jul 2015 A1
20150237159 Lawrence et al. Aug 2015 A1
20150244839 Horn Aug 2015 A1
20150268905 Chakirov Sep 2015 A1
20150281331 Steiner et al. Oct 2015 A1
20150295988 Goodwin Oct 2015 A1
20150317218 Verde Nov 2015 A1
20150341812 Dion Nov 2015 A1
20150347118 Yeung Dec 2015 A1
20150350362 Pollack Dec 2015 A1
20150356289 Brown et al. Dec 2015 A1
20150358648 Limberg Dec 2015 A1
20150372972 Kennedy Dec 2015 A1
20160021215 Spencer Jan 2016 A1
20160021430 LaBosco et al. Jan 2016 A1
20160029402 Backholm et al. Jan 2016 A1
20160035019 Rosner Feb 2016 A1
20160055225 Xu et al. Feb 2016 A1
20160056880 Yamasaki et al. Feb 2016 A1
20160077547 Aimone Mar 2016 A1
20160098049 Fan Apr 2016 A1
20160105530 Shribman Apr 2016 A1
20160140405 Graumann May 2016 A1
20160162706 Famulari Jun 2016 A1
20160170814 Li Jun 2016 A1
20160173452 Seo Jun 2016 A1
20160188657 Montana Jun 2016 A1
20160205028 Luna Jul 2016 A1
20160205557 Tuupola et al. Jul 2016 A1
20160232538 Papakostas et al. Aug 2016 A1
20160241664 Xia Aug 2016 A1
20160248803 O'Connell et al. Aug 2016 A1
20160261688 Anand Sep 2016 A1
20160269369 Thomson Sep 2016 A1
20160294642 Hopkins et al. Oct 2016 A1
20160294956 Fix Oct 2016 A1
20160316280 Bulley et al. Oct 2016 A1
20160323409 Kölhi Nov 2016 A1
20160330075 Tiwari et al. Nov 2016 A1
20160337464 Eriksson Nov 2016 A1
20160352628 Reddy et al. Dec 2016 A1
20160365989 Herrero Dec 2016 A1
20160366233 Le Dec 2016 A1
20160380778 Shen et al. Dec 2016 A1
20170006075 Li Jan 2017 A1
20170041416 Zhou Feb 2017 A1
20170048192 Herrero Feb 2017 A1
20170094710 Nirantar Mar 2017 A1
20170118313 Aladdin et al. Apr 2017 A1
20170149781 Tubi et al. May 2017 A1
20170155654 Burke Jun 2017 A1
20170187472 Chini et al. Jun 2017 A1
20170195451 Backholm Jul 2017 A1
20170220651 Mathew et al. Aug 2017 A1
20170221092 Toval Aug 2017 A1
20170230434 Wang Aug 2017 A1
20170235848 Van Dusen et al. Aug 2017 A1
20170250861 Gheorghe Aug 2017 A1
20170272316 Johnson Sep 2017 A1
20170331869 Bendahan et al. Nov 2017 A1
20170339253 Pathak Nov 2017 A1
20170359349 Knecht Dec 2017 A1
20170374566 Backholm Dec 2017 A1
20180019909 Tanabe et al. Jan 2018 A1
20180020324 Beauford Jan 2018 A1
20180027112 Baldassari et al. Jan 2018 A1
20180034766 Chiba Feb 2018 A1
20180042067 Nirantar Feb 2018 A1
20180047072 Chow Feb 2018 A1
20180063228 Deen Mar 2018 A1
20180077624 Jung Mar 2018 A1
20180070129 Cholas et al. May 2018 A1
20180124123 Moore et al. May 2018 A1
20180131668 Prince May 2018 A1
20180146378 Christmas et al. May 2018 A1
20180167336 Lawrence Jun 2018 A1
20180191764 Chawla et al. Jul 2018 A1
20180213038 Chung Jul 2018 A1
20180213060 Koonce Jul 2018 A1
20180219830 O'Brien Aug 2018 A1
20180225387 Pang Aug 2018 A1
20180226760 Bolouri-Saransar et al. Aug 2018 A1
20180227210 Cosgrove Aug 2018 A1
20180234364 Gong et al. Aug 2018 A1
20180248926 Binns et al. Aug 2018 A1
20180262388 Johnson Sep 2018 A1
20180302292 Khurana et al. Oct 2018 A1
20180349354 Gonzalez Dec 2018 A1
20180363572 Glugla et al. Dec 2018 A1
20180367433 Luna Dec 2018 A1
20180367560 Mahaffey Dec 2018 A1
20180375828 Rawat Dec 2018 A1
20180375896 Wang Dec 2018 A1
20180375952 Knecht Dec 2018 A1
20190028548 Lauer Jan 2019 A1
20190033845 Cella Jan 2019 A1
20190036777 Frizzell Jan 2019 A1
20190037047 Shribman Jan 2019 A1
20190041934 Tan et al. Feb 2019 A1
20190050164 Kotian Feb 2019 A1
20190058902 Kipp et al. Feb 2019 A1
20190059083 Backholm Feb 2019 A1
20190068740 Graham-Cumming Feb 2019 A1
20190098518 Luna Mar 2019 A1
20190102280 Caldato Apr 2019 A1
20190110173 Collier Apr 2019 A1
20190116236 He Apr 2019 A1
20190124018 Zhang Apr 2019 A1
20190137594 Annamalai et al. May 2019 A1
20190138560 Holloway May 2019 A1
20190140467 Abiri et al. May 2019 A1
20190155665 Bott May 2019 A1
20190166520 Luna May 2019 A1
20190171474 Malboubi Jun 2019 A1
20190174449 Shan Jun 2019 A1
20190180316 Toval Jun 2019 A1
20190182034 McCarthy et al. Jun 2019 A1
20190199611 Kotadia Jun 2019 A1
20190230394 Gates et al. Jul 2019 A1
20190238510 Li Aug 2019 A1
20190260859 Patil Aug 2019 A1
20190268308 Sinha Aug 2019 A1
20190334864 Yin et al. Oct 2019 A1
20190342607 Major Nov 2019 A1
20190372878 Chakra Dec 2019 A1
20190373083 Nucci Dec 2019 A1
20190379766 Decenzo Dec 2019 A1
20190385057 Litichever et al. Dec 2019 A1
20190387430 Ingerman Dec 2019 A1
20200007494 Prince Jan 2020 A1
20200083706 Paskov et al. Mar 2020 A1
20200136911 Assali Apr 2020 A1
20200159622 Chintagunta May 2020 A1
20200162432 Ludin May 2020 A1
20200169536 Santelia May 2020 A1
20200184035 Santelia Jun 2020 A1
20200186614 Luna Jun 2020 A1
20200205058 Yoshikawa Jun 2020 A1
20200220746 Shribman et al. Jul 2020 A1
20200259893 James Aug 2020 A1
20200287867 Knecht Sep 2020 A1
20200296036 Chu Sep 2020 A1
20200358858 Shribman Nov 2020 A1
20200382580 Devanneaux et al. Dec 2020 A1
20210058271 Sung Feb 2021 A1
20210075860 Binder et al. Mar 2021 A1
20210097112 Zhang Apr 2021 A1
20210159548 Deng et al. May 2021 A1
20210194986 Shribman et al. Jun 2021 A1
20210234721 Shribman et al. Jul 2021 A1
20220070216 Kohavi Mar 2022 A1
20220103523 Starr et al. Mar 2022 A1
20220164400 Holloway May 2022 A1
20220173924 Shribman et al. Jun 2022 A1
20230289329 Luthra et al. Sep 2023 A1
20230379531 Azuolas et al. Nov 2023 A1
Foreign Referenced Citations (42)
Number Date Country
2328548 Jun 2002 CA
2353623 Jan 2003 CA
101075242 Nov 2007 CN
101179389 May 2008 CN
102314348 Jan 2012 CN
105245607 Jan 2016 CN
106534244 Mar 2017 CN
106547793 Mar 2017 CN
107832355 Mar 2018 CN
107864143 Mar 2018 CN
108551452 Sep 2018 CN
108924199 Nov 2018 CN
110062025 Jul 2019 CN
110071980 Jul 2019 CN
110147271 Aug 2019 CN
0948176 Oct 1999 EP
1672826 Jun 2006 EP
2597869 Dec 2013 EP
2922275 Mar 2016 EP
3272105 Mar 2016 EP
2418108 Mar 2006 GB
H11-355302 Dec 1999 JP
2007280388 Oct 2007 JP
1020090097034 Sep 2009 KR
2343536 Oct 2009 RU
9742582 Nov 1997 WO
2000018078 Mar 2000 WO
2003023639 Mar 2003 WO
2004094980 Nov 2004 WO
2004094980 Nov 2004 WO
2007136665 Nov 2007 WO
2009086134 Jul 2009 WO
2010014747 Feb 2010 WO
2010090562 Aug 2010 WO
2011005390 Jan 2011 WO
2011068784 Jun 2011 WO
2015034752 Mar 2015 WO
2015157646 Oct 2015 WO
2016123293 Aug 2016 WO
2016181383 Nov 2016 WO
2016198961 Dec 2016 WO
2019043687 Mar 2019 WO
Non-Patent Literature Citations (196)
Entry
Michael J. Freedman, Princeton University, “Experiences with CoralCDN: a five-year operational view”, Proceeding NSDI'10 Proceedings of the 7th USENIX conference on Networked systems design and implementation San Jose, California—Apr. 28-30, 2010 (17 pages).
“The BitTorrent Protocol Specification”, Website: https://web.archive.org/web/20120513011037/http:/www.bittorrent.org/beps/bep_0003.html describing BitTorrent dated Jan. 10, 2008 downloaded using web archive on Aug. 16, 2019 (6 pages).
“BitTorrent”, Website: https://en.wikipedia.org/w/index.php?title=BitTorrent&oldid=530466721 describing BitTorrent dated Dec. 30, 2012 downloaded using Wikipedia on Aug. 16, 2019 (9 pages).
“VIP Socks/VPN Service”, Website: http://vip72.com:80/?drgn=1 describing VIP72 proxy service dated Jan. 2010 downloaded using VIP Technologies webpage on Aug. 16, 2019 (3 pages).
“Welcome to Easy Hide IP”, Website: https://web.archive.org/web/20130702093456/http://www.easy-hide-ip.com:80/describing Easy Hide IP dated Jun. 26, 2007 downloaded using web archive on Aug. 16, 2019 (2 pages).
“You make it fun; we'll make it run”, Website: https://web.archive.org/web/20130726050810/https://www.coralcdn.orgdescribing CoralCDN dated Jan. 25, 2005 downloaded using web archive on Aug. 16, 2019 (2 pages).
“Net Transport”, Website: http://www.xi-soft.com/default.htm describing Net Transport Overview dated 2005 downloaded using Net Transport webpage on Aug. 16, 2019 (2 pages).
Net Transport—Develop History, Website: http://www.xi-soft.com/download.htm describing Net Transport Download dated 2005 downloaded using Net Transport webpage on Aug. 16, 2019 (10 pages).
Net Transport FAQ, Website: http://www.xi-soft.com/faq.htm describing Net Transport FAQ dated 2005 downloaded using Net Transport webpage on Aug. 16, 2019 (4 pages).
Net Transport News, Website: http://www.xi-soft.com/news.htm describing Net Transport News dated 2005 downloaded using Net Transport webpage on Aug. 16, 2019 (5 pages).
Archived Internet Society webpage for TCP KeepAlive HowTo, available at https://web.archive.org/web/20080611153148/https://tldp.org/HOWTO/TCP-Keepalive-HOWTO/index.html, Jun. 11, 2008 (15 pages).
“Tunneling for Transparency: A Large-Scale Analysis of End-to-End Violations in the Internet”, Taejoong Chung, David Choffnes, and Alan Mislove, all of Northeastern University, IMC 2016, Nov. 14-16, 2016, Santa Monica, CA, USA, [DOI: http://dx.doi.org/10.1145/2987443.2987455] (16 pages).
N. Gautam, “Performance Analysis and Optimization of Web Proxy Servers and Mirror Sites”, European Journal Operational Research 142 (2002), 396-418 (23 pages).
Andrew Daviel et al., Geographic extensions for HTTP transactions, Dec. 7, 2007 (15 pages).
HTTPS FAQ, The HTTPS-Only Standard, Jul. 6, 2015 (3 pages).
RFC 2818, “HTTP Over TLS”, May 2000 (7 pages).
RFC 1866, “Hypertext Markup Language—2.0”, Nov. 1995 (77 pages).
Li et at, “Toward the Identification of Anonymous Web Proxies”, University of Cambridge & University of Genoa, Apr. 3, 2009 (2 pages).
“Anonymizing Proxies: What They Are and Who They Work”—Enterprise Services Mar. 2013 (Year: 2012) (2 pages).
Selected pages from the website proxifier.com as of Feb. 2008 (15 pages).
Proxychains source code (Oct. 20, 2004) (53 pages).
RFC 1918, Address Allocation for Private Internets, Feb. 1996 (9 pages).
RFC 2131, Dynamic Host Configuration Protocol, Mar. 1997 (45 pages).
RFC 4388, Dynamic Host Configuration Protocol (DHCP) Leasequery, Feb. 2006 (27 pages).
Octoparse Blog: “Top 20 Web Crawling Tools to Scrape the Websites Quickly”, Aug. 23, 2019 (15 pages).
International Search Report issued in PCT Application No. PCT/US2010/051881 dated Dec. 9, 2010.
Supplementary European Search Report issued in EP Application No. 10822724 dated Apr. 24, 2013.
“Keep Alive”—Imperva, 2019 https://www.imperva.com/learn/performance/keep-alive (2019) (3 pages).
Third party observation filed on Jun. 21, 2019 in PCT Application No. PCT/IL2018/050910 (7 pages).
IETF named: IPv6 Tunnel Broker, Apr. 1999—First uploaded document submitted with third party observation dated Jun. 21, 2019 (13 pages).
RFC 3053 (Jan. 2001) named: IPv6 Tunnel Broker—Secod uploaded document submitted with third party observation dated Jun. 21, 2019 (13 pages).
Authors Alain Durand (IMAG) et al., “IPv6 Tunnel Broker <draft-ietf-ngtrans-broker-00.txt>”, Internet Society (ISOC), Apr. 2, 1999 (14 pages).
Sophie Gastellier-Prevost et al., “Defeating pharming attacks at the client-side”, Network and System Security (NSS), Sep. 6, 2011 (8 pages).
Bharat K et al. “Mirror, Mirror on the Web: a study of host pairs with replicated content”, Computer Networks, Amsterdam, vol. 31, No. 11-16, May 17, 1999 (12 pages).
European Search Report of EP 20190259 dated Dec. 16, 2020.
European Search Report of EP 20195090 dated Dec. 8, 2020.
Kozierok, The TCP/IP Guide—TCP Connection Preparation, Apr. 6, 2005 (3 pages).
Jovovic, Turning your HD TV into an Android SmartTV is easier than you think!, Feb. 26, 2013 (3 pages).
Allen, A Software Developer's Guide to HTTP Part III—Connections, Jan. 26, 2012 (10 pages).
Google Scholar: MorphMix citation in Alessandro Acquisti, et al., Digital Privacy: Theory, Technologies, and Practices (2007) (2 pages).
RFC 959, File Transfer Protocol (FTP), Oct. 1985 (69 pages).
RFC 821, Jonathan B. Postel, Simple Mail Transfer Protocol, Aug. 1982 (70 pages).
RFC 918, Post Office Protocol, Oct. 1984 (5 pages).
RFC 937, Post Office Protocol—Version 2, Feb. 1985 (24 pages).
Roger Dingledine et al., “The Free Haven Project: Distributed Anonymous Storage Service”, Dec. 17, 2000 (23 pages).
Michael Freedman et al., “Tarzan: A Peer-to-Peer Anonymizing Network Layer”, Nov. 18-22, 2002 (14 pages).
RFC 791, Darpa Internet Program Protocol Specification, Sep. 1981 (49 pages).
RFC 1034, “Domain Names—Concepts and Facilities”, Nov. 1987 (55 pages).
RFC 1035, “Domain Names—Implementation and Specification”, Nov. 1987 (54 pages).
RFC 1939, Post Office Protocol—Version 3, May 1996 (23 pages).
Screen captures from YouTube video clip entitle “nVpn.net | Double your Safety and use Socks5 + nVpn” 38 pages, last accessed Nov. 20, 2018 <https://www.youtube.com/watch?v=L0Hct2kSnn4>.
Screen captures from YouTube video clip entitle “Andromeda” 47 pages, publicly known and available as of at least 2011 <https://www.youtube.com/watch?v=yRRYpFLbKNU>.
SpyEye, https://www.symantec.com/security-center/writeup/2010-020216-0135-9; http://securesql.info/riskyclouds/spyeye-user-manual; known as of at least 2010 (13 pages).
Screen captures from YouTube video clip entitle “Change Your Country IP Address & Location with Easy Hide IP Software” 9 pages, publicly known and available as of at least 2011, <https://www.youtube.com/watch?v=ulwkf1sOfdA and https://www.youtube.com/watch?v=iFEMT-o9DTc>.
European Search Report for EP 14182547.1, dated Jul. 30, 2015.
R. Fielding et al, RFC 2616: Hypertext Transfer Protocol—HTTP/1.1, Jun. 1999, retrieved from the Internet http://rcf-editor.org [retrieved Apr. 15, 2002].
“On the leakage of personally identifiable information via online social networks”, Wills et al. AT&T, Apr. 2009 http://www2.research.att.com/-bala/papers/wosn09.pdf*.
“Slice Embedding Solutions for Distributed Service Architectures”—Esposito et al., Boston University, Computer Science Dept., Oct. 2011 http://www.cs.bu.edu/techreports/pdf/2011-025-slice-embedding.pdf.
International Search Report of PCT/US2010/034072 dated Jul. 1, 2010.
Kei Suzuki, a study on Cooperative Peer Selection Method in P2P Video Delivery, vol. 109, No. 37, IEICE Technical Engineers Report, The Institute of Electronics, Information and Communication, May 14, 2009.
RFC 3022, Traditional IP Network Address Translator (Traditional NAT), Jan. 2001 (16 pages).
RFC 2068, Hypertext Transfer Protocol—HTTP/1.1, Jan. 1997 (162 pages).
RFC 1919, Classical versus Transparent IP Proxies, Mar. 1996 (35 pages).
HAProxy Reference Manual, Version 1.2.18, Willy Tarreau, May 25, 2008 (40 pages).
HAProxy Architecture Guide, Version 1.2.18, Willy Tarreau, May 25, 2008 (23 pages).
RFC 2663 entitled: “IP Network Address Translator (NAT) Terminology and Considerations”, Aug. 1999 (30 pages).
RFC 2187, “Application of Internet Cache Protocol (ICP), version 2”, Sep. 1997 (24 pages).
Duane Wessels, “ICP and the Squid Web Cache”, Aug. 13, 1997 (25 pages).
RFC 1738, “Uniform Resource Locators (URL)”, Dec. 1994 (25 pages).
European Search Report of EP 20195075 dated Nov. 13, 2020.
David Gourley et al, “HTTP-The-Definitive-Guide”, O'Reilly Media, Inc. Sep. 27, 2002 (658 pages).
Floss Manuals, “Circumvention Tools”, Free Software Foundation Inc., May 31, 2021 (240 pages).
David Fifield et al, “Blocking resistant communication through domain fronting”, Proceeding on Privacy Enhanching Technologies 2015, May 15, 2015 (19 pages).
Wang Qiyan et al, “CensorSpoofer: Asymmetric Communication with IP Spoofing for ensorship-Resistant Web Browsing”, Mar. 9, 2012 (16 pages).
R. Fielding et al, RFC 2616: Hypertext Transfer Protocol—HTTP/1.1, Jun. 1999, retrieved from the Internet http://rcf-editor.org [retrieved Apr. 15, 2002] (114 pages).
Notice of Preliminary Rejection in KR Application No. 10-2012-7011711 dated Jul. 15, 2016.
Kei Suzuki, a study on Cooperative Peer Selection Method in P2P Video Delivery, vol. 109, No. 37, IEICE Technical Report, The Institute of Electronics, Information and Communication Engineers, May 14, 2009.
Berners-Lee et al., RFC 1945, Hypertext Transfer Protocol, HTTP/1.0 (May 1996) (60 pages).
Leech et al., RFC 1928, Socks Protocol, Version 5 (Internet Engineering Task Force, Network Working Group, Mar. 1996) (9 pages).
Wessels, “Squid: The Definitive Guide,” ISBN-10: 9780596001629, ISBN-13: 978-0596001629, O'Reilly Media; 1st Ed. (Jan. 1, 2004) (468 pages).
VIP72.com home page as of 2013 from Wayback Machine (3 pages).
Loutonen et al., “World-Wide Web proxies,” Computer Networks and ISDN Systems 27, 147-154 (Elsevier Science B. V.) (1994) (8 pages).
Cooper et al., RFC 3040, Internet Web Replication and Caching Taxonomy (Jan. 2001) (32 pages).
ISO/IEC 23009-1:2012(E), MPEG-Dash standard, Jan. 5, 2012 (133 pages).
ProxyList.net, as captured by the Wayback Machine (web.archive.org), on Jul. 17, 2011 (1 page).
Printout of VIP72 Youtube web page at https://www.youtube.com/watch?v=L0Hct2kSnn4, retrieved Nov. 21, 2019 (1 page).
VIP72 Scene Images extracted from VIP72.com/nvpnnet, MPEG-4 video recording of “nVPN.net | Double your Safety and use Socks5 +nVpn”, accessed from https://www.youtube.com/watch?v=L0Hct2kSnn4, published Sep. 11, 2011 (221 pages).
Certification dated Nov. 8, 2019 of Anjali Shresta of Google, Proof of Date for VIP72 Youtube web page and video (4 pages).
Perspective Access Networks, A dissertation presented by Geoffrey Lewis Goodell, Jul. 2006 (292 pages).
Perspective Access Networks, by Geoffrey Lewis Goodell, 2006 (1 page).
Perspective access networks, by Geoffrey Lewis Goodell, Dissertation Abstracts International. vol. 67, No. 12, 2006 (2 pages).
Dissertation Abstracts International. by ProQuest, vol. 65, No. 05, Nov. 2004 (11 pages).
Roger Dingledine and Nick Mathewson, Design of a blocking-resistant anonymity system, Tor Tech Report 2006-11-001 (25 pages).
Printout of 2006 capture history of afs.eecs.harvard.edu/{grave over ( )}goodell/thesis.pdf from Internet Archive's Wayback Machine (2 pages).
Printout of 2007 capture history of afs.eecs.harvard.edu/{grave over ( )}goodell/thesis.pdf from Internet Archive's Wayback Machine (2 pages).
Printout of capture of http://serifos.eecs.harvard.edu/cgi-bin/blossom.pl dated Sep. 5, 2006, from Internet Archive's Wayback Machine (1 page).
Printout of https://ethanzuckerman.com/2006/04/06/blossom-tor-and-touring-the-internets/, a blog post entitled: “Blossom, Tor and touring the internets” dated Apr. 6, 2006 (9 pages).
Printout of capture of http://afs.eecs.harvard.edu/{grave over ( )}goodlell/blossom/bib/author.html dated Sep. 2, 2006, from Internet Archive's Wayback Machine (45 pages).
Printout of capture of http://afs.eecs.harvard.edu/{grave over ( )}goodlell/blossom/ dated Sep. 2, 2006, from Internet Archive's Wayback Machine (2 pages).
Printout of capture of http://youtube.com/ dated Aug. 29, 2005, from Internet Archive's Wayback Machine (2 pages).
Michael K. Reiter and Aviel D. Rubin, “Crowds: Anonymity for Web Transactions”, ACM Transactions on Information and System Security, Nov. 1998 (27 pages).
Rennhard, Marc, “MorphMix—A Peer-to-Peer based System for Anonymous Internet Access”, 2004 (307 pages).
Ari Luotonen, “Web Proxy Servers,” ISBN-10: 0136806120, ISBN-13: 978-0136806127, Prentice Hall; 1st Ed. 1998 (452 pages).
RFC 760, DOD Standard Internet Protocol, Jan. 1980 (46 pages).
RFC 2547, BGP/MPLS VPNs, Mar. 1999 (25 pages).
RFC 1180, A TCP/IP Tutorial, Jan. 1991 (28 pages).
RFC 1122, Requirements for Internet Hosts—Communication Layers, Oct. 1989 (116 pages).
Andrei Popescu, Google, Inc, Geolocation API Specification, W3C Working Draft Dec. 22, 2008 (8 pages).
Andrei Popescu, Google, Inc, Geolocation API Specification, W3C Recommendation Oct. 24, 2013 (10 pages).
Yong Wang, et. al., Towards Street-Level Client-Independent IP Geolocation, 2011 (14 pages).
William R. Stanek, Introducing Microsoft Windows Vista 81, 2006 (9 pages).
IETF RFC 2460 “Internet Protocol, Version 6 (IPv6)”, Dec. 1998 (39 pages).
IETF RFC 793 “Protocol Specification”, Sep. 1981 (90 pages).
IETF RFC 1349 “Type of Service in the Internet Protocol Suite”, Jul. 1992 (28 pages).
IEEE Std 802-2001, IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture, Feb. 7, 2002 (47 pages).
Scott Lowe, Use Resource Monitor to monitor network performance—TechRepublic, Jul. 29, 2011 (11 pages).
Greg Shultz, Windows Vista's Task Manager: The harder-to-detect changes—TechRepublic, Feb. 21, 2007 (16 pages).
Gavin Gear, Windows 8 Task Manager In-Depth, Jun. 6, 2013 (32 pages).
IETF RFC 2914, “Congestion Control Principles”, Sep. 2000 (17 pages).
IETF RFC 4026, “Provider Provisioned Virtual Private Network (VPN) Terminology”, Mar. 2005 (20 pages).
Third-party submission under 37 CFR 1.290 filed on Jul. 23, 2019 and entered in U.S. Appl. No. 16/140,749.
Third-party submission under 37 CFR 1.290 filed on Jul. 23, 2019 and entered in U.S. Appl. No. 16/140,785.
Third-party submission under 37 CFR 1.290 filed on Jul. 23, 2019 and entered in U.S. Appl. No. 16/214,433.
Third-party submission under 37 CFR 1.290 filed on Jul. 23, 2019 and entered in U.S. Appl. No. 16/214,451.
Third-party submission under 37 CFR 1.290 filed on Jul. 23, 2019 and entered in U.S. Appl. No. 16/214,476.
Third-party submission under 37 CFR 1.290 filed on Jul. 23, 2019 and entered in U.S. Appl. No. 16/214,496.
Third-party submission under 37 CFR 1.290 filed on Jul. 23, 2019 and entered in U.S. Appl. No. 16/292,363.
Third-party submission under 37 CFR 1.290 filed on Jul. 22, 2019 and entered in U.S. Appl. No. 16/292,364.
Third-party submission under 37 CFR 1.290 filed on Jul. 23, 2019 and entered in U.S. Appl. No. 16/292,374.
Third-party submission under 37 CFR 1.290 filed on Jul. 23, 2019 and entered in U.S. Appl. No. 16/292,382.
Third-party submission under 37 CFR 1.290 filed on Jul. 25, 2019 and entered in U.S. Appl. No. 16/365,250.
Third-party submission under 37 CFR 1.290 filed on Jul. 25, 2019 and entered in U.S. Appl. No. 16/365,315.
“Slice Embedding Solutions for Distributed Service Architectures”—Esposito et al., Boston University, Feb. 12, 2011 http://www.cs.bu.edu/techreports/pdf/2011-025-slice-embedding.pdf (Year 2011) (16 pages).
Reed et al, “Anonymous Connections and Onion Routing”, Naval Research Laboratory, Mar. 1998 https://www.onion-router.net/Publications/JSAC-1998.pdf (Year: 1998).
Dejuan Lukan, “Achieving Anonymity with Tor Part 2: Proxies and DNS Servers”, InfoSec Resource, Aug. 16, 2012 (20 pages).
Rajkumar Buyya et al., “Content Delivery Networks” @ 2008 Springer-Verlag Berlin Heidelberg (392 pages) Request for Comments 1123, “Requirements for Internet Hosts -- Application and Support”, Oct. 1989 (98 pages).
Request for Comments 1123, “Requirements for Internet Hosts—Application and Support”, Oct. 1989 (98 pages).
Andrew S. Tanenbaum, “Computer Networks”, 4th Edition, 2003 (908 pages).
Chou Chie Ming et al., “Triggering and Relay Node Selection for Self-User Relaying”, IEEE Communications Letters, vol. 19, No. 11, Nov. 1, 2015 pp. 2029-2032 (4 pages).
Request for Comments 2396, “Uniform Resource Identifiers (URI): Generic Syntax”, Aug. 1998 (40 pages).
Ashish Mohta, worldproxy202—Proxy that's pretty useful, available at https://web.archive.org/web/20080601050011/http://www.technospot.net/blogs/worldproxy202-proxy-that's-pretty-useful, Jun. 1, 2006 (6 pages).
Wikipedia article on “Routing”, https://en.wikipedia.org/wiki/Routing 26.7.2021 (8 pages).
Dejan Lukan, Achieving Anonymity with Tor Part 2: Proxies and DNA Servers, INFOSEC Aug. 16, 2012 (17 pages).
Kim et al., “RAD: Recipient Anonymous Data Delivery Based on Public Routing Proxies” Computer Notworks, vol. 55, Issue 15 Elsevier, Science Direct, Oct. 27, 2011 (16 pages).
RFC 3143, Known HTTP Proxy/Caching Problems, Jun. 2001 (32 pages).
Rob Thubron, “Opera Builds Free and Unlimited VPN Service Directly Into Its Desktop Browser”, Apr. 16, 2016 (6 pages).
Anthony Caruana, “3 Ways to Sneak Past Site Blocks”, Mar. 12, 2018 (7 pages).
Jack Schofield, “How Can I Access Restriced UK Sites When I'm Overseas?”, Oct. 3, 2014 (6 pages).
Tuang, S. et al., “Middleboxes in the Internet: a HTTP perspective”, 2017 Network Traffic Conference, IEEE, Jun. 21-23, 2017, pp. 1-9 (9 pages).
Goldbert, I. and Shostack A., “Freedom Network 1.0 Architecture and Protocols”, Zero-Knowledge Systems Inc, Nov. 29, 1999 (23 pages).
Fifield David et al., “Evading Censorship with Browser-Based Proxies”, Privacy Enhancing Technologies 2012, vol. 7384, Berlin, Springer, 2012, pp. 239-258 (20 pages).
Skvorc, D. et al., “Performance Evaluation of Websocket Protocol for Implementation of Full-Duplex Web Streams”, 37th International Convention MIPRO, IEEE, May 26-30, 2014, pp. 1003-1008 (6 pages).
Rao A et al., “Using the Middle to Meddle with Mobile”, CCIS, Dec. 2013 (14 pages).
Netronome Systems, Inc., “Examining SSL-encrypted Communications”, White Paper, 2010 (8 pages).
Peterson, Larry L. and Davie, Bruce S., “Computer Networks. A Systems Approach”, 2nd Ed., San Francisco, 2000, p. 610 (18 pages).
Liu, C. et al., “Managing Internet Information Services”, Sebastopol, O'Reilly & Associates, 1994, pp. 497-513 (19 pages).
Tanenbaum, Andrew S. and Wetherall, David J., “Computer Networks”, 5th Ed., Boston, 2011 pp. 813-822 (12 pages).
Comer, D.E., “Internetworking with TCP/IP—vol. 1: Principles, Protocols and Architectures”, 5th Ed., New Jersey, 2006, pp. 249-268 (22 pages).
Krishnamurthy, B. and Rexford, J., “Web Protocols and Practice” HTTP/1.1, networking protocols, caching and traffic measurement, Indianapolis, 2001, pp. 184-203 and 249-254 (29 pages).
GeoSurf, “What is IP Rotation—Rotating Proxy Server”, Nov. 12, 2017 (4 pages).
Bright Data, “The Ultimate Guide to Buying a Proxy Server”, DataCenter Proxies, ProxyCompass Apr. 26, 2022 (23 pages).
Arndt Rachel, “How to get around Country-Specific streaming rules” Jul. 31, 2013 (2 pages).
Anonymous, “Where is located a website? Website location finder : IPVoid”, Mar. 20, 2019 (1 page).
RFC 2186, Internet Cache Protocol (ICP), version 2, Sep. 1997 (9 pages).
Roger Dingledine, Nick Mathewon, and Paul Syverson, Tor: The Second-Generation Onion Router, In Proceedings of the 13th conference on USENIX Security Symposium, vol. 13, 2004 (17 pages).
Goldschlag D.M., Reed M.G., Syverson P.F., Hiding Routing Information, Lecture Notes in Computer Science, vol. 1174, Springer, Berlin, Heidelberg, 1996 (14 pages).
Schneier, Anonymity and Tor Network, Schneier on Security Sep. 20, 2007, https://www.schneier.com/blog/archives/2007/09 . . . html, p. 1-22, accessed Apr. 26, 2020 (22 pages).
Reed M.G., Syverson P.F. Goldschlag D.M., Protocols Using Anonymous Connections: Mobile applications, Lecture Notes in Computer Science, vol. 1361, Springer, Berlin, Heidelberg, 1997 (11 pages).
Nick Mathewon, and Roger Dingledine, Location Diversity in Anonymity Networks, In Proceedings of the 2004 ACM workshop on Privacy in the electronic society. Association for Computing Machinery, New York, NY, USA 66-67 (11 pages).
Banerjee, Priyanka, Anonymous Routing in Wireless Networks: Onion Routing, Team Project Report 2007, p. 1-16 (16 pages).
McCoy D., Bauer K., Grunwald D., Kohno T., Sicker D., Shining Light in Dark Places: Understandings the Tor Network, Lecture Notes in Computer Science, vol. 5134, Springer, Berlin, Heidelberg, 2008 (14 pages).
Harry Newton, Newton's Telecom Dictionary, Mar. 2004, CNP Books, p. 182, 183, 433, 434, 435, 437, 665, 737 (10 pages).
Chakravarty et al., Identifying Proxy Nodes in a Tor Anonymization Circuit, 2008, IEEE International Conference on Signal Image Technology and Internet Based Systems, Bali, 2008, pp. 633-639 (7 pages).
Orfali et al., Client/Server Survival Guide, 3rd ed., John Wiley and Sons Inc. 1999, p. 15 (3 pages).
Reed M.G., Syverson P.F., Goldschlag D.M., Proxies for Anonymous Routing, In Proceedings 12th Annual Computer Security Applications Conference, 1996, pp. 95-104 (10 pages).
W3C, Glossary of Terms for Device Independence, Jan. 2005 (12 pages).
RFC 1001: Protocol Standard for A NetBIOS Service on a TCP/UDP Transport: Concepts and Methods, Mar. 1987 (68 pages).
RFC 1630: Universal Resource Identifiers in WWW, Jun. 1994 (28 pages).
RFC 2960: Stream Control Transmission Protocol, Oct. 2000 (134 pages).
RFC 6520: Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension, Feb. 2012 (9 pages).
L.L. Peterson, B.S. Davie, Computer Networks: A Systems Approach, 4th ed., San Francisco, CA, 2007 (20 pages).
Mell et al., “Creating a Patch and Vulnerability Management Program”, NIST Special Publication 800-40 Version 2.0, 2005 (76 pages).
Rowstron et al., “Pastry: Scalable, Decentralized Object Location, and Routing for Large-Scale Peer-to-Peer Systems”, IFIP/ACM International Conference on Distributed Systems Platforms and Open Distributed Processing: Middleware 2001, pp. 329-350 (22 pages).
Ratnasamy, et al., “Topologically aware overlay construction and server selection”, Proceedings Twenty-First Annual Joint Conference of the IEEE Computer and Communications Societies, vol. 3, pp. 1190-1199 (2002) (10 pages).
Padmanabhan et al., “An Investigation of Geographic Mapping Techniques for Internet Hosts”, ACM SIGCOMM Computer Communication Review, vol. 3, No. 4, pp. 173-185 (2001) (13 pages).
Freedman et al., “OASIS: Anyeast for Any Service”, Proceedings of the 3rd Conference on Networked Systems Design & Implementation, vol. 3, pp. 129-142 (2006) (14 pages).
Agarwal et al., “Matchmaking for Online Games and Other Latency-Sensitive P2P Systems”, ACM SIGCOMM Computer Communication Review, vol. 39. No. 4, pp. 315-326 (2009) (12 pages).
H. Casanova, “Benefits and Drawbacks of Redundant Batch Requests”, Journal of Grid Computing, vol. 5, pp. 235-250 (2007) (16 pages).
S. J. Murdoch, “New Tor distribution for testing: Tor Browser Bundle”, Jan. 30, 2008 post to tor-talk mailing list (1 page).
Erich Gamma et al., Design Patterns: Elements of Reusable Object-Oriented Software (1st ed., 1994) (12 pages).
L.J Fogel et al., “Modeling the Human Operator with Finite-State Machines” NASA Contractor Report (Jul. 1968) (238 pages).
MacPherson Decl. Exh. A, IEEE 802.11-2007—Telecommunications and Information Exchange Between Systems—Local and Metropolitan Area Networks—Specific Requirements—Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, Revision of ANSI/IEEE Std 802.11, 1999 Edition (R2003) (1236 pages).
W. R. Stevens “TCP/IP Illustrated, vol. I: The Protocols”, Addison Wesley Longman, Inc. 1994 (67 pages).
Michael J. Freedman et al., “Democratizing content publication with Coral”, In Proc. 1st Symposium, Mar. 2004 (14 pages).
Andy Oram, “Peer-to-Peer: Harnessing the Power of Disruptive Technology”, Chapters Accountability and Free Haven, First Edition Mar. 2001 (265 pages).
RFC 2109, HTTP State Management Mechanism, Feb. 1997 (21 pages).
Related Publications (1)
Number Date Country
20230412667 A1 Dec 2023 US
Provisional Applications (1)
Number Date Country
61249624 Oct 2009 US
Divisions (1)
Number Date Country
Parent 12836059 Jul 2010 US
Child 14025109 US
Continuations (8)
Number Date Country
Parent 17714423 Apr 2022 US
Child 18241874 US
Parent 17146728 Jan 2021 US
Child 17714423 US
Parent 17019268 Sep 2020 US
Child 17146728 US
Parent 16910863 Jun 2020 US
Child 17019268 US
Parent 16600504 Oct 2019 US
Child 16910863 US
Parent 16278105 Feb 2019 US
Child 16600504 US
Parent 15957950 Apr 2018 US
Child 16278105 US
Parent 14025109 Sep 2013 US
Child 15957950 US