Tags: Netzwerk, Monitoring
In einer TCP-Session erkennt der Empfänger anhand von Sequence Numbers, ob Pakete in der richtigen Reihenfolge bzw. mehrfach eintreffen. Mit Acknowledgments bestätigt er den korrekten Empfang oder veranlasst eine erneute Übertragung. Dieser Vorgang lässt sich in Wireshark gut nachvollziehen.
Die folgende Abbildung illustriert die Sequence- und Acknowledgment-Nummern, mit deren Hilfe TCP die Fehlerkorrektur und die Flusskontrolle realisiert.
Wie in einem früheren Beitrag gezeigt, generiert jeder der Partner beim Aufbau einer TCP-Verbindung eine zufällige, 32-Bit lange Sequence Number. Wireshark ersetzt diese lediglich der Übersicht halber durch relative Sequenznummern beginnend mit 0, und zwar für Client und Server.
Jeder der Partner erhöht im Verlauf der Kommunikation die Sequenznummer um die Anzahl der gesendeten Bytes. Zur Analyse der Flusskontrolle kann es daher hilfreich sein, die relativen Sequenznummern zu deaktivieren.
Das sieht dann für das erste SYN-Paket so aus:
Dabei vermerkt jeder der Partner in der Zeile "[Next sequence number:]" eine Folge-Sequenz-Nummer. Hierbei handelt es sich immer um genau diejenige Acknowledgment-Number, die als nächste von der Gegenstelle erwartet wird.
In der Abbildung oben ist die zufällige Start-Sequenz-Nummer des Clients 3759279677. Die eigene Acknowledgement-Number ist noch 0, da der Client noch keine anderen Informationen vom Server erhalten hat.
Die Next-Sequence-Number ist identisch mit der eigenen Sequence Number 3759279677, da noch keine Daten vom Client gesendet wurden. Werfen wir nun einen Blick in das zweite Paket:
Die beliebige Start-Sequenze-Number des Servers ist 3842592582. Demnach ist der Wert für Next-Sequence-Number ebenfalls 3842592582, da von hier ebenfalls noch keine Daten gesendet wurden.
Die Acknowledgement-Number muss allerdings
3759279677 + 1 =3 759279678
sein, weil diese im Rahmen des TCP-Handshakes immer einfach um 1 erhöht wird. Beim Handshake selbst werden keine weiteren Daten gesendet.
Werfen wir noch einen Blick auf das dritte Paket des Handshakes.
Hier ist die Sequence-Number des Clients nun 3759279678, die Next-Sequence-Number wieder 3759279678 (denn auch der Server hat ja im Rahmen des Handshakes noch keine Daten gesendet) und die Acknowledgment-Number nun
842592582 + 1 = 3842592583
Dabei handelt es sich um eine beim TCP-Three-Way-Handshake um 1 erhöhte Sequenz-Nummer.
Täglich Know-how für IT-Pros mit unserem Newsletter
Seine Themenschwerpunkte sind Virtualisierung und Cloud Computing, speziell VMware, Amazon Web Services, Google Cloud und Microsoft Azure. Thomas ist zertifizierter VMware Professional, Advanced Professional und wurde von VMware in den Jahren 2016, 2017, 2018, 2019 und 2020 mit dem Blogger-Status vExpert ausgezeichnet.
Thomas ist außerdem zertifizierter AWS Solutions Architect, Sysops Engineer und Devops Engineer sowie Microsoft Certified Azure Administrator.
Thomas führt aktuell jeden zweiten Montag einen 4-tägigen Grundlagenkurs in Cloud Computing mit AWS via Zoom-Meeting durch. Weitere Informationen und Anmeldung über sein AWS-Blog.
Verwandte Beiträge
Weitere Links