A. BranchCache uses BranchCache Discovery Protocol using WS-Discovery to request content from peers, which is communicated over UDP port 3702. You can use a tool like NetMon to view all UDP port 3702 traffic to see the requests for traffic and the responses, as shown below. You can quickly see the BranchCache communications and if the requests found a match on a peer. Note the actual data is not sent over UDP 3702—the data is sent using HTTP (port 80) if it's found.
The full process is as follows:
- The client requests data from a BranchCache-enabled Web or file server using SMB 2.0, HTTP 1.1, or BITS. Through various fields, headers, and messages in the BranchCache-enabled protocol via the Windows 7 networking stack, the client notifies the server it's BranchCache enabled.
- The BranchCache-enabled server responds with the identifiers (hash values) that represent the data the client has asked for using the protocol the client is using to request the data.
- The client checks its own BranchCache cache for the content and, if found, fetches from its local cache. No further communication is needed.
- If the client doesn't have the content in its local cache, it uses the BranchCache Discovery Protocol to send out a multicast request to all addresses on its local subnet for the required content.
- Assuming this client is the first client to request the data on the subnet (location), it doesn't get a positive response, and therefore communicates back to the BranchCache-aware server, notifying it that the client isn't BranchCache capable. The server now sends the actual data to the client. The client stores this data in its local BranchCache cache.
- A second client at the same location as the first client requests the same data from the server and is sent the same identifiers. It sends out the same BranchCache request for the data.
- The first client that has the data sends a response that it has the data, which causes the second client to request the data directly from the first using HTTP. The data is encrypted using identifiers sent by the BranchCache-enabled server, preventing any interception over the network.