Um den Verbindungsabbauch zu verstehen, muß man eine wichtige Eigenschaft des TCP-Protokolls vestehen.
Da eine TCP-Verbindung eine "voll duplex"-Verbindung darstellt, besteht eine Verbindung eigentlich aus zwei seperaten Verbindungen. Einmal von A nach B und zum anderen eine von B nach A. Wenn also "A" die Verbindung schließen will, ist damit nur die Verbindung von A nach B betroffen.
Die Seite A schickt ein TCP-Paket, indem das FIN-Flag gesetzt ist. Mit Erhalt des Pakets informiert die TCP-Software von B die jeweilige Anwendung, dass die Verbindung geschlossen werden soll und daher keine weiteren Daten verschickt werden können. B bestätigt den Erhalt des FIN-Pakets und wiederholt den gesamten Vorgang von seiner Seite aus. Damit werden beide Teile einer Verbindung geschlossen. Natürlich werden auch hier laufende Sequence- und Acknowledgements Numbers verschickt.
Beispiel: User schließt Verbindung
TCP A TCP B
1. ESTABLISHED ESTABLISHED
2. (Close)
FIN-WAIT-1 CLOSE-WAIT
3. FIN-WAIT-2 CLOSE-WAIT
4. (Close)
TIME-WAIT LAST-ACK
5. TIME-WAIT CLOSED
6. LINK CLOSED
Beschreibung:
. FIN-WAIT-1
Bedeutet, dass Host A auf ein FIN-Paket von Host-B wartet, oder auf die Bestätigung des von ihm gesendeten FIN-Pakets.
. FIN-WAIT-2
Host A wartet auf die Bestätigung des FIN-Pakets
. CLOSE-WAIT
Der Host B wartet auf den Verbindungsabbruch durch den User
. LAST-ACK
Der Host wartet auf Bestätigung seines FIN-Pakets
. TIME-WAIT
Host A wartet eine Zeit damit er sicher sein kann, dass Host B auch seinen Wunsch zum Beenden des Verbindung bekommen hat.
In diesem Fall kann das FIN-Paket an einer beliebigen Stelle des ausgehenden TCP-Stroms stehen. Sobald das FIN-Paket versendet wurde, werden keine weiteren Pakete verschickt. Der Host, der das FIN-Flag verschickt hat ( Host A), wird in den FIN-WAIT 1 Zustand versetzt, dass bedeutet, dass weiterhin ankommende Pakete entgegengenommen werden und alle bisherigen Pakete, inklusive des FIN-Pakets, werden bei Verlust neu verschickt.
Wenn vom anderen Host ( Host B) das FIN-Paket bestätigt hat, sendet er seinerseits ein FIN-Paket, um auch die Verbindung von seiner Seite abzubauen, diese FIN-Paket muß natürlich auch von Host A bestätigt werden. Zu beachten ist hierbei, dass Host B seinerseite erst ein FIN-Paket senden wird, wenn der User die Verbindung auf seiner Seite schließen will.
Mögliche Sonderfälle
. Verbindungsabbruch durch den Remote-Host
. Gleichzeitiger Verbindungsabbruch
4 |