Résumé

  • STREAM identifie une plage d’octets dans un flux ordonné au moyen du stream ID, de l’offset et des champs d’encodage.
  • La transmission, la récupération après perte et la remise à l’application ne préservent pas les limites de la trame STREAM d’origine.
  • Pour établir un message ou une transaction, il faut des éléments de cadrage, d’analyse et de traitement au niveau applicatif.

L’erreur commence lorsqu’une observation de transport est transformée en preuve d’opération applicative. Un exportateur affiche une trame STREAM complète et l’opérateur en déduit une requête terminée. Cette trame établit seulement qu’une plage d’octets a été encodée pour un flux donné, à une position donnée. Elle ne déclare ni message, ni enregistrement, ni transaction.

RFC 9000 décrit les flux comme des suites d’octets ordonnées exposées aux applications. Le récepteur utilise le stream ID et l’Offset pour placer les données. L’ordre est limité à un seul flux. Des octets appartenant à des stream ID différents n’acquièrent pas un ordre d’exécution global parce qu’une capture les affiche dans une certaine succession. L’ordre du fichier n’est pas l’ordre de l’application.

OFF, LEN et FIN décrivent l’encodage du transport. OFF indique si le champ Offset est présent ; en son absence, les données commencent à l’offset zéro. LEN indique si le champ Length est présent ; en son absence, les données occupent le reste du paquet. FIN fixe la limite finale des octets du flux, et la taille finale se déduit de l’offset et de la longueur des données. Aucun de ces champs ne fournit la syntaxe applicative, un séparateur d’enregistrement ou la preuve d’un succès.

En cas de perte, QUIC ne retransmet pas le paquet entier et ne recrée pas la segmentation originale de ses trames. Les informations du flux sont envoyées dans de nouvelles trames STREAM. Une trame ultérieure peut couvrir une plage différente tout en portant les mêmes octets logiques. La frontière visible dans la première trace n’est donc pas une identité persistante de message. Des plages dupliquées peuvent être reçues puis écartées ; les octets associés à un même offset ne doivent pas changer. Des octets différents au même offset constitueraient une violation du protocole.

Le point de terminaison DOIT être capable de mettre en mémoire tampon les données de flux arrivées dans le désordre jusqu’à la limite de contrôle de flux annoncée, afin de remettre un flux ordonné. Une implémentation peut, séparément, exposer des informations sur les données hors ordre à l’application ; cette exposition ne constitue pas une exigence de QUIC. QUIC ne définit aucun modèle de message applicatif. Un protocole supérieur peut répartir un message sur plusieurs trames, placer plusieurs structures dans une même plage transportée, ou ne transporter qu’une partie d’une structure.

FIN peut fermer le sens d’envoi sans prouver que les données sont valides, analysées, acceptées, exécutées ou durablement enregistrées.

Le registre opérationnel doit séparer l’identifiant et l’heure d’observation, la direction des points de terminaison, l’espace de numéros de paquets et le numéro de paquet, le stream ID et sa direction, l’offset, la longueur encodée ou la règle du reste du paquet, l’empreinte de la plage d’octets, FIN et la taille finale lorsqu’elle est connue, le traitement des doublons, la trace de retransmission, les éléments d’accusé de réception, l’achèvement du réassemblage, l’identifiant de trame ou d’enregistrement applicatif, le résultat du parseur, le reçu de traitement et le résultat métier durable.

Une empreinte respectueuse de la vie privée peut remplacer le contenu brut. Ce registre est une recommandation opérationnelle, pas une exigence de QUIC.

La limite de preuve reste étroite. STREAM peut établir qu’un émetteur a encodé une plage d’octets pour un flux donné. Le traitement authentifié des paquets peut contribuer à établir sa réception par le point de terminaison de transport. Cela ne prouve ni message, ni requête, ni réponse, ni exécution, ni engagement durable, ni succès. Cela ne prouve pas davantage un ordre entre flux. Les limites de message, la taille finale, les plages de données cryptographiques et les éléments ACK sont des questions distinctes.