Résumé

  • La RFC 1144 réduisait l’en-tête IPv4/TCP de quarante octets à quelques octets sur le lien grâce à une copie du paquet précédent conservée de part et d’autre.
  • L’identifiant de connexion et les écarts transmis suffisaient à reconstruire l’en-tête complet avant le retour au réseau IP ordinaire.
  • Une trame perdue pouvait désynchroniser les deux copies ; contrôle TCP, état de rejet et paquet non comprimé formaient donc une procédure de réparation essentielle.

Le prix d’une touche frappée

La RFC 1144, publiée en février 1990, partait d’un cas domestique très concret. Les lignes série visées fonctionnaient entre 300 et 19 200 bit/s. Un en-tête minimal IPv4/TCP comptait quarante octets. Pour transporter un caractère puis son écho, il fallait sérialiser deux paquets de 41 octets ; le document estimait qu’environ 4 000 bit/s étaient déjà nécessaires pour tenir dans 200 millisecondes.

Un transfert massif peut amortir cet en-tête dans une grande charge utile. La frappe interactive ne le peut pas. Pire, un gros paquet déjà engagé sur la ligne retarde le petit paquet urgent pour l’utilisateur. L’objectif n’était donc pas un joli taux statistique, mais la sensation immédiate de réponse.

La mémoire remplaça la répétition

Van Jacobson refusait l’idée que les quarante octets fussent inutiles. Les champs avaient un sens ; cependant, ce sens ne changeait pas entièrement à chaque paquet. Adresses, ports et plusieurs propriétés de la connexion restaient stables. Numéros de séquence, acquittements, fenêtre et Identification IP évoluaient souvent de manière régulière.

Le compresseur et le décompresseur conservaient chacun le dernier en-tête de plusieurs conversations actives. Un petit identifiant choisissait le bon emplacement. Une trame UNCOMPRESSED_TCP installait un contexte complet. Les trames COMPRESSED_TCP suivantes n’envoyaient plus qu’un masque de changement, des différences compactes et les valeurs impossibles à déduire, notamment le checksum.

À la sortie du lien, le décompresseur reconstituait le paquet IPv4/TCP normal. Les hôtes terminaux n’avaient pas à connaître l’optimisation d’un tronçon intermédiaire. L’en-tête avait disparu du fil local, non de l’architecture Internet.

Le vrai dictionnaire était le comportement

Les gains les plus fins venaient des champs qui variaient avec ordre. Un numéro de séquence augmente avec les données envoyées ; un acquittement suit les octets reçus ; l’Identification IP avance souvent par petits pas. Un masque indiquait les variations et des codages courts représentaient les petits écarts. Des raccourcis couvraient les échanges interactifs et les transferts dans un seul sens.

Le protocole délimitait aussi son ignorance. Fragments IP, SYN, FIN, RST, absence d’ACK, changement de longueur d’en-tête, options inattendues ou transition irrégulière reprenaient la voie non comprimée. La sûreté venait en partie du refus de prédire hors du domaine prévu.

Sur les traces citées par la RFC, l’en-tête moyen descendait autour de trois octets. Cette mesure n’est pas une promesse universelle. Elle montre que la régularité temporelle du protocole, davantage qu’un champ prétendument superflu, finançait la compression.

Perdre une trame, c’était perdre un passé commun

Une différence n’a de sens qu’avec sa base. Si une trame comprimée se perd, le compresseur peut mettre sa copie à jour alors que le décompresseur garde l’ancienne. La différence suivante produira deux reconstructions incompatibles.

La RFC 1144 exploita les défenses déjà présentes dans TCP. Une reconstruction décalée échoue normalement au checksum. Le décompresseur passe alors en état de rejet, ignore les trames comprimées suivantes et attend une nouvelle trame complète. Les retransmissions et acquittements dupliqués de TCP contribuent à provoquer cette remise à zéro sans protocole de réparation séparé.

Le checksum n’authentifie rien et la perte reste coûteuse. Mais l’erreur de mémoire n’est pas laissée silencieuse. Dès que le lien retire des preuves du paquet, la durée de validité du contexte et son mode de restauration appartiennent à la spécification.

Les successeurs ont rendu l’état visible

En 1999, la RFC 2507 généralisa le principe : un en-tête complet crée le contexte, puis les paquets comprimés l’incrémentent. Elle ajouta générations pour les flux non-TCP, rafraîchissements périodiques, demandes de réparation, mode TCP sans différences et règles de réordonnancement.

Elle exposa aussi la rareté de la mémoire. Si trop de flux se disputent les identifiants, le remplacement incessant des contextes—le CID thrashing—oblige à renvoyer des en-têtes complets. Une économie de bande passante devient alors une politique d’allocation.

La RFC 4413 classa plus tard les champs selon leur comportement réel. Le cadre ROHC, puis son profil TCP, formalisèrent états, initialisation, rafraîchissement, retour d’information et contrôles d’intégrité pour des liens plus sujets à pertes et réordonnements. Ce ne sont pas des variantes directement compatibles avec la RFC 1144 ; ce sont des réponses plus explicites au même problème de mémoire partagée.

Sources et limites

Le corpus fermé réunit les RFC 1144, 2507, 4413, 4995 et 6846. Il établit mécanismes et exemples publiés, mais ni déploiement actuel, ni réglages des constructeurs, ni gain universel, ni taille fixe de trois octets.