Résumé

  • Le projet IETF rappelle qu’une valeur DLT est souvent identique au LinkType correspondant, mais pas universellement : certains DLT dépendent du système d’exploitation et ne sont pas normalisés.
  • Une conversion sûre doit conserver l’espace de noms d’origine, le contexte du producteur, la règle de correspondance et le LinkType final. Un entier nu n’est pas une preuve de portabilité.

Le fichier passait tous les contrôles ordinaires. Son en-tête était valide, sa longueur cohérente, et la valeur numérique du type de liaison existait dans la table du lecteur. Pourtant, les premiers octets de chaque paquet donnaient des champs absurdes. L’équipe a d’abord accusé la corruption réseau.

Le réseau n’avait rien corrompu. La chaîne de données avait confondu deux espaces de noms.

À l’origine, une API de capture avait rendu un DLT défini dans le contexte d’un système d’exploitation. Un service intermédiaire avait stocké uniquement sa valeur entière. Au moment de produire un PCAP, un autre service avait recopié ce nombre dans le champ LinkType, comme si l’égalité numérique constituait une règle universelle. Sur cette combinaison précise, elle ne l’était pas.

Cette panne résume une phrase essentielle de Link-Layer Types for PCAP-related Capture File Formats. La révision 18, datée du 6 avril 2026, expire le 8 octobre 2026. Au point d’observation du 3 octobre, il s’agissait d’un Internet-Draft OPSAWG actif, destiné au statut Informational, placé dans la file du RFC Editor en attente d’un premier éditeur, sans numéro RFC attribué. Sa position procédurale ne transforme pas encore ce travail en RFC publié.

Le texte propose un registre IANA des LinkTypes utilisés par PCAP et pcapng. Chaque valeur sur 16 bits choisit un format de métadonnées et d’encapsulation de couche 2 placé avant le paquet capturé. C’est une fonction modeste et décisive : sans le bon contrat, un lecteur ne sait pas où finit le pseudo-en-tête ni où commence le paquet qu’il veut analyser.

Mais le projet sépare explicitement LinkType et DLT. Il existe souvent un DLT associé, souvent de même valeur. « Souvent » n’est pas « toujours ». Les DLT sont liés aux mécanismes de capture de systèmes particuliers ; certaines valeurs sont propres au système et échappent donc à la normalisation.

La perte sémantique précède la mauvaise lecture

Le défaut ne commence pas lorsque le lecteur choisit le mauvais parseur. Il commence plus tôt, lorsque le producteur remplace un couple {espace de noms, valeur} par une simple valeur.

Tant que le nombre reste dans l’API qui l’a créé, le contexte peut être implicite : version de libpcap, système, appel utilisé, type rendu par l’interface. Dès qu’il traverse une file, une base, un schéma analytique ou une frontière organisationnelle, cet implicite cesse d’être fiable. Le consommateur voit N; il ignore s’il s’agit d’un DLT local, d’un LinkType de fichier, d’une valeur historique privée ou d’un identifiant expérimental défini par le partenaire.

Le nombre est intact, mais sa proposition ne l’est plus.

Une organisation qui ne conserve que l’entier fabrique une dette irréversible. Elle pourra ajouter plus tard une table de correspondance, mais elle ne saura pas toujours quelle table aurait dû s’appliquer au moment de la capture. Les divergences les plus dangereuses ne produisent pas forcément une erreur franche. Un mauvais décodeur peut extraire des valeurs plausibles, ce qui transforme une incompatibilité de format en faux fait opérationnel.

Le registre réduit les collisions sans authentifier les fichiers

Le projet affecte les valeurs 0 à 65000 selon une procédure d’Expert Review au sens de la RFC 8126. Les valeurs 65001 à 65535 sont réservées à l’usage expérimental. Les anciens numéros privés 147 à 162 restent pris en charge, mais les nouveaux usages privés devraient choisir la plage expérimentale.

Cette politique répond à un problème de coordination. Un expert peut détecter une demande qui duplique un format existant. Lorsqu’un contenu peut renfermer IPv4 ou IPv6, les octets qui précèdent l’en-tête IP doivent être clairement décrits. Une URL stable est encouragée.

La procédure n’est toutefois pas une certification documentaire. Le projet n’exige pas qu’une spécification soit publique. Une spécification non accessible peut être acceptée ; le minimum est un contact. L’attribution évite qu’un même nombre officiel désigne deux grammaires sans gouvernance. Elle ne garantit ni que le fichier reçu provient du demandeur, ni que ses métadonnées sont sincères, ni que le parseur est sûr.

Pour les valeurs expérimentales, le texte recommande de ne pas les laisser sortir de l’entité qui les utilise. La raison est mécanique : deux entités peuvent définir deux formats différents sous le même nombre. Lors d’un échange, seule une convention extérieure peut restaurer le sens. L’entier ne porte pas sa propre définition.

Le format enregistré ne prouve pas l’origine

Même une correspondance correcte ne répond qu’à la question du décodage. Un LINKTYPE_ETHERNET indique comment lire les octets conservés. Il ne prouve pas un câble Ethernet, un capteur donné ou une direction de trafic.

Le PCAP historique renforce l’illusion parce qu’il n’admet qu’un LinkType par fichier. Le projet PCAP-09 note que cela signifie souvent que les paquets viennent d’une seule interface, puisque tous les LinkTypes ne permettent pas d’indiquer l’interface. Il s’agit d’une fréquence d’usage, non d’une invariance du format. Un outil peut agréger plusieurs sources après les avoir normalisées vers la même représentation.

pcapng apporte des blocs de description d’interface et des identifiants d’interface pour les paquets enrichis. Mais ces identifiants ne sont uniques que dans une section. Le même zéro dans deux sections peut désigner deux interfaces. Le nom de l’interface, sa description et le filtre sont des déclarations écrites dans le fichier, pas des attestations cryptographiques.

La portabilité de la structure ne doit donc pas devenir une portabilité automatique de la confiance.

La troncature interdit certaines conclusions

Le contrat de décodage s’applique aux octets réellement présents. PCAP et pcapng distinguent la longueur capturée de la longueur originale. Une SnapLen peut supprimer la fin d’un paquet. Les champs internes peuvent encore annoncer la taille complète, ce qui impose des contrôles stricts pour éviter les lectures hors tampon.

Sur le plan de la preuve, cette différence change la réponse possible. Si la signature recherchée se trouvait après la limite de capture, son absence dans le fichier ne prouve pas son absence sur le réseau. Le lecteur peut avoir parfaitement décodé la partie visible et ne rien savoir de la suite.

Une chaîne saine conserve donc, pour chaque enregistrement, longueur capturée, longueur originale et politique SnapLen. Elle nomme le résultat : complet selon les longueurs, explicitement tronqué, incohérent ou indéterminé. Elle ne transforme pas la réussite du décodeur en complétude de l’observation.

Un reçu de transformation minimal

La discipline de réalité proposée par Heng Lu conduit à une spécification initiale courte. À chaque frontière, conserver : format de fichier, espace de noms du type, valeur et nom symbolique, système et bibliothèque producteurs, DLT d’origine, règle et version de conversion, LinkType écrit, hachage du fichier source et résultat de validation.

Ce reçu ne cherche pas à centraliser toutes les politiques de capture. Il empêche seulement une transformation de disparaître. L’équipe locale reste libre de choisir ses capteurs, ses formats et ses lecteurs ; l’échange commun rend visible ce qui a été converti.

Le test de code est simple et sévère. Prenez deux systèmes où un même entier ne signifie pas la même chose. Faites circuler la valeur sans namespace, puis avec un reçu complet. Ajoutez une valeur expérimentale en collision, un fichier tronqué et un champ de longueur hostile. Le système doit refuser l’ambiguïté, isoler l’entrée non fiable et conserver l’alternative au lieu d’inventer une origine.

La valeur numérique peut traverser toute une entreprise sans perdre un bit. Cela ne veut pas dire que son sens a voyagé avec elle. La gouvernance commence au moment où l’on refuse de confondre intégrité syntaxique et continuité sémantique.

Sources