Auch wenn dir
TCP eine Bytestromsemantik bietet, würde ich ein ein Protokoll abstrakt wieder als einen Nachrichtenaustausch sehen. Dann kannst du dein Protokoll schön mit Hilfe von Zustandsautomaten und Ablaufdiagramm entwickeln.
Für dein spezielles Problem kannst du dir mal angucken, wie die
Flußsteuerung in
TCP (oder einfacheren Protokollen) umgesetzt ist und dich davon inspirieren lassen.
Dabei musst du den
TCP-Datenstrom nicht unbedingt wieder logisch zerhacken, aber die Vorstellung könnte hilfreich sein.
Allgemein wäre es gut, Endianess und Kodierung von Zeichenketten festzuschreiben, damit es da keine Verwirrungen gibt. Ein Handshake, um festzustellen dass beide Endstellen das gleiche Protokoll sprechen, sollte auch nicht schaden.