Le premier octet d'un en-tête de paquet est appelé << signature du paquet >>. Il détermine le format de l'en-tête et informe sur le contenu du paquet. Le reste du paquet d'en-tête est la taille du paquet.
Il faut noter que le bit le plus important est celui le plus à gauche, il est apellé bit 7. Un masque pour ce bit est 0x80 en hexadécimal.
-----+-----------------+
PTag | 7 6 5 4 3 2 1 0 |
-----+-----------------+
Le bit 7 vaut toujours 1, le bit indique le nouveau format du paquet s'il est positionné.
PGP 2.6.x utilise seulement le vieux format de paquets. Mais, les logiciels qui doivent utiliser cette version de PGP ne doivent utiliser que le vieux format de paquets. Si la compatibilité n'est pas un objectif primordial, l'autre format peut être utilisé. Remarquez que l'ancien format des paquets possédait 4 bits de signature du contenu, et que le nouveau format en possède 6; certaines possibilités ne peuvent pas être utilisées et restent compatible.
Format du vieux format de paquets :
bits 5-2 -- signature de contenu
bits 1-0 - longueur-type
Le nouveau format de paquets contient :
Bits 5-0 -- signature du contenu
Le sens de longueur-type dans l'ancien format de paquet est le suivant :
Le paquet a une longeur de 1 octet. L'en-tête fait 2 octets.
Le paquet a une longeur de 2 octet. L'en-tête fait 3 octets.
Le paquet a une longeur de 4 octet. L'en-tête fait 5 octets.
Le paquet est d'une taille indéterminée. L'en tête fait 1 octet, et la longueur est a déterminer à l'implémentation. Si le paquet est dans un fichier, cela signifie que le paquet ne s'étend pas jusqu'a la fin du fichier. En général, l'implémentation NE DEVRAIT PAS pas utiliser de tailles de paquets indéterminées sauf si la fin des données est proche dans le contexte, et même dans ce cas il est mieux d'utiliser une taille finie, ou le nouveau format d'en-tête. Le nouveau format d'en-tête décrit ci dessus a un mécanisme pour encoder précisément des données de tailles inconnues.
Le nouveau format de paquets présente 4 possibilités pour coder la longueur.
Un corps d'en-tête de un octet peut encoder des paquets de 191 octets maximum.
Un corps d'en-tête de deux octets permet d'encoder des paquets de taille comprises entre 192 et 8383 octets.
Un corps d'en-tête de 5 octets peut encoder des paquets qui peuvent aller jusqu'a 4,294,967,295 (0xFFFFFFFF) octets en longueur. (Cela code actuellement des nombres scalaires de 4 octets).
Quand la longueur d'un paquet n'est pas connue à l'avance par celui qui en a besoin, les corps d'en-têtes partiels codent un paquet de taille indéterminée, en le transformant en une chaine.
Un corps d'en-tête de un octet code une logneur de 0 à 191 octets. Ce type de longueur d'en-tête est reconnu car la valeur de l'octet est inférieure à 192. La longueur du corps vaut :
LongueurCorps = 1er_octet;
Précédent | Sommaire | Suivant |
Syntaxe des paquets | Niveau supérieur | signatures de paquets |