Résumé

  • La RFC 791 définit Total Length comme la longueur complète du datagramme IPv4, en-tête et données compris.
  • La RFC 894 précise que le remplissage Ethernet nécessaire pour atteindre 46 octets ne fait pas partie du paquet IP.

Un petit datagramme IPv4 révèle une séparation essentielle entre les couches. Ethernet peut devoir compléter son champ de données avec des zéros lorsque celui-ci mesurerait moins de 46 octets. La trame reçue contient alors plus d’octets que le paquet IP proprement dit.

IPv4 ne demande pas au support de deviner où s’arrête son paquet. Son champ Total Length, codé sur 16 bits, donne la longueur du datagramme en octets, avec l’en-tête et les données. Le réseau conserve donc sa frontière à l’intérieur de l’enveloppe Ethernet.

Deux mesures complémentaires

IHL indique la longueur de l’en-tête en mots de 32 bits. Sa valeur minimale est cinq, soit 20 octets. Total Length indique la longueur totale du datagramme en octets. La longueur des données se déduit donc par soustraction : Total Length moins la longueur calculée à partir de IHL. Si des options agrandissent l’en-tête, IHL déplace le début des données sans changer le rôle de Total Length.

Cette mesure ne décrit ni les adresses Ethernet, ni le contrôle de trame, ni le préambule, ni les octets de remplissage. Elle dit seulement combien d’octets du champ remis à IPv4 appartiennent au datagramme.

Un plafond qui n’est pas une promesse

Le champ peut représenter jusqu’à 65 535 octets. La RFC 791 juge toutefois de tels datagrammes peu pratiques pour la plupart des hôtes et réseaux. Elle demande aux hôtes d’accepter des datagrammes jusqu’à 576 octets, entiers ou fragmentés, et recommande de n’envoyer plus grand qu’avec l’assurance que le destinataire peut le recevoir. Ethernet limite par ailleurs le datagramme IP transporté dans son champ de données à 1 500 octets. La limite représentable n’est donc ni une MTU de chemin ni une taille sûre universelle.

Après fragmentation

Chaque fragment reçoit son propre en-tête et sa propre valeur Total Length, qui compte cet en-tête et les données du fragment. Identification, Fragment Offset et More Fragments remplissent d’autres fonctions. Total Length délimite l’objet IPv4 actuellement transmis; il ne mesure pas le datagramme original ni un message applicatif.

Une longueur déclarée peut être erronée ou dépasser les octets capturés. Elle fournit une règle d’interprétation, pas une preuve d’intégrité ou de livraison. Les outils doivent donc comparer Total Length, IHL, les données réellement capturées, le remplissage éventuel et la provenance de la capture.

Le choix durable est une répartition d’autorité : IPv4 possède la frontière du datagramme, tandis que le lien possède la trame et son remplissage. Cette convention permet au même format IP de traverser des supports différents sans confondre enveloppe et contenu.

Sources