Frage zu TCP und Sequenznummer



  • Hallo zusammen,

    wenn man per TCP/IP Daten überträgt, wird ja nach dem TCP Standard u.a. eine Sequenznummer gesetzt. Diese verändert sich nach einem bestimmten Schema bei jeder weiteren Übertragung eines Datenblocks bis das gesamte Datenpaket übertragen wurde.

    Soweit hab ich das verstanden. Jetzt zu meiner Frage: Wenn eine Übertragung abgeschlossen wurde, steht die SeqNr meinetwegen mal auf 1024 beim Sender. Jetzt möchte der Sender eine weitere Datei übertragen: Wird die Start-SeqNr nun neu generiert oder wird zum Verbindungsaufbau die 1024 genommen?



  • Wird die Start-SeqNr nun neu generiert oder wird zum Verbindungsaufbau die 1024 genommen?

    Start-SeqNr = alte SeqNr, d. h. es wird die 1024 genommen



  • Start-SeqNr = alte SeqNr

    stimmt das? Das ist mir jetzt was ganz neues. Macht für mich gerade auch keinen Sinn. Kannst du das kurz genauer erläutern oder ne Quelle nennen, die das näher beschreibt?



  • Wie die ISN genau vergeben wird hängt von der Implementierung ab. Die ISN sollte aber unbedingt für alle Verbindungen in einem bestimmten Zeitraum unterschiedlich sein!! Nach RFC-Vorgabe sollte sie alle 4 Microsekunden um 1 erhöht werden. In BSD-Implementierungen wird sie pro 1/2 Sekunde um 64.000 erhöht und zusätzlich bei jeder neuen Verbindung um 64.000.
    Wenn sie bei einer neuen Verbindung wieder 1024 wäre, wie sollte die Transportschicht dann die Pakete zuordnen können? Wäre zudem sicherheitstechnisch nicht grade toll 😉



  • das mit der Erhöhung stimmt natürlich, nur muss in meinem Beispiel ja eigentlich keine neue Verbindung aufgebaut werden, es werden lediglich erneut Daten gesendet über eine bestehende Verbindung. Erhöht sich die SEQNR trotzdem automatisch?



  • Wenn du eine bestehende Verbindung hast, dann brauchst du ja keine neue ISN. Du kannst auf der bestehenden Verbindung solange senden wie du willst bzw. bis du die Verbindung schließt. TCP ist ein byte-orientiertes Protokoll und kennt daher keine Paketgrenzen, die Nachrichtengrenzen müssen in der Anwendungsschicht (letztlich in deinem Programm) definiert werden. Die Sequenznummern repräsentieren ja nur die jeweiligen Byte-Positionen bzw. die Offsets der Daten innerhalb deiner TCP-Verbindung, daher wird sie halt nach dem üblichen Schema weiter erhöht, hat aber dann in dem Fall nichts mit der ISN zu tun..


Anmelden zum Antworten