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 method for obtaining over the Internet by a first device via a first server, a first content that is identified by a first Uniform Resource Locator (URL) and stored in a web server and a second content that is identified by a second URL and stored in the web server, for use with a group of Internet Protocol (IP) addresses where each of the IP addresses is associated with a geographical location, the method comprising:
selecting, by the first server, a first IP address from the group based on the geographical location associated with the first IP address;
receiving, by the first server from the first device over the Internet, the first URL;
sending, by the first server to the web server over the Internet, using the selected first IP address, the received first URL;
receiving, by the first server from the web server over the Internet, the first content, in response to the sending of the first URL;
sending, by the first server to the first device over the Internet, the first content;
measuring, a delay or a bandwidth (BW) associated with the receiving of the first content from the web server;
selecting, by the first server, a second IP address from the group based on the geographical location associated with the second IP address;
receiving, by the first server from the first device over the Internet, the second URL;
sending, by the first server to the web server over the Internet, using the selected second IP address, the received second URL;
receiving, by the first server from the web server over the Internet, the second content, in response to the sending of the second URL;
sending, by the first server to the first device over the Internet, the second content; and
measuring, a delay or a bandwidth (BW) associated with the receiving of the second content from the web server,
wherein each of the first content and the second content is a public content that is available from the web server for any requesting client device over the Internet.
2. The method according to claim 1 , wherein the first device comprises a mobile device.
3. The method according to claim 1 , further comprising measuring or estimating Bit Error Rate (BER), measuring or estimating Received Signal Strength Indicator (RSSI), measuring or estimating Packet Loss Ratio (PLR), or any combination thereof.
4. The method according to claim 1 , wherein the sending of the first URL to the web server comprises using the selected first IP address as a source address.
5. The method according to claim 1 , for use with multiple client devices, wherein each one of the multiple client devices is addressed using a respective IP address from the group.
6. The method according to claim 5 , wherein the sending of the first URL to the web server comprises:
sending, by the first server over the Internet, the first URL to a second device that is addressed in the Internet by the selected IP address;
receiving, by the second device from the first server over the Internet, the sent first URL;
sending, by the second device to the web server over the Internet, the received first URL;
receiving, by the second device from the web server over the Internet, the first content, in response to the sending of the first URL; and
sending, by the second device, the received first content to the first server over the Internet.
7. The method according to claim 5 , wherein each one of the multiple client devices is a portable device that stores, operates, or uses, a mobile operating system.
8. The method according to claim 5 , further comprising communicating over the Internet, by each one of the multiple client devices, with the first server.
9. The method according to claim 8 , further comprising storing, by the first server, the IP address of each one of the multiple client devices as part of the group of IP addresses, in response to the communicating.
10. The method according to claim 1 , wherein steps are sequentially executed.
11. The method according to claim 1 , wherein at least two steps are concurrently executed using multitasking or multiprocessing.
12. The method according to claim 1 , wherein the first device is a cellular telephone device.
13. The method according to claim 12 , wherein the cellular telephone device stores, operates, or uses, a mobile operating system that is one out of 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, and Blackberry® operating system.
14. The method according to claim 1 , wherein the first device comprises a client device.
15. The method according to claim 1 , for use with a third content identified by a third URL and stored in an additional web server, the method further comprising:
sending, by the first device to the first server over the Internet, the third URL;
receiving, by the first server from the first device over the Internet, the sent third URL;
sending, by the first server to the additional web server over the Internet, using the selected first IP address the third URL;
receiving, by the first server from the additional web server over the Internet, the third content from the additional web server, in response to the sent third URL;
sending, by the first server to the first device over the Internet, the third content; and
receiving, by the first device from the first server over the Internet, the third content.
16. The method according to claim 1 , further for obtaining over the Internet, by a second device, a third content identified by a third URL and stored in the web server, the method further comprising:
sending, by the second device to the first server over the Internet, the third URL;
receiving, by the first server from the second device over the Internet, the sent third URL;
sending, by the first server to the web server over using the selected first IP the Internet, the third URL address;
receiving, by the first server from the web server over the Internet, the third content, in response to the sending of the third URL;
sending, by the first server to the second device over the Internet, the third content; and
receiving, by the second device from the first server over the Internet, the received third content.
17. The method according to claim 1 , wherein the selecting comprises selecting based on attributes or characteristics of the IP addresses.
18. The method according to claim 17 , wherein the selecting is based on values of the IP addresses, based on past activities, based on a timing of an event, or any combination thereof.
19. The method according to claim 17 , wherein the selecting comprises selecting based on a physical geographical proximity to the web server.
20. The method according to claim 1 , wherein each of the IP addresses is in IPV4 or IPv6 form, and wherein the web server uses a HyperText Transfer Protocol (HTTP) and responds to HTTP requests via the Internet, and wherein any communication of the first device with the first server is based on, or using, a HTTP persistent connection.
21. The method according to claim 1 , wherein any communication over the Internet with the first device or with the server is based on, or according to, a TCP/IP protocol or connection.
22. The method according to claim 21 , further comprising establishing a connection with the first device using the TCP, and wherein the connection is established by performing ‘Active OPEN’ or ‘Passive OPEN’.
23. The method according to claim 1 , wherein the first content includes, consists of, or comprises, a part or whole of a computer file, audio data, voice data, multimedia data, video data, a computer program, or any combination thereof.
24. The method according to claim 1 , wherein the first content includes, consists of, or comprises, a part or whole of, a web-site page.
25. The method according to claim 1 , further comprising storing, operating, or using, by the first server, a server operating system.
26. The method according to claim 25 , wherein the server operating system consists or, comprises of, or based on, one out of Microsoft Windows Server®, Linux, or UNIX.
27. The method according to claim 25 , wherein the server operating system consists or, comprises of, or based on, one out of Microsoft Windows Server® 2003 R2, 2008, 2008 R2, 2012, or 2012 R2 variant, Linux™ or GNU/Linux based Debian GNU/Linux, Debian GNU/kFreeBSD, Debian GNU/Hurd, Fedora™, Gentoo™, Linspire™, Mandriva, Red Hat® Linux, SuSE, Ubuntu®, UNIX® variant Solaris™, AIX®, Mac OS X, FreeBSD®, OpenBSD, and NetBSD®.
28. The method according to claim 1 , wherein each of the geographical locations comprises a respective country.
29. The method according to claim 28 , wherein each of the geographical locations comprises a respective city.