TCP garantit que les octets arrivent, dans l'ordre, sans perte ni duplication. Il ne garantit rien sur leur découpe, et cette nuance est la source d'une classe entière de bogues.
Ce que le protocole ne fait pas
Deux envois consécutifs peuvent être reçus en une seule lecture, et un envoi de mille octets peut être reçu en trois morceaux.
Les deux délimitations
Un délimiteur, souvent un saut de ligne, marque la fin d'un message. Simple et lisible, mais il interdit au contenu de comporter ce caractère sans échappement.
Une longueur en préfixe annonce le nombre d'octets à lire. C'est la solution générale.
Objectif
Donner le nombre minimal de lectures pour recevoir trois envois, dire si un envoi correspond à une lecture, compter les stratégies présentées, et nommer la plus générale.
Pièges
Un programme testé en local fonctionne presque toujours, parce que les messages y sont petits et arrivent d'un bloc. Le défaut n'apparaît que sur un vrai réseau, ou sous charge, quand la découpe change.