Résumé

  • Les numéros TCP vont de 0 à 2^32−1 et toute leur arithmétique est effectuée modulo 2^32.
  • Lors du passage de 2^32−1 à 0, les comparaisons modulaires préservent l’ordre local.
  • Les accusés de réception, les retransmissions et les fenêtres de réception dépendent de ces comparaisons.

Un espace fini

Les RFC 793 et 9293 décrivent un espace de séquence limité : ses valeurs vont de zéro à 2^32−1. Les opérations doivent être réalisées modulo 2^32. Le champ ne peut donc pas croître indéfiniment, mais cette limite n’empêche pas un flux de continuer.

À la frontière, le successeur de la valeur maximale est zéro. Une comparaison entière ordinaire conclurait que zéro est plus petit et donc plus ancien. Dans l’état de la connexion, il peut pourtant représenter la position suivante. TCP doit comparer des positions relatives, et non leur seule grandeur imprimée.

L’anneau fournit le cadre

L’arithmétique modulaire transforme la ligne en anneau. L’état de la connexion — frontières d’envoi et de réception, accusés de réception et fenêtres bornées — indique la zone pertinente. Il n’existe pas d’ordre temporel universel pour deux valeurs de 32 bits détachées de ce contexte.

Cette règle intervient dans le traitement d’un accusé de réception, le suivi des données encore susceptibles d’être retransmises et la vérification d’un segment contre la fenêtre de réception. Les RFC définissent donc des relations modulaires et avertissent que leur programmation demande de la prudence.

Revenir à zéro n’est pas réinitialiser

Le passage à zéro ne relance ni la connexion ni la négociation. Il déplace simplement une coordonnée dans le même espace. L’état TCP continue d’avancer selon les comparaisons modulaires.

Ce que la règle ne garantit pas

Une arithmétique correcte ne résout pas toutes les ambiguïtés liées à l’âge des segments, à la durée des connexions ou aux limites de fenêtre. Elle fournit plus précisément la règle nécessaire pour conserver un ordre local sans élargir le champ transmis sur le réseau.

Sources