Share via


2.1.1.2.1 Framing Headers

This section defines a mechanism that allows the license update procedure and data transfer to use the same HTTP connection. The mechanism is called Framing Headers and it allows the license response messages (used by the license update procedure) to be interleaved with data blocks of protected content.

The HTTP Framing Headers mechanism is used only when delivering content that is not encapsulated in ASF.

When the Framing Headers mechanism is used for data transfer, the entity-body of the HTTP response MUST consist of a series of frames. Each frame starts with a framing header and is followed by either control data or content data.

The framing header is four bytes in length. The first byte MUST always be an ASCII dollar sign (0x24) followed by a one-byte frame type identifier, and then followed by a 16-bit length field. The length field specifies the number of bytes of data in the frame, not including the size of the framing header itself. The length field MUST be represented in network byte order.

A control frame uses an ASCII "c" character (0x63) as its type identifier. This frame contains a WMDRM: Network Devices Protocol message. Currently, the only message delivered in a control frame is a license response message, which carries a leaf license.

A data frame uses an ASCII "d" character (0x64) as its type identifier. This frame contains data belonging to the protected content being transferred. The transmitter can choose the size of data frames arbitrarily, but the size of a data frame MUST NOT exceed 65535 bytes.

The HTTP response MUST include the "Content-Type" header, and the content type specified in that header MUST be "application/vnd.ms-wmdrm-data-transfer". This indicates the use of the HTTP Framing Header mechanism.

The "application/vnd.ms-wmdrm-data-transfer" content type has one mandatory parameter, called media. The value of the media parameter MUST be set to the original content type for the content being delivered, including all of the parameters of the original content type. The value of the media parameter MUST be enclosed in double quotes.

The following is an example of the "Content-Type" header when the original content type is "video/mpeg":

 Content-Type: application/vnd.ms-wmdrm-data-transfer; media="video/mpeg"