2.2.4.3 MSG_GETBLKS

The MSG_GETBLKS (GetBlocks) message contains a request for blocks of content. It is used to retrieve a set of blocks defined by a single BLOCK_RANGE_ARRAY.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

SizeOfSegmentID

SegmentID (variable)

...

ZeroPad (variable)

...

ReqBlockRangeCount

ReqBlockRanges (variable)

...

SizeOfDataForVrfBlock

DataForVrfBlock (variable)

...

SizeOfSegmentID (4 bytes): Size in bytes of the subsequent SegmentID field. The syntactic range of this field is from 0x00000000 to 0xFFFFFFFF. The actual value of this field depends on the hashing algorithm used as defined in [MS-PCCRC]. Implementations SHOULD support all allowed SegmentID lengths and MUST support content with 32-byte SegmentIDs.<5>

SegmentID (variable): Public Segment Identifier for the target segment of content (also known as HoHoDk). See [MS-PCCRC] for a description of contents, segment, blocks, and identifiers.

ZeroPad (variable): Sequence of bytes added (as needed) to restore 4-byte alignment, relative to the beginning of this message. The value of each byte MUST be set to zero. This field is 0 to 3 bytes in length, as required.

ReqBlockRangeCount (4 bytes): Number of items in the subsequent block range array. The syntactic range of this field is from 0x00000000 to 0xFFFFFFFF. The effective range of this field MUST be between 1 and 256 inclusive because there cannot be more than 256 non-overlapping and non-contiguous ranges in a maximum segment size of 512 blocks.

ReqBlockRanges (variable): Block range array representing the blocks requested for the target segment. RegBlockRanges MUST specify a single block range containing only one block.

SizeOfDataForVrfBlock (4 bytes): Size in bytes of the subsequent DataForVrfBlock field. This field SHOULD be zero.

DataForVrfBlock (variable): Not used by the protocol. This field SHOULD be empty.