Normale Datenübertragung
Der Sender eines Datenpakets hält die Sequenznummer des nächsten zu sendenden Bytes
in der Variablen SND.NXT, während der Empfänger die Nummer des nächsten erwarteten
Bytes in der Variablen RCV.NXT speichert. Außerdem wird die kleinste Nummer der
unquittierten Bytes in der Variablen SND.UNA gespeichert. Sind alle Daten gesendet und
findet keine Datenübertragung statt, so haben diese drei Variablen den gleichen Wert.
Der normale Übertragungsvorgang läuft dann folgendermaßen ab.
- Der Sequenzzähler im Datenpaket erhält den Wert SND.NXT und danach erhöht der Sender
eines Datenpakets den Zähler SND.NXT um die Anzahl der (Nutzdaten-) Bytes in dem Paket.
Der Quittungszähler im Datenpaket erhält den Wert von SND.UNA.
- Der Empfänger dieses Pakets vergleicht den Sequenzzähler des Datenpakets mit RCV.NXT
(die Werte müssen gleich sein) und erhöht den Zähler RCV.NXT um die Anzahl der
empfangenen Nutzdatenbytes. Der Wert des Quittungszählers wird in SND.UNA kopiert.
- Außerdem kann der Empfänger eine Quittung senden, die einfach ein Datenpaket mit null
Datenbytes ist. Der Sequenzzähler des Quittungsdatenpakets erhält den Wert von SND.NXT,
der Quittungszähler den Wert von RCV.NXT.
- Der Empfänger einer Quittung vergleicht den Sequenzzähler des Quittungsdatenpakets mit
RCV.NXT (die Werte müssen gleich sein). Der Wert des Quittungszählers wird in SND.UNA
kopiert.
- Statt einer Quittung kann auch ein Datenpaket gesendet werden. Dann wird zusätzlich (zu
4.) der Wert in RCV.NXT um die Anzahl von Nutzdatenbytes erhöht.
Sobald sich TCP im Zustand ESTABLISHED befindet, müssen sämtliche Datenpakete die
Quittungsinformation enthalten. Daher ist dann auch stets das ACK-Bit gesetzt.
In dem folgenden Beispiel stehe der Senhdefolgezähler von DEE A auf 200, der
von B auf 0. Die maximale Zählergröße sei 1000.