Résumé

  • L’ACK cumulatif engage le destinataire sur tous les octets antérieurs. Un bloc SACK décrit seulement une plage conservée à cet instant et peut être renié.
  • L’émetteur garde donc les données, construit sa propre carte de récupération et choisit les retransmissions sans dépasser les règles de congestion.
  • D-SACK signale des doublons, mais n’en démontre ni la cause ni la réponse correcte. TCP partagea davantage de faits sans céder l’autorité d’agir.

La plage reçue que l’émetteur devait garder

Le destinataire attend l’octet 5000. Il reçoit pourtant la plage [5500,9000) et la décrit dans SACK. Pour la récupération, l’information est précieuse : tout le vol n’a probablement pas disparu.

Pour la libération de mémoire, elle ne suffit pas. Le destinataire peut jeter une plage annoncée sous pression. Un délai peut expirer après que l’état a changé. Seul l’avancement de l’ACK cumulatif transforme l’observation en engagement final.

La réussite de SACK tient à cette asymétrie : assez précis pour guider, volontairement trop faible pour décharger l’émetteur de sa responsabilité.

Une promesse ancienne et une preuve supplémentaire

RFC 793 donne à ACK X un sens robuste : tous les octets inférieurs sont arrivés et X est le prochain attendu. Cette frontière garantit l’ordre et permet ensuite de supprimer la copie d’émission.

Elle ne décrit pas les îlots situés après le premier trou. Plusieurs ACK identiques ne disent pas si une seule pièce manque, si le reste est perdu ou si le réseau a réordonné les paquets. Il fallait ajouter une observation sans affaiblir la promesse.

RFC 1072 proposa en 1988 une première option sélective. Elle ne devint pas le mécanisme commun sous cette forme ; RFC 6247 la classa ensuite Historic. Une norme publiée peut fixer un problème et rester pourtant sans consensus d’implémentation.

Quarante octets pour un rapport incomplet

RFC 2018 révisa le mécanisme en 1996. SACK-Permitted se négocie dans les SYN. Chaque bloc indique par deux nombres de 32 bits le premier octet reçu et la position qui suit le dernier. L’ACK ordinaire ne change pas.

L’espace des options TCP se limite à quarante octets. Quatre blocs tiennent seuls, souvent trois avec les timestamps. Une file complexe ne tient donc pas dans un rapport. Le bloc modifié par le segment le plus récent vient en tête ; d’autres blocs récents sont répétés, car l’ACK qui les porte peut lui-même disparaître.

L’émetteur ne lit jamais un inventaire parfait. Il assemble une suite de vues partielles dans un état local.

Renier n’annule pas le protocole

RFC 2018 qualifie l’information d’advisory. Le destinataire peut renier un bloc déjà signalé. L’émetteur peut le laisser de côté pendant une récupération normale, mais il doit garder les octets jusqu’à leur acquittement cumulatif.

Après expiration du délai de retransmission, les anciennes marques doivent être traitées avec prudence. Le retour à la preuve cumulative contient la panne du canal optionnel. Il ne transforme pas une optimisation en dépendance irréversible.

RFC 6675 place ensuite un scoreboard conservateur chez l’émetteur. Les rapports alimentent une estimation de ce qui reste dans le réseau ; l’émetteur choisit le prochain segment. Le destinataire fournit des coordonnées, pas un ordre.

Le doublon n’avoue pas sa cause

RFC 2883 permit à D-SACK d’indiquer une réception dupliquée. Cela peut révéler du réordonnancement, un ACK perdu, une duplication dans le réseau ou une retransmission déclenchée trop tôt.

Aucune réaction unique n’est imposée. Le texte rappelle aussi qu’un rapport du destinataire n’est pas nécessairement honnête. La mesure gagne en finesse sans devenir diagnostic certain ni pouvoir sur l’algorithme adverse.

Une meilleure carte ne réserve pas la route

RFC 5681 conserve la discipline de congestion, et RFC 2018 exige que SACK la respecte. Identifier un trou permet de mieux utiliser la fenêtre autorisée ; cela ne crée pas une fenêtre plus grande.

Les sources fixent les règles et leurs limites, pas une date mondiale de déploiement ni un gain identique partout. SACK ne prouve ni l’emplacement d’une perte, ni son origine, ni l’identité du rapporteur. Son apport fut de rendre une observation révocable exploitable sans la confondre avec la livraison finale.