`a2) Patent Application Publication co) Pub. No.: US 2002/0059371 A1
`
` Jamailet al. (43) Pub. Date: May16, 2002
`
`
`US 20020059371A1
`
`(54) CACHING PROXY STREAMING APPLIANCE
`SYSTEMS AND METHODS
`
`Publication Classification
`
`(76)
`
`Inventors: John M. Jamail, Columbus, OH (US);
`Samson F. Creasey, Columbus, OH
`(US)
`Correspondence Address:
`OLIFF & BERRIDGE, PLC
`P.O. BOX 19928
`ALEXANDRIA,VA 22320 (US)
`
`(21) Appl. No.:
`(22)
`Filed:
`
`09/970,767
`Oct. 5, 2001
`Related U.S. Application Data
`
`(63) Non-provisional of provisional
`60/248,842, filed on Nov. 16, 2000.
`
`application No.
`
`Int. Ch? oe GO6F 15/16; GO6F 15/167
`(51)
`(52) US. Ch.
`caececsssccesssstsssaseesssssesesas 709/203; 709/213
`
`67
`
`ABSTRACT
`
`Aclient machine connects directly to a proxy server without
`the knowledge or without a programmed expectation that the
`proxy server will connect to another serverat all. ‘The client
`machine sendsa request directly to the proxy server, expect-
`ing that the content requested by the client machine resides
`on the proxy server. The proxy server,if it does not contain
`the requested content, obtains the requested content from a
`second server without the client machine ever knowingthat
`the contentdid not originally reside on the proxy server, and
`was instead obtained from the second server.
`
`
`
`310
`
`SECONDARY
`CLIENT
`SERVER
`MACHINE
`
`340
`
` CONTENT
`
`
`PROXY CONTENT
`REQUEST
`
`312
`REQUEST322
`
`\
`
`
`
`
`CONTENT324
`
`CONTENT
`
`STORAGE
`
`DEVICE 330
`CONTENT
`
`
`LOCATION
`MAP334
`
`
`Data Co Exhibit 1037
`Data Co Exhibit 1037
`Data Co v. Bright Data
`
`Data Cov. Bright Data
`
`
`
`Patent Application Publication May 16, 2002 Sheet 1 of 11
`
`US 2002/0059371 Al
`
`AUVAINOOAS
`
`AAAS
`
`AUVANOODAS
`
`WAAUAS
`
`
`
`
`
`INFINODAXOUdINALNOOD»SSaUddv
`
`
`
`IsanomilLSanoTd
`
`INALNOO
`
`INHTNOO
`
`AXOUd
`
`UAAMAS
`
`Lavaordd
`
`I‘Old
`
`
`
`
`
`
`Patent Application Publication May 16, 2002 Sheet 2 of 11
`
`US 2002/0059371 Al
`
`=,OLLSANOTd
`
`
`“ee,LN@LNOO
`
`*
`
`AAVANOODAS
`
`UHAUAS
`
`INALNOD\
`
`AUVAGNOOAS
`
`TWn..ov
`
`LN‘LINOO
`
`OLLSANOAL
`
`AYVANOOTS
`
`\WAAUAS
`
`
`
`SNOMIANINSITOD
`
`
`
`AaVAGAVELHNIHOVA
`
`INALNOOS
`
`OLLSANOTY
`
`AUVAONODIS
`
`AXOUd
`
`AAAS
`
`Iavword
`
`cOld
`
`CALOAUIGAA
`
`JNALNOO
`
`AUAVANOOES/OLLSANOTA
`
`WAAUASINALNOO
`
`
`
`“on,INTaVdd¥
`
`“»«2..
`
`s‘
`"en,
`we
`we*
`we
`Ne
`Me
`
`eaeay
`
`a"
`
`ae
`
`woeeee
`
`ar
`
`oeLNTAVddV
`et_INALNOD
`
`
`
`
`
`
`Patent Application Publication May 16, 2002 Sheet 3 of 11
`
`US 2002/0059371 Al
`
`
`
`AUVANOOESLNGAITO
`
`
`
`WAAMHSHNTHOVIA
`
`OrIOlt
`
`INaAILNOO
`
`O01
`
`
`
`
`
`INALNOOAXOUdLSAnouwrd
`
`|
`
`77LSANOTATI
`
`
`
`ZblLNALNOO
`
`
`
`_-v@lLNALNOD
`
`LNTINOD
`
`HOVAOLS
`
`OTHOIANd
`
`€Old
`
`
`
`
`
`
`
`Patent Application Publication May 16, 2002 Sheet 4 of 11
`
`US 2002/0059371 Al
`
`AYUVANOOAS
`
`
`
`INAITO
`
`WAATS
`
`ove
`
`tCLNS.LNOOD
`
`
`
`
`
`INALNOOAXOUdLsanowa
`
`INALNOO
`
`HDVAOLS
`
`
`
`0¢tHOIANA
`
`CHALELAY
`
`LNALINOO
`
`c£eNOILLYOd
`
`vyDid
`
`CECLSANOAATIT
`
`’77LNHULNOD
`
`LNALNOO
`
`ANIHOVI
`
`OI?
`
`007
`
`
`
`
`
`
`Patent Application Publication May 16, 2002 Sheet 5 of 11
`
`US 2002/0059371 Al
`
`
`
`AUAVANODASLNATTO
`
`
`
`WAAAASANTHOVIN
`
`OreOle
`
`LINALNOO
`
`
`
`
`
`INATINODAKOUdISAnNOde
`
`AXOUd
`
`UHAAAS
`
`Oze
`
`INHINOD
`
`ADVUOLS
`
`
`
`OffAOTANC
`
`LNAINOD
`
`NOILVOOT
`
`
`
`betdVW
`
`gDId
`
`\7ceLSANOUTIE
`
`
`
`¥cfLNALNOO
`
`
`
`
`
`
`
`Patent Application Publication May 16,2002 Sheet 6 of 11
`
`US 2002/0059371 Al
`
`RECEIVE FIRST CONTENT REQUEST
`FROM CLIENT MACHINE
`
`
`
`GENERATE SECOND CONTENT
`REQUEST FROM FIRST CONTENT
`REQUEST
`
`TRANSMIT SECOND CONTENT
`| REQUEST TO SECONDARY SERVER(S)
`
`RECEIVE CONTENT CORRESPONDING
`TO SECOND CONTENT REQUEST FROM
`ONE OF THE SECONDARY SERVER(S)
`
`
`
`
`TRANSMIT CONTEXT RECEIVED FROM
`ONE OF THE SECONDARY SERVER(S)
`CORRESPONDING TO 2ND CONTENT
`REQUEST TO CLIENT MACHINE AS
`CONTENT CORRESPONDINGTO FIRST
`CONTENT REQUEST
`
`S110
`
`$120
`
`3130
`
`5140
`
`5150
`
`FIG. 6
`
`
`
`Patent Application Publication May 16, 2002 Sheet 7 of 11
`
`US 2002/0059371 Al
`
`$200
`
`RECEIVE FIRST CONTENT REQUEST
`FROM CLIENT MACHINE
`
`
`
`
`1s
`
`
`REQUESTED
`
`
`CONTENT
`
`AVAILABLE
`LOCALLY9
`
`
`
`TRANSMIT SECOND CONTENT
`
`REQUEST TO SECONDARY SERVER(S)
`
`RECEIVE CONTENT CORRESPONDING
`
`
`
`TO SECOND CONTENT REQUEST FROM
`
`ONE OF THE SECONDARY SERVER(S)
`
`TRANSMIT LOCALLY STORED
`CONTENT TO CLIENT MACHINE
`
`AS CONTENT CORRESPONDING
`
`
`
` TRANSMIT CONTENT RECEIVED FROM
`TO FIRST CONTENT REQUEST
`ONE OF THE SECONDARY SERVER(S)
`
`CORRESPONDING TO 2ND CONTENT
`REQUEST TO CLIENT MACHINE AS
`
`CONTENT CORRESPONDING TO FIRST
`CONTENT REQUEST
`
`
`
`FIG. 7
`
`
`
`Patent Application Publication May 16,2002 Sheet 8 of 11
`
`US 2002/0059371 Al
`
`$300
`
`RECEIVE FIRST CONTENT REQUEST
`FROM CLIENT MACHINE
`
`S310
`
`$320
`
`Is
`REQUESTED
`CONTENT
`AVAILABLE
`
`LOCALLY
`1
`
`
`TO SECOND CONTENT REQUEST FROM
`
`ONE OF THE SECONDARY SERVER(S)
`
`
`
`
`
`
`
`
`
`
`TRANSMIT SECOND CONTENT
` RECEIVE CONTENT CORRESPONDING
`
`REQUEST TO SECONDARY SERVER(S)
`
`
`STORE RECEIVED CONTENT SO THAT
`RECEIVED CONTENT IS AVAILABLE
`
`
`LOCALLYIN RESPONSE TO FURTHER
`
`
`REQUESTS FOR THAT CONTENT
`
`TRANSMIT LOCALLY STORED
`CONTENT TO CLIENT MACHINE
`
`AS CONTENT CORRESPONDING
`
`
`
`
`TRANSMIT CONTENT RECEIVED FROM
`TO FIRST CONTENT REQUEST
`ONE OF THE SECONDARY SERVER(S)
`CORRESPONDINGTO 2ND CONTENT
`
`REQUEST‘TO CLIENT MACHINE AS
`CONTENT CORRESPONDINGTO FIRST
`
`
`CONTENT REQUEST
`
`
`
`FIG. 8
`
`
`
`Patent Application Publication May 16,2002 Sheet 9 of 11
`
`US 2002/0059371 Al
`
`RECEIVE FIRST CONTENT REQUEST |
`FROM CLIENT MACHINE
`
`S410
`
`$420
`
`IS
`REQUESTED
`CONTENT
`Y¥
`AVAILABLE
`
`LOCALLY
`
`9
`DOES
`
`LOCALLY
`
`AVAILABLE
`
`CONTENT NEED
`
`UPDATING
`
`9
`
`
`TRANSMIT SECOND CONTENT
`
`REQUEST TO SECONDARYSERVER(S)
`
`$430
`
`
`
`
`
`
`
`RECEIVE CONTENT CORRESPONDING
`TO SECOND CONTENT REQUEST FROM
`ONE OF THE SECONDARY SERVER(S)
`
`STORE RECEIVED CONTENT SO THAT
`RECEIVED CONTENT IS AVAILABLE
`LOCALLY IN RESPONSE TO FURTHER
`REQUESTSFOR THAT CONTENT
`
`TRANSMIT LOCALLY STORED
`CONTENT TO CLIENT MACHINE
`
`
`AS CONTENT CORRESPONDING
`
`
`
`TRANSMIT CONTENT RECEIVED FROM
`TO FIRST CONTENT REQUEST
`
`ONE OF THE SECONDARY SERVER(S)
`
`
`CORRESPONDING TO 2ND CONTENT
`
`
`REQUEST TO CLIENT MACHINE AS
`CONTENT CORRESPONDING TO FIRST
`
`CONTENT REQUEST
`
`FIG. 9
`
`
`
`Patent Application Publication May 16,2002 Sheet 10 of 11
`
`US 2002/0059371 Al
`
`RECEIVE FIRST CONTENT REQUEST
`FROMCLIENT MACHINE
`
`DETERMINE ONEOR MORE
`SECONDARY SERVERS THAT STORE
`THE REQUESTED CONTENT BASED ON
`
`STORED CONTENT MAP
`
`IS
`REQUESTED
`CONTENT
`LOCATION STORED
`IN MAP
`?
`
`$530
`
`N
`
`TRANSMIT SECOND CONTENT
`REQUEST TO SECONDARYSERVER(S)
`
`INDICATED BY CONTENT MAP
`ONE OF THE SECONDARY SERVER(S)
`
`RECEIVE CONTENT CORRESPONDING
`TO SECOND CONTENT REQUEST FROM
`
`TRANSMIT CONTENT RECEIVED FROM
`ONE OF THE SECONDARY SERVER(S)
`CORRESPONDING TO 2ND CONTENT
`REQUEST TO CLIENT MACHINE AS
`CONTENT CORRESPONDING TO FIRST
`
`CONTENT REQUEST
`
`|
`
`
`
`SEARCH DISTRIBUTED
`NETWORK FOR ONE OR MORE
`SECONDARY SERVERS THAT
`STORE REQUESTED CONTENT
`
`!
`
`STORE SEARCH RESULTSIN
`CONTENT MAP
`
`S510
`
`$520
`
`$540
`
`$550
`
`5560
`
`$570
`
`.
`5580
`
`FIG. 10
`
`
`
`Patent Application Publication May 16,2002 Sheet 11 of 11
`
`US 2002/0059371 Al
`
`RECEIVE FIRST CONTENT REQUEST
`FROM CLIENT MACHINE
`
`5610
`
`$620
`
`5630
`
`is
`REQUESTED
`CONTENT
`Y
`AVAILABLE
`
`LOCALLY
`
`9
`DOES
`
`
`LOCALLY
`
`
`AVAILABLE
`
`
`CONTENT NEED
`
`UPDATING
`
`
`
`
`SECONDARY SERVERS THAT STORE
`THE REQUESTED CONTENT BASED ON
`STORED CONTENT MAP
`
`
`
`9
` DETERMINE ONE OR MORE
`
`
`TRANSMIT SECOND CONTENT
`REQUEST TO DETERMINED
`SECONDARY SERVER
`
`
` TRANSMIT LOCALLY STORED
`
`RECEIVE CONTENT CORRESPONDING
`TO SECOND CONTENT REQUEST FROM
`ONE OF THE SECONDARY SERVER(S)
`
`STORE RECEIVED CONTENT SO TITAT
`RECEIVED CONTENT IS AVAILABLE
`LOCALLYIN RESPONSE TO FURTHER
`REQUESTS FOR THAT CONTENT
`
`TRANSMIT CONTENT RECEIVED FROM
`ONE OF THE SECONDARYSERVER(S)
`CORRESPONDING TO 2ND CONTENT
`REQUEST TO CLIENT MACTIINE AS
`CONTENT CORRESPONDINGTO FIRST
`CONTENT REQUEST
`
`FIG. 11
`
`CONTENT TO CLIENT MACHINE
`AS CONTENT CORRESPONDING
`TO FIRST CONTENT REQUEST
`
`
`
`US 2002/0059371 Al
`
`May 16, 2002
`
`CACHING PROXY STREAMING APPLIANCE
`SYSTEMS AND METHODS
`
`BACKGROUND OF THE INVENTION
`
`[0001]
`
`1. Field of Invention
`
`[0002] This invention is directed to systems and methods
`for using a proxy server to cache and stream data streams.
`
`[0003]
`
`2. Description of Related Art
`
`[0004] Proxy servers are conventionally used in distrib-
`uted network environments for a variety of purposes. Tra-
`ditionally, a worldwide web proxyis implemented with the
`knowledge of the user. The user, communicating using a
`client machine, knowsthat a proxy server is present in the
`network. The user ultimately wishes to communicate with a
`destination server machine. The user also knowsthat the
`
`client machine must connectto this proxy server, rather than
`connecting to what the user believes to be the actual desti-
`nation server. In this case, which is shown in FIG. 1, the
`client machine connects to the proxy server that it knows
`about over the network.
`
`[0005] The client machine sends a message to the proxy
`server to inform the proxy server of the final destination
`serverthat the client machine wantsto talk to. In general, the
`client machine does this by providing the website name or
`URLaddress of the actual destination server (server B) to
`the proxyserver (server A), in addition to providing the file
`name on the actual destination server that is to be down-
`loaded to the client machine, where server A indicates the
`server the client machine thinks he is communicating with,
`and server B is another server in the communication loop. In
`response, the proxy server connects to the actual destination
`server. The proxy server then retrieves the file from the
`actual destination server and sendsthatfile back to the client
`machine.
`
`‘This use of a proxy server is particularly useful
`[0006]
`when the client wants to retrieve a file having a predeter-
`mined length, and which has no special transport require-
`ments, such as, for example, a web page, a program to be
`retrieved over the network,or the like, that are single pieces
`of data. In particular, this use of a proxy server is inappro-
`priate tor data streaming applications wherethe file may not
`have a fixed or predetermined length, and where the data is
`streamed such that there are significant transport require-
`ments which must be met for
`the data to be properly
`streamed to the client machine.
`
`[0007] Conventional transparent proxy servers are also
`used in distributed network environments. Conventional
`
`transparent proxy servers are proxy servers that are inte-
`grated into a network structure. Client machines often
`attempt to connect directly to actual destination servers that
`contain the files or data that the user wishes to download to
`the client machine. Thus, in this case, which is shown in
`FIG.2, in contrast to the traditional proxy servers described
`above and shown in FIG. 1,
`the client machine initially
`attempts to connect directly to the actual destination server
`that contains the desired download file, by outputting a
`request directed to the website name or URL address ofthe
`actual destination machine and containing the file name of
`the file the user wishes to downloadorretrieve.
`
`[0008] The distributed network hardware installed at the
`location of the client machine, or installed at an upstream
`
`point in the distributed network from the client, transpar-
`ently intercepts this request. This distributed network hard-
`ware forwards the intercepted request
`to the transparent
`proxy server. The transparent proxy server determines the
`web site name or URL address of the actual destination
`server, and generates a new requestto the actual destination
`machine for the file originally requested by the client
`machine. The transparent proxy server obtains the file from
`the actual destination machine and forwardsthe obtained file
`to the client machine.
`
`[0009] Because this method of proxying is integrated into
`the network, the transparent proxy server is able to deter-
`mine, from the network data, where the request from the
`client machine was originally destined for. As a result, the
`transparent proxy server can determinethe actual destination
`server to connect to in order to retrieve the requested file.
`
`the
`in conventional proxy servers,
`Importantly,
`[0010]
`clicnt machine, and thus the uscr, never actually “scces” the
`proxyserver. The client machineacts asif the client machine
`weredirectly connected to the actual destination server that
`the client machine originally submitted the request to. Thus,
`as far as the client machine knows, the client machine is
`communicating with the actual destination server (server A)
`when the client machine is really communicating with a
`transparent proxy server (server B). That is,
`to the client
`machine, the transparent proxy server is transparent in the
`sense that the client machine neversees the interaction ofthe
`
`transparent proxy server with the actual destination server.
`In other words,
`the client machine never knowsthat the
`transparent proxy serveris there at all.
`
`[0011] The transparent proxy server is particularly useful
`when the network administrator wants to control which
`servers the client machine directly communicates with. ‘This
`is usually done to create firewalls between the client
`machine and a distributed network that the client machine
`
`to. By using the transparent proxy server,
`can connect
`virus-infected files and attacks by hackers on the client
`machine can be trapped and defended against.
`
`SUMMARYOF THE INVENTION
`
`[0012] This invention provides systems and methods that
`implement a proxy server that communicates transparently
`with servers containing content desired by a chent machine
`that are not known bythe client machine.
`
`[0013] This invention separately provides systems and
`methods that implement a proxy server that caches content
`obtained from another server as the proxy server transmits
`the content to a client machine.
`
`[0014] This invention provides systems and methods that
`implement a proxy server that maps the locations of other
`servers from which the proxy server was able to obtain
`content requested by a client machine communicating with
`the proxy server.
`
`In various exemplary embodiments of the systems
`[0015]
`and methods according to this invention, the client machine
`connects directly to the proxy server without the knowledge
`or without a programmed expectation that the proxy server
`will connect to another server at all. The client machine
`
`sends a request directly to the proxy server (server A)
`expecting that the content requested by the client machine
`resides on the proxy server. The proxy server, if it does not
`
`
`
`US 2002/0059371 Al
`
`May 16, 2002
`
`contain the requested content, obtains the requested content
`from a second server (server B) without the client machine
`ever knowingthat the content did notoriginally reside on the
`proxy server, and was instead obtained from the server B.
`
`[0016] These and other features and advantages of this
`invention are described in, or are apparent from, the follow-
`ing detailed description of various exemplary embodiments
`of the systems and methods according to this invention.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`(0017] Various exemplary embodiments of this invention
`will be described in detail, with reference to the following
`figures, wherein:
`
`[0018] FIG. 1 is a block diagram of a network including
`a first conventional proxy server;
`
`[0019] FIG. 2 is a block diagram of a network including
`a second conventional proxy server;
`
`[0020] FIG. 3 is a block diagram of a network including
`a first exemplary embodimentof a proxy server according to
`this invention;
`
`(0021] FIG. 4 is a block diagram of a network including
`a second exemplary embodiment of a proxy server accord-
`ing to this invention;
`
`[0022] FIG. 5 is a block diagram of a network including
`a third exemplary embodiment of a proxy server according
`to this invention;
`
`
`
`[0023] FIG. 6 is a flowchart outlining a first exemplary
`embodiment of a method for responding to a content request
`according to this invention;
`
`[0024] FIG. 7 is a flowchart outlining a second exemplary
`embodiment of a method for responding to a content request
`according to this invention;
`
`[0025] FIG. 8 is a flowchart outlining a third exemplary
`embodimentof a method for responding to a content request
`according to this invention;
`
`
`
`the proxy server 120 would be
`[0030] Conventionally,
`able to transmit the requested content to the client machine
`110 only if the requested content were previously stored in
`a content storage device 130 of the proxy server 120.
`Otherwise, the proxy server 120 would transmit an error
`message to the client machine 110.
`
`In contrast, according to the systems and methods
`[0031]
`of this invention, if the proxy server 120 does not currently
`contain in the content storage device 130 the content iden-
`tified in the request 112 from the client machine 110, the
`proxy server 120 contacts one of the secondary servers 140
`of the network 100 that contains the requested content. In
`particular, the proxy server 120 generates a new request 122
`and directs that request 122 to a particular one of the
`secondary servers 140 that is known to contain the content
`identified in the request 112. This secondary server 140, in
`response to the request 122, transmits the requested content
`142 to the proxy server 120. The proxy server 120 then
`retransmits the content 142 received from the secondary
`server 140 to the client machine 110 as the content 124.
`
`[0032] Thus, in contrast to the traditional proxy server
`shown in FIG. 1, the client machine 110 does not need to
`know,or even identify to the proxy server 120, the name or
`address of the secondary server 140 that actually contains
`the content corresponding to the content request 112. Nor
`does the client machine 110 intend or care whether the proxy
`server 120 contacts a secondary server 140 to obtain the
`content 124 that corresponds to the content request 112.
`
`the interactions between the proxy
`[0033] Moreover,
`server 120 and the secondary server 140 are transparent to
`the client machine 110. However, in contrast to the conven-
`tional transparent proxy server shown in FIG. 2, where the
`client wishes to communicate with a secondary server but
`ends up communicating with a proxy server, according to the
`systems and methods of this invention, the client machine
`110 according to the systems and methods ofthis invention
`actually intends to communicate with the proxy server 120,
`not any of the secondary servers 140.
`
`
`
`[0034] Thus, according to the systems and methods ofthis
`[0026] FIG.9is a flowchart outlining a fourth exemplary
`invention,
`in various exemplary embodiments, the proxy
`embodimentof a method for responding to a content request
`server 120 connects to one or more secondary servers 140 to
`according to this invention;
`obtain the content that the user has requested, without the
`user ever knowing to which particular secondary server 140
`the proxy server 120 was connected to obtained the
`requested content, or even whether or not the proxy server
`120 has to connect to some secondary server 140 to obtain
`the requested content.
`
`[0027] FIG. 10 is a flowchart outlining a fifth exemplary
`embodimentof a method for responding to a content request
`according this invention; and
`
`[0028] FIG. 11 is a sixth exemplary embodiment of a
`method for responding to a content request accordingto this
`invention.
`
`DETAILED DESCRIPTION OF EXEMPLARY
`EMBODIMENTS
`
`[0029] FIG. 3 is a block diagram of a network 100
`including a first exemplary embodiment of a proxy server
`120 according to this invention. As shown in FIG.3, the
`network 100 includes a client machine 110, the proxy server
`120 and any number of distinct secondary servers 140. The
`client machine 110 generates one or more requests 112 for
`content and directs these requests 112 directly to the proxy
`server 120. The proxy server 120 receives these requests 112
`and transmits the requested content 124 back to the client
`machine.
`
`in various other
`It should be appreciated that,
`[0035]
`exemplary embodiments, the content storage device 130 can
`be omitted from the proxy server 120. In this case, the proxy
`server 120 has no native content that can be provided to the
`client machine as the content 124 in response to the request
`122. As a result, the proxy server 120 would need to obtain
`all requested content from the various secondary servers 140
`of the network 100.
`
`It should also be appreciated that, in various exem-
`[0036]
`plary embodiments,the proxy server 120 can contain,as part
`of the content storage device 130,a list or table of secondary
`servers 140 and the actual content, and/or the categories of
`content,
`that can be obtained from each such secondary
`server 140.
`It should further be appreciated that,
`if the
`
`
`
`US 2002/0059371 Al
`
`May 16, 2002
`
`content storage device is to be omitted because the content
`storage device 130 will not be used to store content,
`the
`content storage device 130 can be nonetheless retained to
`store this list or table of the secondary servers 140 and the
`actual content that can be obtained from each such second-
`ary server 140.
`
`It should further be appreciated that, in various
`[0037]
`exemplary embodiments, the proxy server 120 can obtain
`the content corresponding to the content request 112, when
`the proxy server 120 either does not contain that content in
`the content storage device 130, or the content storage device
`130 is either omitted or is not used to store content, by
`generating one or more web searchesto identify one or more
`secondary servers 140 that contain the content correspond-
`ing to the content request 112. It should also be appreciated
`that this can be used to augmentthelist or table of secondary
`servers 140 discussed above, should the list or table of
`secondary servers 140 fail to identify a secondary server 140
`that contains the requested content.
`
`[0038] FIG. 4 is a block diagram of a network 200
`including a second exemplary embodimentof a proxy server
`220 according to this invention. As shown in FIG.4, the
`network 200 includes a client machine 210, the proxy server
`220 and any number ofdistinct secondary servers 240. The
`client machine 210 generates one or more requests 212 for
`content and directs these requests 212 directly to the proxy
`server 220. The proxy server 220 receives these requests 212
`and transmits the requested content 224 back to the client
`machine.
`
`the proxy server 220 would be
`[0039] Conventionally,
`able to transmit the requested content to the client machine
`210 only if the requested content were previously stored in
`a content storage device 230 of the proxy server 220.
`Otherwise, the proxy server 220 would transmit an error
`message to the client machine 210.
`
`In contrast, according to the systems and methods
`[0040]
`of this invention,if the proxy server 220 does not currently
`contain in the content storage device 230 the content iden-
`tified in the request 212 from the client machine 210, the
`proxy server 220 contacts one of the secondary servers 240
`of the network 200 that contains the requested content. In
`particular, the proxy server 220 generates a new request 222
`and directs that request 222 to a particular one of the
`secondary servers 240 that is known to contain the content
`identified in the request 212. This secondary server 240, in
`response to the request 222, transmits the requested content
`242 to the proxy server 220. The proxy server then retrans-
`mits the content received from the secondary server 240 to
`the client machine as the content 224.
`
`in this second exemplary
`the same time,
`{0041] At
`embodimentof the proxy server 220, the proxy server 220
`also stores the content received from the secondary server
`240 into a retrieved content portion 232 of the content
`storage device 230. Thus,
`the next
`time the client 210
`transmits a request 212 to the proxy server 220 for that
`content, the proxy server 220 will have that content stored
`in the retrieved content portion 232 of the content storage
`device 230 as native content. As a result, the proxy server
`220 will not need to connect to the appropriate secondary
`server 240 from which that content 242 was originally
`obtained, and will be able to immediately transmit
`the
`content 224 in response to the request 212.
`
`It should be appreciated that, in various exemplary
`[0042]
`embodiments, the content storage device 230 can initially
`contain no native content. In this case, the proxy server 220
`initially has no native content that can be provided to the
`client machine 210 as the content 224 in response to the
`request 212. As a result, the first time the proxy server 220
`receives a request 212 for any particular content, the proxy
`server 220 would need to obtain that requested content 242
`from one of the secondaryservers 240 of the network 200.
`Thereafter, that requested content 242 would then be stored
`in the retrieved content portion 232 of the content storage
`device 230 as native content.
`
`It should also be appreciated that, in various exem-
`[0043]
`plary embodiments,the proxy server 220 can contain,as part
`of the content storage device 239,a list or table of secondary
`servers 240 and the actual content, and/or the categories of
`content,
`that can be obtained from each such secondary
`server 240.
`
`It should further be appreciatedthat, if the content
`[0044]
`242 in the retrieved content portion 232 of the content
`storage device 230 that was obtained from a secondary
`server 240 has become “stale”, when a next request 212 for
`that content 242 is received by the proxy server 220, the
`proxy server 220 can “refresh” that obtained content 242
`stored in the retrieved content portion 232 of the content
`storage device 230 by again connecting with the appropriate
`secondary server 240 to obtain a current version of that
`content 242. The proxy server 220 would then replace the
`“stale” version of that content 242 in the content storage
`device 230 with the current version of that content 242.
`
`It should be appreciated that the proxy server 220
`[0045]
`can use any knownorlater-developed method or technique
`to determine whether or not the content 242 that is stored in
`
`the retrieved content portion 232 is “stale” when a content
`request 212 that correspondsto that content 242 is received
`by the proxy server 220. For example, in various exemplary
`embodiments, the proxy server 220 can determine that the
`content 242 corresponding to a particular content request
`212 stored in the retrieved content portion 232 is “stale”
`based on one or more of the length of time that the content
`242 has beenstored in the retrieved content portion 232, the
`type of the content 242 stored in the retrieved content
`portion 232, expiration information embeddedin the content
`242 stored in the retrieved content portion 232, an explicit
`request in the received content request 212 for updated
`content, or the like.
`
`in various
`It should further be appreciated that,
`[0046]
`exemplary embodiments, the proxy server 220 can obtain
`the content 224 corresponding to the content request 212,
`when the proxy server 220 either does not contain the
`content 242 corresponding to that content request 212 in the
`retrieved content portion 232 of the content storage device
`230, or the version of the content 242 in the retrieved content
`portion 232 of the content storage device 230 is “stale”, by
`generating one or more web searchesto identify one or more
`secondary servers 240 that contain the content 242 corre-
`sponding to that content request 212. It should also be
`appreciated that this can be used to augmentthe list or table
`of secondary servers 240 discussed above, should the list or
`table of secondary servers 240) fail to identify a secondary
`server 140 that contains the content 242 corresponding to
`that content request 212.
`
`
`
`US 2002/0059371 Al
`
`May 16, 2002
`
`[0047] FIG. 5 is a block diagram of a network 300
`including a third exemplary embodiment of a proxy server
`320 according to this invention. As shown in FIG. 5, the
`network 300 includes a client machine 310, the proxy server
`320 and any number ofdistinct secondary servers 340. The
`client machine 310 generates one or more requests 312 for
`content and directs these requests 312 directly to the proxy
`server 320. The proxy server 320 receives these requests 312
`and transmits the requested content 324 back to the client
`machine.
`
`the proxy server 320 would be
`[0048] Conventionally,
`able to transmit the requested content to the client machine
`310 only if the requested content were previously stored in
`a content storage device 330 of the proxy server 320.
`Otherwise, the proxy server 320 would transmit an error
`message to the client machine 310.
`
`In contrast, according to the systems and methods
`[0049]
`of this invention, if the proxy server 320 does not currently
`contain in the content storage device 330 the content iden-
`tified in the request 312 from the client machine 310, the
`proxy server 320 contacts one of the secondary servers 340
`of the network 300 that contains the requested content. In
`particular, the proxy server 320 generates a new request 322
`and directs that request 322 to a particular one of the
`secondary servers 340 that is known to contain the content
`identified in the request 312. This secondary server 340, in
`response to the request 322, transmits the requested content
`342 to the proxy server 320. The proxy server then retrans-
`mits the content received from the secondary server 340 to
`the client machine as the content 324.
`
`In this third exemplary embodiments, the proxy
`[0050]
`server 320 contains, as part of the content storage device
`330, a list or table, or, more gencrally, a content location map
`334, of secondary servers 340 and the actual content, and/or
`the categories of content, that can be obtained from each
`such secondary server 340. Furthermore, in this third exem-
`plary embodiment, as the proxy server 320 obtains content
`342 from various ones of the secondary servers 340,
`the
`proxy server 320 updates the content location map 334, such
`that the content location map 334 forms a mapping ofthe
`various secondary servers 340 and the content 342, and/or
`one or more categories of content 342, that each secondary
`server 340 contains. As a result, if the proxy server 320
`needs to obtain a more current version of the content 342
`that corresponds to a particular content request 312 that is
`currently stored in the content storage device 330, the proxy
`server 320 can use the content location map 334 to identify
`which secondary server 340 stores the content to be updated.
`Similarly, if the proxy server 320 receives a content request
`312 for content 342 that is not stored in the content storage
`device 330, the proxy server 320 can consult the content
`location map 334 to identify which one or more of the
`secondary servers 340 have similar content and/or to iden-
`tify which one or more of the secondary servers 340 store the
`appropriate category of content and thus might store the
`content that correspondsto a particular content request 312.
`
`It should be appreciated that, in various exemplary
`(0051]
`embodiments, the proxy server 320 according to this third
`exemplary embodiment can be combined with the second
`exemplary embodimentof the proxy server 220.In this case,
`the proxy server 320 also stores the content received from
`the secondaryserver 340into a retrieved content portion 232
`
`of the content storage device 330. Thus, the next time the
`client 310 transmits a request 312 to the proxy server 320 for
`that content, the proxy server 320 will have that content
`stored in the content storage device 330 as native content. As
`a result, the proxy server 320 will not need to connectto the
`appropriate secondary server 340 from which that content
`342 wasoriginally obtained, and will be able to immediately
`transmit the content 324 in response to the content request
`312.
`
`It should be appreciated that, in various exemplary
`[0052]
`embodiments, the content storage device 330 can initially
`contain no native content. In this case, the proxy server 320
`initially has no native content that can be provided to the
`client machine as the content 324 in response to the request
`312. As a result, the first time the proxy server 320 receives
`a request 312 for any particular content, the proxy server 320
`would need to obtain the content corresponding to that
`particular content request 312 from one of the secondary
`servers 340 of the network 300. Thereafter,
`the content
`corresponding to that particular content request 312 would
`then be stored in the content storage device 330 as native
`content.
`
`It should further be appreciated that, as the content
`[0053]
`342 in the content storage device 330 that was obtained from
`a secondary server 340 has become “stale”, when a next
`request 312 for the content 342 corresponding to that
`particular content request 312 is received by the proxy
`server 320, the proxy server 320 can “refresh” the obtained
`content 342 correspondingto t