Claims
- 1. A method for receiving content at a client from one or more servers that can potentially provide the content, comprising:
sending a request for the content to a directory server that stores information on where the content is possibly located; in response to the request, receiving a response from the directory server which includes a list of candidate servers that can potentially provide the content; sending a request to at least one candidate server from the list of candidate servers for the content; and receiving the content from at least one candidate server.
- 2. The method of claim 1, wherein receiving the content from at least one candidate server involves receiving portions of the content from multiple candidate servers and assembling the portions at the client.
- 3. The method of claim 1, further comprising sending feedback to the directory server, wherein the feedback can include a map of the content which can indicate:
which portions of the content that have been received by the client; which portions of the content that are currently being received by the client; and which portions of the content that have not been received by the client.
- 4. The method of claim 1, further comprising sending feedback to the directory server, wherein the feedback can include status information for candidate servers, which can indicate:
an availability of a given candidate server; a performance indicator for the given candidate server; and a trace of the path from the client to the given candidate server.
- 5. The method of claim 1, wherein sending the request to the directory server for the content further involves sending:
a map of the content that indicates what potions of the content the client already has; and the local IP address of the client.
- 6. The method of claim 1, further comprising:
receiving a request at the client from a secondary client to send the content to the secondary client; and in response to the request, sending the content to the secondary client.
- 7. The method of claim 6, wherein the process of sending the content to the secondary client takes place while the content is being received by the client.
- 8. The method of claim 1, wherein the list of candidate servers is a subset of the complete list of candidate servers.
- 9. The method of claim 8, further comprising sending a request to the directory server requesting an additional subset of the complete list of candidate servers.
- 10. The method of claim 1, wherein the list of candidate servers includes an origin server containing the original source for the content.
- 11. The method of claim 1, wherein if the content was not available from a candidate server in the list of candidate servers, the method further comprises waiting a set period of time before again trying to receive the content from the candidate server.
- 12. The method of claim 11, wherein the set period of time increases each time the client is unsuccessful in receiving the content from a candidate server in the list of candidate servers.
- 13. The method of claim 11, wherein if the content was not available from a candidate server in the list of candidate servers in a certain amount of time, the method further comprises removing the candidate server from the list of candidate servers.
- 14. The method of claim 11, wherein if a candidate server in the list of candidate servers does not meet certain performance criteria, the method further comprises removing the candidate server from the list of candidate servers.
- 15. A method for sending content to a client in a distributed manner, comprising:
receiving a request for content from the client at a directory server; sending a response to the client which includes a list of candidate servers that can potentially provide the content; and adding the client to the list of candidate servers for the content so that the client can act as a server for the content for subsequent requests from other clients for the content.
- 16. The method of claim 15, wherein the list of candidate servers is sorted by network criteria, wherein network criteria for a given client can include:
an external IP address that is identical to the external IP address of the given client; an autonomous system (AS) that is identical to or topologically close to the AS of the given client; and an IP/20 network that is identical to the IP/20 network of the given client.
- 17. The method of claim 16, further comprising receiving border gateway protocol (BGP) information to facilitate sorting the list of candidate servers, so that candidate servers that are closest topologically to the client will appear higher in the list of candidate servers.
- 18. The method of claim 15, wherein receiving the request for the content from the client further involves:
receiving a map of the content that indicates what potions of the content the client already has; receiving the local IP address of the client which the client explicitly included in the request; and receiving the external IP address of the client.
- 19. The method of claim 15, wherein the list of candidate servers is a subset of the complete list of candidate servers.
- 20. The method of claim 15, wherein the list of candidate servers includes an origin server for the content.
- 21. The method of claim 15, wherein if a candidate server from the list of candidate servers is behind a firewall, the method further involves sending a request to the candidate server which causes the candidate server to initiate a communications session through the firewall with the client.
- 22. The method of claim 15, wherein if a candidate server from the list of candidate servers and the client are behind firewalls, the method further involves sending requests to the candidate server and the client which cause the candidate server and the client to simultaneously send messages to each other through their respective firewalls to initiate a communication session between the candidate server and the client.
- 23. The method of claim 15, further comprising collecting feedback from the client at a reporting server for the directory.
- 24. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for receiving content at a client from one or more servers that can potentially provide the content, the method comprising:
sending a request for the content to a directory server that stores information on where the content is possibly located; in response to the request, receiving a response from the directory server which includes a list of candidate servers that can potentially provide the content; sending a request to at least one candidate server from the list of candidate servers for the content; and receiving the content from at least one candidate server.
- 25. The computer-readable storage medium of claim 24, wherein receiving the content from at least one candidate server involves receiving portions of the content from multiple candidate servers and assembling the portions at the client.
- 26. The computer-readable storage medium of claim 24, wherein the method further comprises sending feedback to the directory server, wherein the feedback can include a map of the content which can indicate:
which portions of the content that have been received by the client; which portions of the content that are currently being received by the client; and which portions of the content that have not been received by the client.
- 27. The computer-readable storage medium of claim 24, wherein the method further comprises sending feedback to the directory server, wherein the feedback can include status information for candidate servers, which can indicate:
an availability of a given candidate server; a performance indicator of the given candidate server; and a trace of the path from the client to the given candidate server.
- 28. The computer-readable storage medium of claim 24, wherein sending the request to the directory server for the content further involves sending:
a map of the content that indicates what potions of the content the client already has; and the local IP address of the client.
- 29. The computer-readable storage medium of claim 24, wherein the method further comprises:
receiving a request at the client from a secondary client to send the content to the secondary client; and in response to the request, sending the content to the secondary client.
- 30. The computer-readable storage medium of claim 28, wherein the process of sending the content to the secondary client takes place while the content is being received by the client.
- 31. The computer-readable storage medium of claim 24, wherein the list of candidate servers is a subset of the complete list of candidate servers.
- 32. The computer-readable storage medium of claim 31, wherein the method further comprises sending a request to the directory server requesting an additional subset of the complete list of candidate servers.
- 33. The computer-readable storage medium of claim 24, wherein the list of candidate servers includes an origin server containing the original source for the content.
- 34. The computer-readable storage medium of claim 24, wherein if the content was not available from a candidate server in the list of candidate servers, the method further comprises waiting a set period of time before again trying to receive the content from the candidate server.
- 35. The computer-readable storage medium of claim 34, wherein the set period of time increases each time the client is unsuccessful in receiving the content from any candidate server in the list of candidate servers.
- 36. The computer-readable storage medium of claim 34, wherein if the content was not available from a candidate server in the list of candidate servers in a certain amount of time, the method further comprises removing the candidate server from the list of candidate servers.
- 37. The computer-readable storage medium of claim 34, wherein if a candidate server in the list of candidate servers does not meet certain performance criteria, the method further comprises removing the candidate server from the list of candidate servers.
- 38. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for sending content to a client in a distributed manner, comprising:
receiving a request for content from the client at a directory server; sending a response to the client which includes a list of candidate servers that can potentially provide the content; and adding the client to the list of candidate servers for the content so that the client can act as a server for the content for subsequent requests from other clients for the content.
- 39. The computer-readable storage medium of claim 38, wherein the list of candidate servers is sorted by network criteria, wherein network criteria for a given client can include:
an external IP address that is identical to the external IP address of the given client; an autonomous system (AS) that is identical to or topologically close to the AS of the given client; and an IP/20 network that is identical to the IP/20 network of the given client.
- 40. The computer-readable storage medium of claim 39, wherein the method further comprises receiving border gateway protocol (BGP) information to facilitate sorting the list of candidate servers, so that candidate servers that are closest topologically to the client will appear higher in the list of candidate servers.
- 41. The computer-readable storage medium of claim 38, wherein receiving the request for the content from the client further involves:
receiving a map of the content that indicates what potions of the content the client already has; receiving the local IP address of the client which the client explicitly included in the request; and receiving the external IP address of the client.
- 42. The computer-readable storage medium of claim 38, wherein the list of candidate servers is a subset of the complete list of candidate servers.
- 43. The computer-readable storage medium of claim 38, wherein the list of candidate servers includes an origin server for the content.
- 44. The computer-readable storage medium of claim 38, wherein if a candidate server from the list of candidate servers is behind a firewall, the method further involves sending a request to the candidate server which causes the candidate server to initiate a communications session through the firewall with the client.
- 45. The computer-readable storage medium of claim 38, wherein if a candidate server from the list of candidate servers and the client are behind firewalls, the method further involves sending requests to the candidate server and the client which cause the candidate server and the client to simultaneously send messages to each other through their respective firewalls to initiate a communication session between the candidate server and the client.
- 46. The computer-readable storage medium of claim 38, wherein the method further comprises collecting feedback from the client at a reporting server for the directory server.
- 47. An apparatus for receiving content at a client from one or more servers that can potentially provide the content, comprising:
a requesting mechanism configured to send a request for the content to a directory server that stores information on where the content is possibly located; a receiving mechanism configured to receive a response from the directory server which includes a list of candidate servers that can potentially provide the content; a secondary requesting mechanism configured to send a request to at least one candidate server from the list of candidate servers for the content; and a secondary receiving mechanism configured to receive the content from at least one candidate server.
- 48. The apparatus of claim 47, wherein the secondary receiving mechanism is further configured to receive portions of the content from multiple candidate servers and assembling the portions at the client.
- 49. The apparatus of claim 47, further comprising a feedback mechanism that is configured to send feedback to the directory server, wherein the feedback can include a map of the content which can indicate:
which portions of the content that have been received by the client; which portions of the content that are currently being received by the client; and which portions of the content that have not been received by the client.
- 50. The apparatus of claim 47, further comprising a feedback mechanism that is configured to send feedback to the directory server, wherein the feedback can include status information for candidate servers, which can indicate:
an availability of a given candidate server; a performance indicator for the given candidate server; and a trace of the path from the client to the given candidate server.
- 51. The apparatus of claim 47, wherein the requesting mechanism is further configured to send to the directory server along with the request for the content:
a map of the content that indicates what potions of the content the client already has; and the local IP address of the client.
- 52. The apparatus of claim 47, further comprising:
a sharing mechanism configured to receive a request at the client from a secondary client to send the content to the secondary client; and a server mechanism configured to send the content to the secondary client.
- 53. The apparatus of claim 52, wherein the server mechanism is further configured to send the content to the secondary client while the content is being received by the client.
- 54. The apparatus of claim 47, wherein the list of candidate servers is a subset of the complete list of candidate servers.
- 55. The apparatus of claim 54, wherein the requesting mechanism is further configured to send a request to the directory server requesting an additional subset of the complete list of candidate servers.
- 56. The apparatus of claim 47, wherein the list of candidate servers includes an origin server containing the original source for the content.
- 57. The apparatus of claim 47, wherein if the content was not available from a candidate server in the list of candidate servers, the requesting mechanism is further configured to wait a set period of time before again trying to receive the content from the candidate server.
- 58. The apparatus of claim 57, wherein the set period of time increases each time the client is unsuccessful in receiving the content from any candidate server in the list of candidate servers.
- 59. The apparatus of claim 57, wherein the requesting mechanism is further configured to remove the candidate server from the list of candidate servers if the content was not available from the candidate in a certain amount of time.
- 60. The apparatus of claim 57, wherein the requesting mechanism is further configured to remove the candidate server from the list of candidate servers if the candidate server does not meet certain performance criteria.
- 61. An apparatus for sending content to a client in a distributed manner, comprising:
a receiving mechanism configured to receive a request for content from the client at a directory server; a sending mechanism configured to send a response to the client which includes a list of candidate servers that can potentially provide the content; and a directory mechanism configured to add the client to the list of candidate servers for the content so that the client can act as a server for the content for subsequent requests from other clients for the content.
- 62. The apparatus of claim 61, further comprising a sorting mechanism configured to sort the list of candidate servers by network criteria, wherein network criteria for a given client can include:
an external IP address that is identical to the external IP address of the given client; an autonomous system (AS) that is identical to or topologically close to the AS of the given client; and an IP/20 network that is identical to the IP/20 network of the given client.
- 63. The apparatus of claim 62, wherein the sorting mechanism is further configured to receive border gateway protocol (BGP) information to facilitate sorting the list of candidate servers, so that candidate servers that are closest topologically to the client will appear higher in the list of candidate servers.
- 64. The apparatus of claim 61, wherein the receiving mechanism is further configured to:
receive a map of the content that indicates what potions of the content the client already has; receive the local IP address of the client which the client explicitly included in the request; and receive the external IP address of the client.
- 65. The apparatus of claim 61, wherein the list of candidate servers is a subset of the complete list of candidate servers.
- 66. The apparatus of claim 61, wherein the list of candidate servers includes an origin server for the content.
- 67. The apparatus of claim 61, wherein if a candidate server from the list of candidate servers is behind a firewall, the sending mechanism is further configured to send a request to the candidate server which causes the candidate server to initiate a communications session through the firewall with the client.
- 68. The apparatus of claim 61, wherein if a candidate server from the list of candidate servers and the client are behind firewalls, the sending mechanism is further configured to send requests to the candidate server and the client which cause the candidate server and the client to simultaneously send messages to each other through their respective firewalls to initiate a communication session between the candidate server and the client.
- 69. The apparatus of claim 61, further comprising a logging server that is configured to collect the feedback from the client for the directory server.
- 70. A means for receiving content at a client from one or more servers that can potentially provide the content, comprising:
a sending means for sending a request for the content to a directory server the stores information on where the content is possibly located; a receiving means for receiving a response from the directory server which includes a list of candidate servers that can potentially provide the content; a secondary sending means for sending a request to at least one candidate server from the list of candidate servers for the content; and a secondary receiving means for receiving the content from at least one candidate server.
- 71. A means for sending content to a client in a distributed manner, comprising:
a receiving means for receiving a request for content from the client at a directory server; a sending means for sending a response to the client which includes a list of candidate servers that can potentially provide the content; and an adding means for adding the client to the list of candidate servers for the content so that the client can act as a server for the content for subsequent requests from other clients for the content.
- 72. An operating system containing instructions that when executed by a computer cause the computer to perform a method for receiving content at a client from one or more servers that can potentially provide the content, the method comprising:
sending a request for the content to a directory server that stores information on where the content is possibly located; in response to the request, receiving a response from the directory server which includes a list of candidate servers that can potentially provide the content; sending a request to at least one candidate server from the list of candidate servers for the content; and receiving the content from at least one candidate server.
- 73. An operating system containing instructions that when executed by a computer cause the computer to perform a method for sending content to a client in a distributed manner, comprising:
receiving a request for content from the client at a directory server; sending a response to the client which includes a list of candidate servers that can potentially provide the content; and adding the client to the list of candidate servers for the content so that the client can act as a server for the content for subsequent requests from other clients for the content.
RELATED APPLICATION
[0001] This application hereby claims priority under 35 U.S.C. §119 to U.S. Provisional Patent Application No. 60/310,306, filed on Aug. 4, 2001, entitled “Method and Apparatus for Enabling the Rich Media Revolution,” by inventors Wade L. Hennessey, John B. Wainwright, Anthony A. Espinoza, Christopher G. Saito and Michael J. Homer.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60310306 |
Aug 2001 |
US |