throbber
as) United States
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket