Piggybacking : transporter un acquittement avec les données
Comprendre les échanges bidirectionnels et distinguer l’acquittement, la temporisation et le contrôle de flux.
Chapitre rédigé pour compléter cette ancienne adresse. Les exemples et exercices ci-dessous sont originaux.
1. Deux sens de communication
A envoie une trame de données à B. B doit confirmer sa réception. Si B a également des données pour A, il peut joindre l’acquittement à cet envoi au lieu d’émettre une trame séparée : c’est le piggybacking.
2. Fixer la convention de numérotation
Dans cet exemple pédagogique, ACK k signifie « la prochaine trame attendue est k ». B reçoit la trame 0 et annonce ACK 1. Certains exercices utilisent au contraire le dernier numéro reçu : lisez la convention avant de calculer.
| Événement | Réponse de B |
|---|---|
| B reçoit 0, attend 1, possède des données | Données de B + ACK 1 |
| B reçoit 0, attend 1, n’a rien à envoyer | ACK seul après une attente bornée |
| La confirmation se perd | A peut retransmettre à expiration de son délai |
3. Éviter l’attente infinie
On ne doit pas attendre indéfiniment des données à envoyer dans le sens retour. Une temporisation d’acquittement permet d’envoyer un ACK seul. Elle se distingue du délai de retransmission de l’émetteur. En TCP, les numéros portent sur les octets et les acquittements cumulatifs ; il ne faut pas appliquer directement un exercice de trames à tous les détails de TCP.
4. Scénarios corrigés
B reçoit la trame 4 puis envoie des données. Quel ACK ajouter avec notre convention ?
Voir le corrigé expliqué
ACK 5, si toutes les trames précédentes ont été reçues dans l’ordre. Il indique la prochaine attendue, pas le numéro des données propres à B.
Pourquoi un ACK seul reste-t-il nécessaire ?
Voir le corrigé expliqué
Si B n’a aucune donnée applicative à transmettre, A doit tout de même être informé. Le piggybacking est une optimisation, pas une condition obligatoire de confirmation.
Une confirmation perdue signifie-t-elle que les données ont été perdues ?
Voir le corrigé expliqué
Non. B peut avoir accepté les données sans que A reçoive l’ACK. Les numéros de séquence permettent de reconnaître une retransmission et d’éviter une livraison en double.
Deux trames séparées ou une trame combinée ?
Voir le corrigé expliqué
Avec des données en attente dans les deux sens, la combinaison économise l’en-tête d’une trame de contrôle. En contrepartie, retarder un acquittement peut augmenter la latence : on borne cette attente.
Référence : IETF : TCP, RFC 9293.