A mechanism for content download based on hashes is disclosed. A method of the invention includes receiving a request from a client computing device for a file stored at a server computing device and dividing the file into a plurality of chunks. In addition, the method includes, for each chunk of th
A mechanism for content download based on hashes is disclosed. A method of the invention includes receiving a request from a client computing device for a file stored at a server computing device and dividing the file into a plurality of chunks. In addition, the method includes, for each chunk of the plurality of chunks of the file, obtaining, by the server computing device, a hash for the chunk, sending, by the server computing device, the hash for the chunk to the client computing device, and after sending the hash, sending, by the server computing device, the chunk to the client computing device if such sending is enabled.
대표청구항▼
1. A method, comprising: receiving, by a server computing device, a request from a client computing device for a file stored at the server computing device, wherein the client computing device supports a chunking and hashing capability for content transmission from a plurality of applications execut
1. A method, comprising: receiving, by a server computing device, a request from a client computing device for a file stored at the server computing device, wherein the client computing device supports a chunking and hashing capability for content transmission from a plurality of applications executed at the client computing device and comprises a system application data cache to store content transmitted using the chunking and hashing capability, the system application data cache accessible by each of the plurality of applications to reference content communicated with other applications of the plurality of applications;providing an indication to the client computing device that the chunking and hashing capability for content transmission is supported by the server computing device;negotiating, by the server computing device with the client computing device, a size of chunks of data for transmission, the negotiating via a list of supported chunk sizes sent to the client computing device and a response from the client computing device indicating which supported chunk size the client computing device prefers;dividing, by the server computing device, the file into a plurality of chunks; andfor each chunk of the plurality of chunks of the file: obtaining, by the server computing device, a hash for the chunk;sending, by the server computing device, the hash for the chunk to the client computing device, wherein the client computing device computes a local hash of each chunk stored in the system-wide application data cache to compare to the received hashes from the server device, wherein a hash algorithm to use to compute the local hashes and the received hashes is determined from an agreement made between the client computing device and the server computing device;receiving, by the service computing device, a request to send the chunk associated with the hash in response to the client computing device determining that the hash does not match hashes stored at the client computing device; andsending, by the server computing device in response to the received request, the chunk associated with the hash to the client computing device if such sending is enabled. 2. The method of claim 1, wherein providing the indication further comprises: receiving an inquiry from the client computing device asking whether the server computing device specifically supports the chunking and hashing capability for content transmission; andsending an acknowledgment to the client computing device in response to the inquiry. 3. The method of claim 1, wherein providing the indication further comprises: receiving a request for a general list of capabilities of the server computing device from the client computing device; andsending the general list of capabilities of the server computing device to the client computing device, wherein the general list of capabilities comprises the chunking and hashing capability for content transmission. 4. The method of claim 1, wherein the size of the chunks is negotiated between the server computing device and the client computing device via a request from the client computing device for a specific chunk size and a response to the client computing device indicating that the specific chunk size is acceptable to the server computing device. 5. A method, comprising: receiving, by a client computing device, a request for a file from an application executed by the client computing device, wherein the client computing device supports a chunking and hashing capability for content transmission from a plurality of applications executed at the client computing device and comprises a system application data cache to store content transmitted using the chunking and hashing capability, the system application data cache accessible by each of the plurality of applications to reference content communicated with other applications of the plurality of applications;receiving, by the client computing device from the server computing device, an indication that a server computing device that serves the file supports the chunking and hashing capability for content transmission;negotiating, by the client computing device with the server computing device, a size of chunks of data for transmission, the negotiating via a list of supported chunk sizes sent to the client computing device and a response from the client computing device indicating which supported chunk size the client computing device prefers;in response to agreeing on the size of the chunks of data for transmission with the server computing device, for each chunk of the file, wherein each chunk is of a predetermined chunk size: requesting a hash for the chunk from the server computing device;computing a local hash of each chunk stored in the system-wide application data cache to compare to the received hashes from the server device, wherein a hash algorithm to use to compute the received hashes and the local hashes is determined from an agreement made between the client computing device and the server computing device;determining whether a received hash matches one of a plurality of local hashes for one or more local chunks previously received by the client computing device and stored in a system-wide application data cache associated with the client computing device;in response to the received hash matching one of the plurality of local hashes, providing a local chunk associated with the matching local hash to the requesting application; andin response to the received hash not matching any of the hashes, requesting the chunk associated with the received hash from the server computing device and providing a received chunk associated with the received hash to the requesting application. 6. The method of claim 5, wherein the client computing device is a proxy server device on a local network of a computing device executing the application. 7. The method of claim 5, wherein the client computing device comprises a library application to provide the chunking and hashing capability for the client computing device. 8. The method of claim 5, further comprising determining whether all chunks of the requested file have been provided to the application by comparing a hash of the entire file provided to the application to a hash of the entire file provided by the server computing device. 9. The method of claim 5, further comprising determining whether the server computing device supports the chunking and hashing capability for content transmission. 10. The method of claim 5, wherein the predetermined chunk size is negotiated between the client computing device and the server computing device by the client computing device requesting a particular chunk size and the server computing device responding with an acknowledgment to the request. 11. A system, comprising: a memory;a storage device to store content;a processing device communicably coupled to the memory and the storage device; anda chunking and hashing module executable from the memory by the processing device, the chunking and hashing module to: enable a chunking and hashing capability for content transmission in response to a request from a client computing device to implement the chunking and hashing capability, wherein the client computing device supports a chunking and hashing capability for content transmission from a plurality of applications executed at the client computing device and comprises a system application data cache to store content transmitted using the chunking and hashing capability, the system application data cache accessible by each of the plurality of applications to reference content communicated with other applications of the plurality of applications;receive a request for a file from the client computing device, the file stored in the storage device;provide an indication to the client computing device that the chunking and hashing capability for content transmission is supported by the server computing device;negotiate, with the client computing device, a size of chunks of data for transmission, the negotiating via a list of supported chunk sizes sent to the client computing device and a response from the client computing device indicating which supported chunk size the client computing device prefers;divide the file into a plurality of chunks; andfor each chunk of the plurality of chunks of the file: obtain the hash for the chunk;send the hash for the chunk to the client computing device, wherein the client computing device computes a local hash of each chunk stored in the system-wide application data cache to compare to the received hashes from the server device, wherein a hash algorithm to use to compute the local hashes and the received hashes is determined from an agreement made between the client computing device and the server computing device;receive a request to send the chunk associated with the hash in response to the client computing device determining that the hash does not match hashes stored at the client computing device; andsend, in response to the received request, the chunk associated with the hash to the client computing device if such sending is enabled. 12. The system of claim 11, wherein the processing device providing the indication further comprises the processing device to: receive an inquiry from the client computing device asking whether the system specifically supports the chunking and hashing capability for content transmission; andsend an acknowledgment to the client computing device in response to the inquiry. 13. The system of claim 11, wherein the processing device providing the indication further comprises the processing device to: receive a request for a general list of capabilities of the server computing device from the client computing device; andsend the general list of capabilities of the server computing device to the client computing device, wherein the general list of capabilities comprises the chunking and hashing capability for content transmission. 14. The system of claim 11, wherein the size of the plurality of chunks is negotiated between the processing device and the client computing device via a request for a specific chunk size from the client computing device and a response to the client computing device indicating that the specific chunk size is acceptable to the server computing device. 15. A non-transitory machine-readable storage medium including instructions that, when accessed by a processing device, cause the processing device to perform operations comprising: receiving, by the processing device of a client computing device, a request for a file from an application executed by the client computing device, wherein the client computing device supports a chunking and hashing capability for content transmission from a plurality of applications executed at the client computing device and comprises a system application data cache to store content transmitted using the chunking and hashing capability, the system application data cache accessible by each of the plurality of applications to reference content communicated with other applications of the plurality of applications;receiving, by the client computing device from the server computing device, an indication that a server computing device that serves the file supports the chunking and hashing capability for content transmission;negotiating, by the client computing device with the server computing device, a size of chunks of data for transmission, the negotiating via a list of supported chunk sizes sent to the client computing device and a response from the client computing device indicating which supported chunk size the client computing device prefers;in response to agreeing on the size of the chunks of data for transmission with the server computing device, for each chunk of the file, wherein each chunk is of a predetermined chunk size: requesting a hash for the chunk from the server computing device;computing a local hash of each chunk stored in the system-wide application data cache to compare to the received hashes from the server device, wherein a hash algorithm to use to compute the received hashes and the local hashes is determined from an agreement made between the client computing device and the server computing device;determining whether a received hash matches one of a plurality of local hashes for one or more local chunks previously received by the client computing device and stored in a system-wide application data cache associated with the client computing device;in response to the received hash matching one of the plurality of local hashes, providing a local chunk associated with the matching local hash to the requesting application; andin response to the received hash not matching any of the hashes, requesting the chunk associated with the received hash from the server computing device and providing a received chunk associated with the received hash to the requesting application. 16. The non-transitory machine-readable storage medium of claim 15, wherein the client computing device is a proxy server device on a local network of a computing device executing the application. 17. The non-transitory machine-readable storage medium of claim 15, wherein the client computing device comprises a library application to provide the chunking and hashing capability for the client computing device. 18. The non-transitory machine-readable storage medium of claim 15, wherein the data, when accessed by the machine, causes the machine to perform further operations comprising determining whether all chunks of the requested file have been provided to the application by comparing the total size of all provided chunk to a total size of the file, wherein the total size of the file is provided by the server computing device. 19. The non-transitory machine-readable storage medium of claim 15, wherein the predetermined chunk size is negotiated between the client computing device and the server computing device by the client computing device requesting a particular chunk size and the server computing device responding with an acknowledgment to the request.
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
이 특허에 인용된 특허 (2)
Farber, David A.; Lachman, Ronald D., Computer file system using content-dependent file identifiers.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.