Encapsulation de données de datagrammes
Un schéma d'encapsulation standard est utilisé pour tous les fichiers de données binaires. Chaque datagramme est précédé d’une étiquette de 4 octets indiquant la longueur du datagramme en octets. Une étiquette de longueur identique est ajoutée à la fin du datagramme.
Description
long Length;
struct DatagramHeader
  {
  long DatagramType;
  struct {
    long LowDateTime;
    long HighDateTime;
  } DateTime;
  };
- -
datagram content
- -
long Length;
};
Description
Tous les datagrammes utilisent le même en-tête. Le champ type de datagramme identifie le type de datagramme. Les quadruples ASCII sont utilisés pour faciliter l'interprétation humaine et la maintenance à long terme. Trois caractères identifient le type de datagramme et un caractère identifie la version du datagramme. Le contenu réel du datagramme peut toutefois changer d’une version à l’autre.
La structure DateTime contient une valeur entière de 64 bits indiquant le nombre d'intervalles de 100 nanosecondes depuis le 1er janvier 1601. Il s'agit du « Filetime » interne utilisé par les systèmes d'exploitation Windows ®. La partie des données du datagramme contient un nombre quelconque d'octets et son contenu dépend fortement du datagramme.
Les ordinateurs communs se répartissent en deux catégories :
•  Les ordinateurs Intel écrivent un numéro multi-octets dans un fichier commençant par le LSB (Least Significant Byte - octet le moins significatif).
•  HP, Sun et Motorola font le contraire. Ils écrivent d'abord le fichier MSB (le plus significatif).
L'ordre des octets des étiquettes de longueur et de tous les champs binaires d'un datagramme est toujours identique à l'ordre d'origine des octets de l'ordinateur qui écrit le fichier de données. Le logiciel qui lit le fichier est responsable de la permutation d'octets de tous les nombres multi-octets contenus dans un datagramme, si nécessaire. L'échange d'octets est nécessaire chaque fois qu'il y a un décalage apparent entre les étiquettes de tête et de queue. Par conséquent, les deux étiquettes de longueur peuvent être utilisées pour identifier l'ordre des octets du datagramme complet.
Les processeurs Intel permettent de localiser un numéro multi-octets à n’importe quelle adresse RAM. Toutefois, cela peut être différent sur d’autres processeurs ; un court (2 octets) doit être situé à une adresse paire, un long (4 octets) et un flottant (4 octets) doivent être situés à des adresses pouvant être divisées par quatre. Par conséquent, les champs numériques dans un datagramme sont spécifiés dans cet esprit.