Rechnernetze
Home Nach oben

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.

TCP-HEADER.WMF (7978 Byte)

Der normale Übertragungsvorgang läuft dann folgendermaßen ab.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.