`
`COMMUNICATION
`
`CROSS-REFERENCE TO RELATED APPLICATIONS
`
`The present application is a continuation application of U.S. non-provisional patent
`
`application 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. Patent 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.
`
`FIELD OF THE INVENTION
`
`The present invention is related to Internet communication, and moreparticularly,
`
`to improving data communication speed and bandwidth efficiency on the Internet.
`
`BACKGROUNDOF 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 demandonthe 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.
`
`
`
`Attorney Docket No. 19459-6105P
`
`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 byusers is slow;
`
`The problem for content owners — the tremendous amountof data being viewed byusersis
`
`costing large amounts of money in hosting and bandwidth costs; and
`
`The problem for Internet Service Providers (LSPs) — the growth in Internettraffic is requiring the
`
`ISPs to increase the infrastructure costs (Communication lines, routers, etc.) at tremendous
`
`financial expense.
`
`The need for a new method ofdata transfer that is fast for the consumer, cheap for the
`
`content distributor and does not require infrastructure investment for ISPs, has become a major
`
`issuc whichis yet unsolved.
`
`There have been many attempts at making the Internet faster for the consumer and
`
`cheaper for the broadcaster. Each such attemptis 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
`
`problemsassociated with the increase in Internettraffic. 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 Internct 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 Website and the Salesforce Web site, for example, where most of the page views
`
`on these Websites is tailored to the viewer, and is thus different for any two viewers. This
`
`dynamic information makesit impossible for most of the solutions offered to date to store the
`
`content and provide it to others seeking similar content.
`
`
`
`Attorney Docket No. 19459-6105P
`
`One solution that has been in use 1s 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 server4, 6, 8 is a
`
`device that is placed between one or moreclients, 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 comprchensive solution for Internct
`
`surfing, the proxy servers of FIG. 1 would need to be deployed at every point around the world
`
`wherethe 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 sucha solution, the capital investment
`
`would be in the range ofbillions 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-peerfile transfer
`
`network 50. In the network 50, files are stored on computers of consumers, referred to herein as
`
`
`
`Attorney Docket No. 19459-6105P
`
`client devices 60. Each consumercan 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 downloadthe 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 somesort of index by which to find the required data. In typical pccr-to-
`
`peerfile sharing systems, because the index is on a server 80, or distributed among several
`
`servers, the numberoffiles 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 mediafiles that are of interest to the mass (probably in the order of magnitude
`
`of millions of movics 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 ofbillions offiles that are available on the Internet of today, the cost
`
`of storing and maintaining such an index would be againin the billions of dollars. In addition,
`
`these types of peer-to-peerfile sharing systems are not able to deal with dynamic HTTPdata.
`
`In conclusion, a system does not exist that enables fast transmission of most of the data
`
`on the Internet, that does not incur tremendouscosts, 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.
`
`SUMMARYOF THE INVENTION
`
`The present system and method providesfor faster and moreefficient 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
`
`
`
`Attorney Docket No. 19459-6105P
`
`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 reccived 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 responseto the originated data request, wherein
`
`the portions of data may be transmitted to communication device upon request by the
`
`communication device.
`
`Othcr systems, mcthods, 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 accompanyingclaims.
`
`
`
`Attorney Docket No. 19459-6105P
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`Manyaspects of the invention can be better understood with reference to the following
`
`drawings. The componentsin the drawingsarc not necessarily to scalc, cmphasis instcad being
`
`placed uponclearly 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-peerfile transfer
`
`network.
`
`FIG. 3 is a schematic diagram providing an cxample of a communication nctwork 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 furtherillustrating 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 databasesutilized 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.
`
`
`
`Attorney Docket No. 19459-6105P
`
`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 peerlisting, from the agent.
`
`FIG. 12 is a flowchart illustrating steps taken by an agent, client, or peer to determine
`
`whether a certain HTTP requestis 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 embodimentof the invention.
`
`FIG. 15 is a flowchart further illustrating TCPIP acceleration in accordance with an
`
`alternative embodimentof 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 providesfor faster and moreefficient 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 cach communication device, cach
`
`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.
`
`
`
`Attorney Docket No. 19459-6105P
`
`Returning to FIG. 3, the exemplary embodimentof 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
`
`clicnt can communicate with any number of agents and pecrs.
`
`The communication network 100 also contains a Web server 152. The Webserver 152 is
`
`the server from which the client 102 is requesting information and may be, for example, a typical
`
`HTTPserver, such as those being used to deliver content on any of the many suchservers on the
`
`Internet. It should be noted that the server 152 is not limited to being an HTTPserver. 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 HTTPis not intendedto 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 cach such agent, the acceleration server assigns a list of IP addresscs.
`
`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
`
`
`
`Attorney Docket No. 19459-6105P
`
`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 embodimentof 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 numberofclients, agents, peers, acceleration servers,
`
`Webservers, and other components of the communication nctwork 100 may differ from the
`
`numberillustrated by FIG. 3. In fact, the numberof clients, agents, peers, acceleration servers,
`
`Webservers, 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
`
`embodimentof 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 knownin the art. The local interface 250
`
`
`
`Attorney Docket No. 19459-6105P
`
`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 cxccuting 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, whichis furtherillustrated 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,efc.)) 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 componentsare 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 Icast contains an accclcration 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
`
`10
`
`
`
`Attorney Docket No. 19459-6105P
`
`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 Webserver, 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 needsto 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,
`
`whichhas 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, efc. Furthermore, the I/O devices 240 mayalso include
`
`output devices, for example but not limited to, a printer, display, efc. 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.
`
`Whenthe 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
`
`11
`
`
`
`Attorney Docket No. 19459-6105P
`
`the software 212. The software 212 and the O/S 230, in whole orin part, but typically the latter,
`
`are read by the processor 202, perhaps buffered within the processor 202, and then executed.
`
`Whenfunctionality 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 meansthat 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,
`
`proccssor-containing system, or othcr 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 meansthat 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-exhaustivelist) 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)(clectronic), an crasable 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
`
`paperor 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
`
`12
`
`
`
`Attorney Docket No. 19459-6105P
`
`compiled, interpreted or otherwise processed in a suitable mannerif 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
`
`imtegrated 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 assumesthat the configuration database 280 and cache database 282 are located on the
`
`samestorage 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 commonto 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
`
`13
`
`
`
`Attorney Docket No. 19459-6105P
`
`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,
`
`HTTPheadersreturned by the Web Serverfor this URL, whenthe 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 cqually sized picces of data, in accordance with an
`
`alternative embodimentof the invention, the chunks mayinstead be ofdifferent size.
`
`FIG. 5 is a schematic diagram furtherillustrating 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 commandsfor 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 mcans of communicating within the nctwork 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, whichis
`
`used to view information that is located on remote Webservers, the acceleration application 220,
`
`14
`
`
`
`Attorney Docket No. 19459-6105P
`
`as described in more detail below, and any other applications 216 stored on the communication
`
`device 200.
`
`Asis explainedin 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. Oncethe acceleration application 220 modifies the requests, routes
`
`the requests to other system clements on the communication nctwork 100, and reccives replics
`
`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 furtherillustrating 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 modulesthat run in parallel, namely, a client module 224, a peer
`
`module 226, and an agent module 228, cach 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,
`
`15
`
`
`
`Attorney Docket No. 19459-6105P
`
`Webpages, 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 processis 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 commonto 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,
`
`HTTPrequests, that the communication device 200 has dispatched, either for its own
`
`consumption or on behalf of other elements of the communication network 100. Th