In version 1.0 the packet structure is the following: After Version 2, the packet structure was expanded into the following:[3] To ensure message integrity a cyclic redundancy check (CRC) is calculated to every message into the last two bytes.
Another function of the CRC field is to ensure the sender and receiver both agree in the message that is being transferred.
An XML document in the MAVlink source[9] has the definition of the data stored in this payload.
Note: The XML document describes the logical ordering of the fields for the protocol.
The actual wire format (and typical in-memory representation) has the fields reordered[10] to reduce Data structure alignment issues.