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.