`a2) Patent Application Publication o) Pub. No.: US 2006/0212584 Al
`(43) Pub. Date: Sep. 21, 2006
`
`Yu et al.
`
`US 20060212584A1
`
`(54) METHOD AND SYSTEM FOR
`ACCELERATING DOWNLOADING OF WEB
`PAGE CONTENT BY A PEER-TO-PEER
`NETWORK
`
`Publication Classification
`
`(51)
`
`Int. Cl.
`GO6F 15/16
`
`(2006.01)
`
`(75)
`
`Inventors: Mingjian Yu, Beijing (CN); Zhenchun
`Li, Beijing (CN)
`
`(52) US. C0 ccessscsssssssssssestecestnsssensesstosesenesseee 709/227
`
`Correspondence Address:
`HAYNES AND BOONE, LLP
`901 MAIN STREET, SUITE 3100
`DALLAS, TX 75202 (US)
`
`(57)
`
`ABSTRACT
`
`(73) Assignee: Qian Xiang Shi Ji (Beijing) Technology
`Development Co. Ltd., Beijing (CN)
`
`(21) Appl. No.:
`
`11/314,581
`
`(22)
`
`Filed:
`
`Dec. 21, 2005
`
`Related U.S. Application Data
`
`(60) Provisional application No. 60/662,131, filed on Mar.
`15, 2005. Provisional application No. 60/719,423,
`filed on Sep. 22, 2005.
`
`A method and system for accelerating downloading and
`displaying of content in web pagesin a peer-to-peer network
`is provided. A peer-to-peer network client captures a down-
`load request from a web browser, and submits a query that
`includes an identifier of the file to an indexing server. The
`peer-to-peer network client receives a peer list including
`connectivity information of a peer node that has stored at
`least a portion ofthe file content. The peer-to-peer network
`client then connects with the peer node, and downloads the
`portion from the peer node. The peer-to-peer client conveys
`the downloaded portion to the web browser.
`
`700~~,
`
`Peer Node 703
`Peer Client 740
`
`
`
`
`
`
`Proxy Server 730
`
`Web Browser 701
`
`
`
` Indexing Server
`Database
`704
`
`mo
`
`
`
`
`
`
`
`Peer Node
`740
`
`WebServer
`205
`
`Data Co Exhibit 1053
`Data Co Exhibit 1053
`Data Co v. Bright Data
`
`Data Cov. Bright Data
`
`
`
`Patent Application Publication Sep. 21,2006 Sheet 1 of 7
`
`US 2006/0212584 Al
`
`
`
`
`
`Web Browser
`
`Web Page
`104
`
`
`
`102 File in Web Page
`
`103
`
`
` File in Web Page
`110
`
`
`
`Figure 1
`
`
`
`Patent Application Publication Sep. 21,2006 Sheet 2 of 7
`
`US 2006/0212584 Al
`
`200 “a
`
`250
`
`220
`
`221
`
`222
`
`223
`
`224
`
`.
`
`Figure 2
`
`240
`
`]
`
`260
`
`230
`
`231
`
`232
`
`
`
`Patent Application Publication Sep. 21,2006 Sheet 3 of 7
`
`US 2006/0212584 Al
`
`Figure 3
`
`
`
`Patent Application Publication Sep. 21,2006 Sheet 4 of 7
`
`US 2006/0212584 Al
`
`400
`
`™
`
`Peer Node 403
`
`Web Browser 401
`
`
`
`
`
`
`
`
`
`
`Indexing Server
`Database
`404
`420
`
`
`
`
` Peer Node
`Peer Node
`
`Web Server
`406
`410
`405
`
`
`
`
`Figure 4
`
`
`
`Patent Application Publication Sep. 21,2006 Sheet 5 of 7
`
`US 2006/0212584 Al
`
`500 —
`
`502
`
`Receive Browser
`
`Request
`
`Query Indexing Server
`
`510
`
`Receive PeerList
`
` Retrieve Data from Source
`Server or Mirror Site
`
`— 518
`Cache Downloaded
`Data
`
`520
`
`Report Information on
`Cached Data to
`Indexing Server
`
`522
`
`
`
`
`Await Another
`Browser Request
`
`
`Figure 5
`
`
`
`Patent Application Publication Sep. 21,2006 Sheet 6 of 7
`
`US 2006/0212584 Al
`
`602
`
`Web Browser
`604
`
`BHO Site
`610
`
`Peer Client
`
`Figure 6
`
`Peer Node 703
`Peer Client 740
`
`
`
`
`Proxy Server 730
`
`700—~,
`
`
`
`
`
`Web Browser 701
`
`
`
`
` Indexing Server
`Database
`704
`720
`
`
`
`
`Peer Node
`oo
`
`WebServer
`705
`
`Figure 7
`
`
`
`Patent Application Publication Sep. 21,2006 Sheet 7 of 7
`
`US 2006/0212584 Al
`
`800 —~
`
`
`
`820 821 822 823 824
`
`Figure 8
`
`
`
`US 2006/0212584 Al
`
`Sep. 21, 2006
`
`METHOD AND SYSTEM FOR ACCELERATING
`DOWNLOADING OF WEB PAGE CONTENT BY A
`PEER-TO-PEER NETWORK
`
`RELATED APPLICATION DATA
`
`[0001] This patent application claims the benefit of pro-
`visional U.S. Patent Application Ser. No. 60/662,131, filed
`Mar. 15, 2005, and provisional U.S. Patent Application Ser.
`No. 60/719,423, filed Sep. 22, 2005.
`
`BACKGROUND
`
`Ina client-server network adapted to provide con-
`[0002]
`tent, such as hypertext markup language (HTML) pages to
`clients, many clients may concurrently connect with a
`server. The processing capacity of a server in such a network
`is limited. If the number of clients connected to the server
`
`exceeds the processing or transmission capacity of the
`server, the media server may be unable to provide a high
`quality of service to the clients, crash, discontinue service to
`clients, or refuse connections to clients.
`
`[0003] Peer-to-peer networking solutions reduceor elimi-
`nate capacity deficiencies that are common in client/server
`network configurations. Peer-to-peer network technologies
`distribute processing and transmission demands among peer
`clients in the network. Thus, as a peer-to-peer network
`grows in size, so to does the processing and transmission
`capacity of the peer-to-peer network.
`
`[0004] Traditional web page browsers download a web
`page from a web server. If the web page contains more
`content to be displayed, such as images, macromedia flash
`files in embedded flash players, multimedia files in embed-
`ded windows media players, or the like, the browser acti-
`vates additional downloading processes and downloads
`these files. This download process may consume an unde-
`sirable amount of time, particularly when the multimedia
`files are large in size.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0005] Aspects of the present disclosure are best under-
`stood from the following detailed description when read
`with the accompanying figures, in which:
`
`[0006] FIG. 1 is a diagrammatic representation of an
`embodimentof a traditional web page content downloading
`process;
`
`[0007] FIG. 2 is a diagrammatic representation of an
`embodiment of a client-server network that may facilitate
`storage and retrieval of data content to various clients;
`
`[0008] FIG. 3 is a diagrammatic representation of an
`embodiment of a peer-to-peer network that may facilitate
`content delivery to various peerclients;
`
`[0009] FIG. 4 is a diagrammatic representation of an
`embodiment of a peer-to-peer network that facilitates data
`distribution among various peerclients;
`
`FIG.5 is a flowchart of an embodiment of a peer
`[0010]
`client processing routine for downloading file content in a
`peer-to-peer network;
`
`[0011] FIG. 6 is a diagrammatic representation of an
`embodimentof a system configuration for capturing requests
`submitted through a web browser that facilitates peer-to-
`peer exchange of content;
`
`[0012] FIG. 7 is a diagrammatic representation of an
`embodiment of a peer-to-peer network configuration that
`facilitates data distribution by way of a proxy mechanism;
`and
`
`[0013] FIG. 8 is a diagrammatic representation of an
`embodiment of data segmentation for facilitating content
`delivery and display by a peer node.
`
`DETAILED DESCRIPTION
`
`Itis to be understood that the following disclosure
`[0014]
`provides many different embodiments, or examples,
`for
`implementing different features of various embodiments.
`Specific examples of components and arrangements are
`described below to simplify the present disclosure. These
`are, of course, merely examples and are not intended to be
`limiting.
`In addition,
`the present disclosure may repeat
`reference numerals and/or letters in the various examples.
`This repetition is for the purpose of simplicity and clarity
`and does not in itself dictate a relationship between the
`various embodiments and/or configurations discussed.
`
`[0015] FIG. 1 is a diagrammatic representation of an
`embodimentofa traditional web page content downloading
`process. A web browser 101 running on a client computer
`requests a web page 102 from a source server by way of a
`uniform resource locator that specifies a network location or
`address of web page 102. After retrieving the web page or
`part of the web page, the web browser analyzes the content
`in the web page to determine if there are additional com-
`ponents 103-110, such as images, ActiveX objects, Macro-
`media flash files in an embeddedflash player, multimedia
`files in an embedded Windows Media Player, or other
`embedded content, in the web page to be downloaded. Web
`browser 101 may then activate additional processes to
`download embedded components, if any. Some components
`maybe displayed within the web page whilethefile is being
`downloaded, such as images or Flash files in ActiveX
`objects.
`
`[0016] The mechanism for downloading files and content
`embedded therein for a conventional web browser includes
`
`accessing the source server(s) directly. As numerousclients
`access the source server, the quality of service of the source
`server may be adversely effected. The downloading process
`may often consume a substantial
`time to complete the
`retrieval of files from the source server.
`
`[0017] FIG. 2 is a diagrammatic representation of an
`embodimentofa client-server network 200 that may facili-
`tate storage andretrieval of data content, such as web pages,
`to various clients 220-224. Client-server network 200 com-
`
`prises multiple content servers 230-232 configured in a
`cluster 250. Content servers 230-232 may store or otherwise
`access duplicate content. Content servers 230-232 may be
`interconnected by a network link 240, such as an Ethernet.
`Content provided by cluster 250 may be load-balanced
`among, content servers 230-232. Clients 220-224 are pro-
`vided content by connecting with cluster 250, for example
`by wayof a public network 260, such as the Internet.
`
`[0018] Each of content servers 230-232 may provide con-
`tent delivery services for a finite numberof clients, and thus
`the client service capacity of cluster 250 is limited to the
`aggregate service capacity of content servers 230-232. If the
`demandplaced on cluster 250 becomestoo large, the service
`
`
`
`US 2006/0212584 Al
`
`Sep. 21, 2006
`
`quality provided to clients 220-224 may be degradedor one
`or more of clients 220-224 may be disconnected from cluster
`250. Conventional solutions for addressing excessive loads
`placed on cluster 250 generally include expanding the
`processing capacity of cluster 250, for example by adding
`additional content servers to cluster 250, upgrading the
`capacity of existing content servers, or by other mecha-
`nisms. Such system reconfigurations are costly due to both
`hardware and labor expenses.
`
`[0019] FIG. 3 is a diagrammatic representation of an
`embodimentof a peer-to-peer network 300 that may facili-
`tate content delivery to various peer clients 310-317. Net-
`work 300 includes peer clients 310-317 that may be inter-
`connected with other clients in network 300. Additionally,
`network 300 may include a control server 331 and a content
`source 332. One or more clients may connect with control
`server 331 and content source 332 in addition to other
`network clients. Clients 310-317 may connect with other
`network clients, control server 331 and content source 332
`by network connections 340-354, such as wire, wireless
`communication links, fiber optic cables, or other suitable
`network media.
`
`[0020] Control server 331 may facilitate connection of
`newclients within network 300 and organize clients 310-
`317 that have joined network 300. Clients 310-317 may be
`implemented as data processing systems, such as personal
`computers, wired or wireless laptop computers, personal
`digital assistants, or other computational devices capable of
`network communications.
`
`[0021] Content source 332 may be implemented as a
`server that stores or accesses content, such as HTMLcon-
`tent, streaming video, audio, or the like, and transmits the
`data to one or more clients in network 300. For example, the
`content may be retrieved from a file that is accessed by
`content source 332 from a storage device 360. Content
`source 332 may divide content into data segments that are
`distributed within network 300 as described more fully
`below. Various clients 310-317 may receive and store dif-
`ferent data blocks of the content.
`
`[0022] Control server 331 maintains a peer list 370 that
`includes connectivity information,
`such as a network
`address and port number, of respective peer clients that are
`connected within peer-to-peer network 200. When control
`server 331 generates peerlist 370, connectivity information
`of content source 332 may be the only connectivity infor-
`mation included in peer list 370. A client joins peer-to-peer
`network 300 by first connecting with control server 331 and
`submitting a request for peer list 370. The control server
`returns peer list 370 to the requesting client, and the client
`joins network 300 by selecting one or more nodes having
`connectivity information included in peer list 370 and con-
`necting with the selected nodes.
`
`[0023] When a newclient joins peer-to-peer network 300,
`control server 332 may add connectivity information of the
`newly joining client to peer list 370. In this manner, as
`additional clients join peer-to-peer network 300, the avail-
`ability of peer clients with which subsequently joining
`clients may connect is increased. Connectivity information
`of content source 332 may be removed from peer list 370,
`for example when the number of clients connected within
`peer-to-peer network 300 reaches a pre-defined threshold. In
`this manner, the load placed on content source 332 may be
`
`reduced. A client connected within peer-to-peer network 300
`that desires content originally provided by content source
`332 may submit a query for the content to peer clients with
`which the requesting client is connected. If no peer clients
`within network 300 have the requested content (or no peer
`clients within network 300 are available for delivery of the
`content to the requesting client), the requesting client may
`obtain the content from content source 332.
`
`[0024] A peer client that receives content from content
`source 332 may be configured to cache or temporarily store
`the content (or a portion thereof) for playback. Additionally,
`a client may distribute cached streaming content to other
`peer clients. Content may be segmented by content source
`332 into data blocks or segments that each have an associ-
`ated sequence number. Playback or display of content is
`performed by arranging data blocks into a proper sequence
`based on the data blocks’ sequence numbers. Network 300
`may comprise a transient Internet network, and thus clients
`310-317, control server 331, and content source 332 may use
`the Transmission Control Protocol/Internet Protocol (TCP/
`IP) suite of protocols to communicate with one another.
`Alternatively, network 300 may be implemented in any
`numberofdifferent types of networks, such as for example,
`an intranet, a local area network (LAN), or a wide area
`network (WAN). Additionally, control server 331 and con-
`tent source 332 are shownas distinct entities within network
`300. However, control server 331 and content source 332
`may be collectively implemented in one or more common
`network nodes. FIG.3 is intended as an example, and not as
`an architectural
`limitation, of embodiments described
`herein.
`
`[0025] Embodiments disclosed herein provide mecha-
`nisms for downloading web content within a peer-to-peer
`network. Advantageously,
`the load of the source server
`which originates the content may be reduced as the content
`is distributed within the peer-to-peer network and the down-
`loading speed within the peer-to-peer system may be
`increased.
`
`[0026] FIG. 4 is a diagrammatic representation of an
`embodiment of a peer-to-peer network 400 that facilitates
`data distribution. A peer client 440 is run by a peer node 403.
`Peer client 440 first captures a download request of a web
`browser 401 run by peer node 403. For example, a user may
`enter a request for content in web browser 401 running on
`peer node 403. The request entered by the user may, for
`example, comprise a URL entered in an address field of web
`browser 401. Peer client 440 may read or otherwiseretrieve
`the content identifier from the request and may formulate or
`otherwise generate a query that includes the identifier. For
`example,
`functions of the present embodiment may be
`implemented as computer instructions implemented as a
`hook that receives a URL entered in an address field of
`
`browser 401 and temporarily interrupts or suspends the
`browser retrieval functionality. Peer client 440 may take
`over data retrieval functions of browser 401 if the requested
`content, or a portion thereof, is available in network 400.
`Accordingly, browser 401 does not attempt to connectto the
`network address specified by the URL unless the suspension
`of retrieval functionality is released by client application
`440. After receiving the content identifier, peer client 440
`maythen send a query including the content identifier to an
`indexing server 404.
`Indexing server 404 maintains or
`interfaces with a database 420 or other suitable data struc-
`
`
`
`US 2006/0212584 Al
`
`Sep. 21, 2006
`
`ture that maintains records of content and identifiers asso-
`ciated therewith that are stored, at least
`in part, within
`peer-to-peer network 400. Preferably,
`identifiers of peer
`nodes maintaining particular content are maintained in asso-
`ciation with identifiers of the content. For example, content
`identifiers, such as web page URLs, may be recorded in
`association with peer node identifiers, such as network
`addresses of peer nodes. The peer node identifiers and
`content identifiers may be recorded in database 420. In this
`manner, indexing server 404 may query database 420 with
`a content identifier read or otherwise retrieved from a query
`submitted by a peer node, such as peer node 403. Indexing
`server 404 may generate a peerlist that includes connectiv-
`ity information, such as respective network addresses, of one
`or more peer nodes 406-410, if any, that currently maintain
`the requested content specified by the identifier in the query
`submitted by peer node 403. The connection information
`may include the IP address and listening port of the peer, or
`other connectivity information. The peer list may then be
`returned to the querying peer client 440 in a query response.
`If no peer is available in the returned query response, peer
`client 440 may connect to the source server and download
`the file. Alternatively, peer client 440 may pass control back
`to browser 401, and browser 401 may subsequently connect
`with the source server and downloadthe file. For example,
`assume the URL of the requested content specifies an
`address hosted by web server 405 external to peer-to-peer
`network 400.
`In the event that no peer nodes 406-410
`currently maintain the requested content, browser 401 may
`be directed to connect with web server 405 to obtain the
`
`requested content therefrom.
`
`[0027] Notably, the location of content, such as a web
`page, within peer-to-peer network 400 is not specified by a
`file URL but rather by the association of the URL, or other
`suitable identifier, with a peer nodeidentifier, such as a peer
`node address. In other implementations, a peer client may
`use an identifier derived from a file URL as a content
`identifier rather than the URLitself.
`
`In some implementations, a peer node and URL
`[0028]
`association may not uniquely determine a file location
`within network 400. For example, a source server that
`originated a particular file may changethefile that is located
`at a particular URL for providing another web service or
`other content. In order to provide a unique identifier for the
`file, a peer client may connect to the source server and
`retrieve the file size and the last modification time ofthefile.
`Theclient then uses a combination of file URL,file size and
`file’s last modification time as an identifier of the file or a
`
`derived format of the combination. Accordingly, indexing
`server 404 may maintain additional information related to
`content maintained in network 400 in association with the
`
`content identifier and identifications of peer node(s) that
`maintain the content. For example, indexing server 404 may
`maintain file size and modification time in association with
`an identifier of the file or content and identifications of any
`peer nodes that maintain the content within network 400.
`
`In addition to connectivity data of any peer nodes
`[0029]
`and/or a content source, such as web server 405,
`that
`maintains requested content, a peer list generated by index-
`ing server 404 mayinclude connectivity information of
`mirror sites of the content source. Directing peer nodes to
`retrieve content from a mirror site may facilitate a reduction
`in the load placed on the source server.
`
`If there are available peers in the peer list returned
`[0030]
`to peer client 440 from indexing server 404, client 440 may
`then connect to one or more ofthe peers identified in the peer
`list, send a query with the file identifier to the peers, and
`retrieve thefile, or a portion thereof, from the peers. If the
`client retrieves only a portion of the file, the client may
`specify start and end positions of the file, e.g., by way of
`specifying particular data blocks or segments of the file.
`
`[0031] Other peers, such as peer nodes 406-410 in peer-
`to-peer network 400 may be configured in a similar manner
`as peer node 403 and thus may retrieve content in a similar
`manner as that described with regard to peer node 403.
`Additionally, peer nodes 403 and 406-410 may provide
`uploading services within network 400. A peer client pref-
`erably listens at a particular port and waits for connections
`from other peer nodes within network 400. In this manner,
`requests for content from other peer nodes is made over the
`port, and a peer node maythen provide other peer nodes with
`uploading service in response to a request for content.
`
`[0032] When a peer client downloads content of a file,
`either from other peers or from the source server, it may save
`the file or portion ofthefile into a file cache. In this manner,
`the peer client may provide uploading service ofthe file. The
`peer client may determine whetherto save a downloadedfile
`according to some pre-defined rule, eg., based on the
`client’s free disk space, the client’s bandwidth, etc. If the
`peer client does save the file, or a portion thereof, the peer
`client preferably reports information of the saved file to
`indexing server 404. Indexing server 404 may update data-
`base 420 to indicate that the client currently has the file
`stored and available for upload to other peer clients.
`
`[0033] FIG.5 is a flowchart of an embodiment of a peer
`client processing routine for downloading file content in a
`peer-to-peer network. When the browserreceives a request
`for a file (step 502), the peer client obtains the request (step
`504) and forms a file identifier therefrom (step 506). For
`example, the peer client may use a URL obtained from the
`browser request as thefile identifier or an identifier derived
`from the URL. The peer client then queries the indexing
`server with a request for the file (step 508). The query
`submitted to the indexing server may include an identifier of
`the file obtained from the browser request or an identifier
`derived therefrom. The peer client then awaits receipt of a
`peerlist from the indexing server (step 510). The peer client
`evaluates the peer list
`to determine if any peer nodes
`maintain the requested content (or a portion thereof) and are
`available within the peer-to-peer network (step 512).
`
`Ifthe peerlist does not specify any peer node, the
`[0034]
`peer client mayretrieve the file from the source server or a
`mirror site thereof (step 516). For example, connectivity
`information of mirror sites of a source server may be
`includedinthe peerlist to facilitate reducing the load placed
`on the source server. If no peer nodes or mirror sites are
`specified in the peerlist, the peer client processing routine
`may pass control back to the browser such that the browser
`connects with the sourceserver, e.g., according to the URL
`of the original browser request. After retrieving the content
`from the source server or a mirror site thereof, the peer client
`may proceed to cache the retrieved content (step 518) to
`make the content available for other peerclients.
`
`[0035] Returning again to step 512, if the peer list does
`identify peer nodes that have the requested content, the peer
`
`
`
`US 2006/0212584 Al
`
`Sep. 21, 2006
`
`client may then proceed to connect to one or moreofthe peer
`nodes identified in the peer list and retrieve the requested
`content therefrom (step 514). After the data is downloaded
`from the one or more peers, the peer client may cache the
`retrieved content according to step 518.
`
`[0036] The peer client may report information, e.g., the
`content identifier, size, content segment identifiers, or the
`like, regarding content that is cached to the indexing server
`(step 520). The client processing routine may then proceed
`to await another browser request (step 522).
`
`Information reported to the indexing server accord-
`[0037]
`ing to step 520 regarding cached content is saved by the
`indexing server in a record or other data structure to properly
`indicate the content maintained by the reporting peerclient.
`Whena peerclient requests a peerlist for particular content,
`the indexingserver retrieves correlated data records from the
`database, and returnsa peerlist to the requesting peerclient.
`Each peer record of a peer list includes connection infor-
`mation, such as IP address andlistening port, of a peer
`maintaining the requested content.
`
`[0038] To enhancethe reliability of information provided
`in peerlists to querying peer nodes, the indexing server may
`record online status information of peer nodes within the
`peer-to-peer network. To this end, each peer node mayreport
`its online status to the indexing server upon joining the
`peer-to-peer network. Likewise, a peer node may report its
`imminent exit from the network prior to exiting the peer-
`to-peer network. The indexing server preferably maintains
`the online status of each peer node.
`
`In another embodiment, a peer client may down-
`[0039]
`load a portion of content from one source and another
`portion (or portions) from another source (or sources). For
`example, a peer client may download an HTMLpagefrom
`a source server of the HTMLpage, and download embedded
`content of the HTML page from one or more peerclients in
`a peer-to-peer network. In this method, downloading of data
`intensive portions of an HTML page are effectively off-
`loaded to the peer-to-peer network thereby decreasing the
`load placed on the source server of the HTML page.
`
`604. A BHO is a COM in-process server registered under a
`particular registry’s key. Upon startup, web browser 604
`looks up the key and loads all the objects whose CLSID is
`stored there. The CLSID comprises a globally unique iden-
`tifier that specifies a COM class object. The browserinitial-
`izes the object and requests a certain interface. If that
`interface is found, web browser 604 may use the methods
`provided to pass its [Unknownpointer down to the helper
`object. The browser mayfind a list of CLSIDsinthe registry
`and create an in-process instance of each. As a result, such
`objects are loaded in the browser’s context and can operate
`as if the objects are native components of the browser. In the
`installed BHO, an interface for the Internet Protocol
`is
`registered and implemented.
`[0042] Each of BHOs 620-623 may perform respective
`functionsthatfacilitate exchange of content in a peer-to-peer
`network in accordance with embodiments disclosed herein.
`
`For example, BHO 620 may provide functionality that
`detects a web browser control event, such as a navigate
`eventthat indicates browser 604 will soon navigate to a new
`website, and that obtains information from the event. For
`example, BHO 620 mayretrieve the URL from a browser
`control event that identifies a network location which the
`browserwill navigate to without further intervention by one
`of BHOs 620-623. BHO 620 maypass the obtained URL to
`another BHO,such as one or more of BHOs 621-623. Other
`BHOs, such as BHO 621, may provide functionality for
`temporarily suspending or interrupting browser functional-
`ity by interfacing with the browser control to suspend the
`imminent navigation to a newsite. Still other BHOs may
`generate a content identifier and query the indexing server
`with the content identifier, while another BHO may process
`a peer list returned from the indexing server. Yet another
`BHO mayberesponsible for instigating connections with
`other peer nodes for retrieval of the requested content and
`passing the content to web browser 604. The BHOsdepicted
`are exemplary only and functionality of the present embodi-
`ment may be implemented in one or more BHOs.
`
`In another embodiment, a permanent protocol han-
`[0043]
`dler may beregistered for the web browser, such as Internet
`Explorer.
`In this implementation, a registration item or
`method for a protocol is registered in the operating system,
`[0040] As noted above, embodiments of the present dis-
`such as MICROSOFT WINDOWS. When the browser
`closure are implemented by capturing a requestforafile or
`receives data formatted according to the protocol, the reg-
`other data structure submitted through a web browser. To
`istered method associated with the protocol is loaded by the
`this end, the peer client may register callbacks, include a
`browser and processing of the data is passed to the method.
`modified system configuration, and/or include modifications
`The method includes logic for performing data exchange in
`of a web browser. Three exemplary mechanisms for captur-
`a peer network as described above.
`ing the request from the web browserare described below.
`The first two example embodiments may be implemented on
`[0044]
`In yet another embodiment, a proxy of a web
`MICROSOFT INTERNET EXPLORER web browser, and
`browser may be utilized to perform data exchange by a peer
`the third mechanism may beapplicable to Internet Explorer
`network. Many commercially available browsers have meth-
`or for other browsers.
`ods to setup proxy configurations. In this implementation, a
`proxy may be configured to pass processing to a module of
`the peer client from the browser, and the peer client may
`then take over data retrieval functions from the web browser.
`For example, the proxy may invoke methods, subroutines, or
`other logic that suspends retrieval functions of the web
`browser upon detection of a browser event, such as the
`beginning of a navigate event, and that passes control of data
`retrieval or exchange from the web browserto logic of the
`peer client.
`
`[0041] FIG. 6 is a diagrammatic representation of an
`embodimentof a system configuration for capturing requests
`submitted through a web browser that facilitates peer-to-
`peer exchange of content. A web browser 604, such as
`INTERNET EXPLORER manufactured by MICROSOFT
`CORPORATIONof Redmond, Wash., and a peer client 602
`are run by a peer node. A browserhelper object (BHO)site
`610 provides a component object model (COM)interface
`used to provide communications. Web browser 604 may
`automatically load various browser helper objects (BHOs)
`620-623 into its memory space on start up of web browser
`
`[0045] FIG. 7 is a diagrammatic representation of an
`embodiment of a peer-to-peer network 700 configuration
`
`
`
`US 2006/0212584 Al
`
`Sep. 21, 2006
`
`that facilitates data distribution by way of a proxy mecha-
`nism. Network 700 includes various peer nodes 703 and
`706-710. An indexing server 704 manages network 700 and
`may maintain records, for example in a database 720, of
`content stored in network 700 and associated identifying
`data of peer nodes maintaining the content. In general, a web
`browser 701 may be configured to provide a different proxy
`for various protocols, such as HTTP, HTTPS, FTP, Gopher,
`etc. Each protocol may be assigned a proxy with the proxy’s
`IP address and listening port. To this end, a peer node 703
`may be configured with a proxy server 730 that manages the
`various proxies. After the proxy configuration, the requests
`of a particular protocol associated with a peer client 740
`application running on peer node 703 are redirected to peer
`client 740. In this implementation, peer node 703 is config-
`ured as both a proxyserver and a peer-to-peer client. Peer
`client 740 waits for a request from browser 701, processes
`a request captured therefrom, retrieves data from peer-to-
`peer network 700 and/or a source server 705 external to
`peer-to-peer network 700, and then returns the data to
`browser 701.
`
`In accordance with an embodiment of the present
`[0046]
`disclosure, a peer client may selectively determine whether
`an attempt
`to retrieve requested content
`(or a portion
`thereof) is to be made from the peer-to-peer network. For
`example,
`the peer client may be configured to attempt
`retrieval of only data intensive content, e.g., media files such
`as shockwave Flash files, MPEG-formatted files, or other
`media content, from the peer-to-peer network. Accordingly,
`after capturing a request from a web browser, the peer client
`may evaluate the particular request and determine whether
`the content should be retrieved from the peer-to-peer net-
`work or the source server (or a mirror site thereof). For
`example, the peer client may be configured with one or more
`file extensions that are to be retrieved, if possib