System and Method for Improving Internet Communication by Using Intermediate Nodes
A method for fetching a content from a web server to a client device is disclosed, using tunnel devices serving as intermediate devices. The client device accesses an acceleration server to receive a list of available tunnel devices. The requested content is partitioned into slices, and the client device sends a request for the slices to the available tunnel devices. The tunnel devices in turn fetch the slices from the data server, and send the slices to the client device, where the content is reconstructed from the received slices. A client device may also serve as a tunnel device, serving as an intermediate device to other client devices. Similarly, a tunnel device may also serve as a client device for fetching content from a data server. The selection of tunnel devices to be used by a client device may be in the acceleration server, in the client device, or in both. The partition into slices may be overlapping or non-overlapping, and the same slice (or the whole content) may be fetched via multiple tunnel devices.
1 . A tangible, non-transitory, machine-readable medium storing instructions that, when executed by a processor in a mobile device, cause performance of steps comprising:
periodically measuring a utilization level of a resource that is associated with a hardware component in the mobile device;
sending, to a first server over the Internet, in response to each of the periodically measuring, a message that is indicative of the measured utilization level and that includes an Internet Protocol (IP) address of the mobile device;
determining, in response to each of the periodically measuring, whether the measured resource utilization level satisfies a criterion;
receiving, from the first server over the Internet, a first content identifier comprises a first Uniform Resource Locator (URL) that identifies a first content that comprises a part of, or a whole of, a web-page stored in a web server;
sending, to the web server over the Internet, the received first content identifier;
receiving, from the web server over the Internet, the first content, in response to the sent first content identifier; and
sending, to the first server over the Internet, the received first content.
2 . The machine-readable medium according to claim 1 , wherein the mobile device comprises a smartphone.
3 . The machine-readable medium according to claim 1 , further storing instructions that, when executed by the processor in the mobile device, further cause performance of steps comprising:
responsive to the determining that the utilization level of the resource satisfies the criterion and to being in a second state, shifting the client device to a first state; and
responsive to the determining that the utilization level of the resource does not satisfy the criterion and to being in the first state, shifting the client device to the second state.
4 . The machine-readable medium according to claim 3 , further storing instructions that, when executed by the processor in the mobile device, further cause performance of steps comprising periodically sending a message that comprises a status of the mobile device, or is in response to the state of the mobile device.
5 . The machine-readable medium according to claim 4 , wherein the status is associated with being in the first or second state, and wherein the message is sent over the Internet to the first server.
6 . The machine-readable medium according to claim 1 , wherein the first content is public content that is available from the web server over the Internet for any requesting client device.
7 . The machine-readable medium according to claim 1 , wherein the receiving of the first content identifier comprises receiving of a HyperText Transfer Protocol (HTTP) request that comprises the first content identifier.
8 . The machine-readable medium according to claim 7 , wherein the HTTP request comprises a HTTP Secure (HTTPS) request.
9 . The machine-readable medium according to claim 7 , wherein the web server uses a HyperText Transfer Protocol (HTTP) and responds to HTTP requests via the Internet, and wherein the sending of the first content identifier to the web server comprises sending a HTTP request that comprises the first identifier.
10 . The machine-readable medium according to claim 7 , wherein a communication with the web server is based on, or uses, a HTTP persistent connection.
11 . The machine-readable medium according to claim 1 , further storing instructions that, when executed by the processor in the mobile device, further cause performance of steps comprising establishing a connection to the first server, wherein any communication with the first server is over the established connection, wherein the communicating between with the first server uses the Transmission Control Protocol (TCP), and wherein the connection is established by performing ‘Active OPEN’ or ‘Passive OPEN’.
12 . The machine-readable medium according to claim 11 , wherein the communication with the first server is based on, or is according to, a Virtual Private Network (VPN) and the established connection is using a tunneling protocol.
13 . The machine-readable medium according to claim 1 , wherein the IP address is in IPV4 or IPV6 form.
14 . The machine-readable medium according to claim 1 , wherein the mobile device comprises, or is part of, a digital camera.
15 . The machine-readable medium according to claim 14 , wherein the digital camera comprises, consists of, or includes, a still or video digital camera.
16 . The machine-readable medium according to claim 1 , wherein the first content includes, consists of, or comprises, a part or whole of, multimedia data, video data, an image, or any combination thereof.
17 . The machine-readable medium according to claim 1 , wherein the mobile device comprises a client device, the medium further storing instructions that, when executed by the processor in the mobile device, further cause performance of steps comprising operating, or using, a client operating system.
18 . The machine-readable medium according to claim 17 , wherein the client operating system consists or, comprises of, or is based on, Microsoft Windows 7, Microsoft Windows XP, Microsoft Windows 8, Microsoft Windows 8.1, Linux, or Google Chrome OS.
19 . The machine-readable medium according to claim 17 , wherein the client operating system is a mobile operating system.
20 . The machine-readable medium according to claim 19 , wherein the mobile operating system comprises, or is based on, Android version 2.2 (Froyo), Android version 2.3 (Gingerbread), Android version 4.0 (Ice Cream Sandwich), Android Version 4.2 (Jelly Bean), Android version 4.4 (KitKat), Apple iOS version 3, Apple iOS version 4, Apple iOS version 5, Apple iOS version 6, Apple iOS version 7, Microsoft Windows® Phone version 7, Microsoft Windows® Phone version 8, Microsoft Windows® Phone version 9, or Blackberry® operating system.
21 . The machine-readable medium according to claim 1 , further storing instructions that, when executed by the processor in the mobile device, further cause performance of steps comprising executing an application that comprises a web browser.
22 . The machine-readable medium according to claim 21 , wherein the web browser is a mobile web browser.
23 . The machine-readable medium according to claim 1 , for use with a set threshold value, and wherein the criterion is satisfied when the resource utilization level is above or below the threshold value.
24 . The machine-readable medium according to claim 1 , wherein the hardware component comprises, or consists of, a processor or Central Processing Unit (CPU) operation in the client device.
25 . The machine-readable medium according to claim 24 , wherein the resource utilization is based on, or comprises, the processor or CPU time of executing one or more threads or processes, wherein the resource utilization is based on, or comprises, the processor or CPU idling time, or wherein the resource utilization is based on, or comprises, the processor or CPU executing a system idle process.
26 . The machine-readable medium according to claim 1 , wherein the resource comprises, or consists of, an input or output capability.
27 . The machine-readable medium according to claim 26 , wherein the resource comprises, or consists of, a communication bandwidth of communication with another device over the Internet.
28 . The machine-readable medium according to claim 27 , wherein the resource comprises, or consists of, the communication bandwidth of communication with the first server over the Internet, or wherein the resource utilization is based on, or according to, IETF RFC 2914.
29 . The machine-readable medium according to claim 1 , wherein the message comprises, or is based on, an ‘heartbeat’ message, and wherein a time period between multiple messages sent is at least 10 milliseconds, 20 milliseconds, 30 milliseconds, 50 milliseconds, 100 milliseconds, 1 second, 2 seconds, 3 seconds, 5 seconds, 10 seconds, 20 seconds, 30 seconds, 50 seconds, 100 seconds, 1 minute, 2 minutes, 3 minutes, 5 minutes, or 10 minutes.
30 . The machine-readable medium according to claim 1 , further storing instructions that, when executed by the processor in the mobile device, further cause performance of steps comprising sending a physical geographical location to the first server, wherein the physical geographical location corresponds to the actual physical geographical location of the mobile device.
31 . The machine-readable medium according to claim 1 , wherein the mobile device comprises, consists of, or includes, a small appliance that is a CD or DVD player, a camcorder, a still camera, a clock, an alarm clock, a video game console, a HiFi or home cinema, a telephone, or an answering machine.
32 . The machine-readable medium according to claim 1 , wherein the instructions are provided as a Software Development Kit (SDK).
33 . The machine-readable medium according to claim 1 , wherein the hardware component comprises, or consists of, a memory in the client device, and wherein the resource utilization is based on, or comprises, an amount of used or unused location or space of the memory.