Sequenznummer größer als 2^32

28/08/2008 - 20:38 von joscha | Report spam
Hallo,

ich möchte gern eine Art kleines TCP-Protokoll implementieren, nun
stellt sich die Frage was passieren soll, wenn eine A eine Verbindung
aufbaut und mehr als 2^32 Bytes (also mehr als 4 GB) an Nutzdaten an B
sendet, dann müsste ja die Sequenznummer 2^32 übersteigen. Was sieht
hierbei TCP vor? Schließt es in solchen Fàllen die Verbindung oder
fàngt es gar wieder bei 0 an zu zàhlen, wobei soweit ich das
verstanden habe die Sequenznummer innerhalb einer Verbindung ja
eindeutig sein muss?

Viele Grüße

Joscha
 

Lesen sie die antworten

#1 Roman Racine
28/08/2008 - 22:37 | Warnen spam
wrote:

Hallo,

ich möchte gern eine Art kleines TCP-Protokoll implementieren, nun
stellt sich die Frage was passieren soll, wenn eine A eine Verbindung
aufbaut und mehr als 2^32 Bytes (also mehr als 4 GB) an Nutzdaten an B
sendet, dann müsste ja die Sequenznummer 2^32 übersteigen. Was sieht
hierbei TCP vor? Schließt es in solchen Fàllen die Verbindung oder
fàngt es gar wieder bei 0 an zu zàhlen, wobei soweit ich das
verstanden habe die Sequenznummer innerhalb einer Verbindung ja
eindeutig sein muss?



In diesem Fall gibt es einen Wraparound, d.h. die Sequenznummer beginnt
wieder bei 0. Bei einer bestehenden Verbindung ist es durchaus möglich,
dass sich die Sequenznummern nach einem Wraparound wiederholen. Dass es
nicht zu Verwechslungen kommt, ist dadurch garantiert, dass der im Window
codierte Wert kleiner ist als 2^31. (Ohne die Verwendung von TCP-Optionen
ist er sogar immer kleiner als 2^16.)

So ist sichergestellt, dass Sender und Empfànger sich immer darüber einig
sind, ob sich ein Datenpaket oder ein ACK auf eine Sequenznummer vor oder
nach einem Wraparound bezieht.

Gruss

Roman°
IRC: Freenode, #usenet-friends

Ähnliche fragen