6 Appendix A: Product Behavior

The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.

  • Windows Vista operating system

  • Windows Server 2008 operating system

  • Windows 7 operating system

  • Windows Server 2008 R2 operating system

  • Windows 8 operating system

  • Windows Server 2012 operating system

  • Windows 8.1 operating system

  • Windows Server 2012 R2 operating system

  • Windows 10 operating system

  • Windows Server 2016 operating system

  • Windows Server operating system

  • Windows Server 2019 operating system

  • Windows Server 2022 operating system

  • Windows 11 operating system

  • Windows Server 2025 operating system

Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.

Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.

<1> Section 2: In Windows Vista and Windows Server 2008, support for the client-side elements of this protocol is available only with the optional installation of the Background Intelligent Transfer Service (BITS) (see [MC-BUP]) via Windows Management Framework (WMF). Support for the server-side elements of this protocol is not available in Windows Vista or Windows Server 2008. For more information, see [MSDN-BITS].

<2> Section 2.2.3: The MSG_NEGO_REQ message type is never sent by Windows, but it is handled by the code if received, by responding with an MSG_NEGO_RESP (section 2.2.5.1) message.

<3> Section 2.2.4.2: Windows by default uses SHA-256 as the hashing algorithm to generate the SegmentID, which corresponds to a SegmentID length of 32 bytes. Windows Server 2008 R2 operating system is capable of generating SegmentIDs using SHA-384 and SHA-512 in addition to SHA-256, but Windows that uses the Retrieval Protocol only supports SegmentIDs generated using SHA-256.

<4> Section 2.2.4.2: Windows normalizes the ranges in the array of block ranges in the MSG_GETBLKLIST and MSG_BLKLIST messages, using the following rules:

  • Ranges in the array never overlap with each other.

  • Overlapped or adjacent ranges in the array are always combined into a single range.

  • Ranges in the array are always sorted by Index.

Windows always sends block ranges normalized with these rules but can accept non-normalized ranges in received messages.

<5> Section 2.2.4.3: Windows by default uses SHA-256 as the hashing algorithm to generate the SegmentID, which corresponds to a SegmentID length of 32 bytes. Windows Server 2008 R2 is capable of generating SegmentIDs using SHA-384 and SHA-512 in addition to SHA-256, but the Windows implementation of the Retrieval Protocol only supports SegmentIDs generated using SHA-256.

<6> Section 2.2.4.4: The MSG_GETSEGLIST message is not supported by Windows Vista, Windows Server 2008, Windows 7 and Windows Server 2008 R2.

<7> Section 2.2.5.2: Windows normalizes the ranges in the array of block ranges in the MSG_GETBLKLIST and MSG_BLKLIST messages, using the following rules:

  • Ranges in the array never overlap with each other.

  • Overlapped or adjacent ranges in the array are always combined into a single range.

  • Ranges in the array are always sorted by Index.

Windows always sends block ranges normalized with these rules but can accept non-normalized ranges in received messages.

<8> Section 2.2.5.4: The MSG_SEGLIST message is not supported by Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2.

<9> Section 3.1.2: Windows uses a 2 second timeout for each request message. The timeout is configurable between 1 millisecond and 1 minute.

<10> Section 3.1.4.3: Windows performs a simple download when it involves less than 4 consecutive blocks in a single block range. When Internet Explorer is used for content retrieval, it reads into 64K buffers. Therefore, in general each read generates a segment retrieval session for a single block; in some cases, the read could span two blocks if it is not block aligned. This results in a simple download, and no MSG_GETBLKLIST is generated.

<11> Section 3.1.5.2: Windows does not perform the segment ID verification for any MSG_BLKLIST message received. Windows relies on the binding handle of the transport from which the MSG_BLKLIST is received to identify which request (and, implicitly, the corresponding segment ID) that the MSG_BLKLIST is for.

<12> Section 3.2.1: Windows server-role peer by default serves up to 64 simultaneous Upload Sessions per serving-role peer; this limit is configurable between 1 and 16,384.

<13> Section 3.2.1: Windows server-role peer by default serves up to 1,024 simultaneous Upload Sessions per hosted cache server; this limit is configurable between 1 and 4,294,967,295.

<14> Section 3.2.2: Windows uses a 15 second timeout for each incoming request. The timeout value is configurable between 100 milliseconds and 1 hour.