3.1.4.3 MSG_GETBLKS Initiation

To initiate a Retrieval Protocol request for specific block ranges, the higher-layer applications MUST specify a server address, a segment ID, and a set of block ranges with the segment identified by the segment ID. The client instance of the Retrieval Protocol MUST construct and send a GetBlocks message (MSG_GETBLKS (section 2.2.4.3)) to the server, store it in the Outstanding Request List (3.1.1), and start the Request Timer (3.1.2). The SegmentID and ReqBlockRanges fields correspond to the segment ID and the block ranges of the request.

The Retrieval Protocol MUST only request and retrieve one block per exchange of MSG_GETBLKS request and MSG_BLK (section 2.2.5.3) response messages. If the higher-layer applications need to retrieve more than one block, multiple GetBlocks messages MUST be sent with one block per request.

A peer SHOULD perform a simple download if it involves a limited number of consecutive blocks in a single block range.<10> This implies that the blocks are consecutive in the segment.