TCP: Sequenznummern und ACK-Nummern erklärung?

4 Antworten

Beide fangen bei irgendwelchen zahlen an.

Die Sequenznummer ist quasi wo es anfängt, und die länge dann wie lang es ist.

Wenn es also bei 320 anfängt, 400 lang ist heißt dass es hört bei 720 auf. Dementsprechend sendet der B ACK 720, was heißt dass er alle bytes bekommen hat. Er sendet wohl auch Daten zurück, dafür benutzt er eine Sequenznummer die nichts mit der ersten zu tun hat. Und dann funktioniert es genau so, bloß andersrum.

Die Sequenznummer nummeriert die Oktetts im Datenstrom. Der Initialwert ist 'zufällig'.

Wenn ich 10 Oktetts sende und meine Seuqnznummer bei n liegt, ergibt sich folgendes Bild.

Seq-No: n n+1 n+2 n+3 n+4 n+5 n+6 n+7 n+8 n+9 
Oktett: 1   2   3   4   5   6   7   8   9  10

Wenn ich also bei Seq 320 400 Bytes übermittle, dann sind diese Oktetts mit 320 .. 719 nummeriert. bestätigt wird dann mit der nächsten erwarteten, also der 720.

Ich zitiere hierzu einfach mal aus der RFC:

Sequence Number:

32 bits

The sequence number of the first data octet in this segment
(except when the SYN flag is set). If SYN is set, the
sequence number is the initial sequence number (ISN) and
the first data octet is ISN+1.

sowie:

Acknowledgment Number:

32 bits

If the ACK control bit is set, this field contains the value
of the next sequence number the sender of the segment is
expecting to receive. Once a connection is established,
this is always sent.

Die Grafik ist leider falsch.

Wie schon geschrieben werden Start Seq Nummern zufällig vergeben.

Aber TCP arbeitet mit forwarding acknowledgement und die Zahl hinter "ACK" gibt an welche Seq nr als nächstes erwartet.

In dem Beispiel startet die seq nr bei 320 und schickt 400.
Das ACK Packet müsste demnach "721" und nicht "720" heissen, da der receiver ja schon alle 720 bekommen hat.

KarlRanseierIII  04.03.2024, 22:20

Wenn 320 das erste von 400 Bytes ist, welche Nummer erhält dann das letzte Byte?

0