2.1.1.1 HTTP Metadata Retrieval

The sequence of messages for an HTTP request for Content Caching and Retrieval is shown in the following figure and consists of the following steps:

HTTP metadata retrieval

Figure 2: HTTP metadata retrieval

  1. The client application opens a URL.

  2. The client side adds a PeerDist header to an outgoing HTTP request.

  3. The HTTP server side performs any required access checks, and then, if valid, requests the data. If hashes are available, they are returned to the client.

  4. If hashes are not available, a normal HTTP response is returned immediately to the client.

  5. If the requested data and hashes are available, the data is placed in the distributed cache.

  6. Metadata in the form of hash lists is generated that make the metadata available for any subsequent requests on the same data.

  7. Any subsequent request for the same data that is identified by the URL results in metadata being returned.

  8. Metadata is returned to the content client by using the Peer Content Caching and Retrieval: Hypertext Transfer Protocol (HTTP) Extensions, as described in [MS-PCCRTP].

  9. The hash list is passed to the BranchCache Service to look up the data.

  10. For unsuccessful cache lookups (missing block), a range request, including the byte range, is broadcast by using the Peer Content Caching and Retrieval Discovery Protocol, as described in [MS-PCCRD]. If data is found in a peer client, the data is retrieved by using the Peer Content Caching and Retrieval: Retrieval Protocol [MS-PCCRR].

  11. If data is retrieved, it is added to the cache, and the hash list is made available for discovery. If the client does not receive the associated data (that is, the original content is unavailable), a suitable (HTTP) error is returned to the application.

  12. If the data is retrieved, it is returned to the requesting content client.