Bei der TCP-Verbindung kommt der sogenannte "three-way-handshake" zum Einsatz. Das bedeutet, das drei TCP-Segmente nötig sind um eine Verbindung aufzubauen.
Wenn Host A eine Verbindung zu Host B aufbauen will, dann schickt er ein TCP-Paket, indem das SYN-Flag gesetzt ist. Dadurch erkennt Host B, dass jemand eine TCP-Verbindung mit ihm aufbauen will. Weiters ist es nötig, dass am Host B ständig ein Programm wacht, dass einen bestimmten Port überwacht und feststellt, ob jemand auf diesem Port eine Verbindung aufbauen will.
Wie schon erwähnt schickt Host A ein TCP-Paket, in dem das SYN-Flag und das Sequence Number-Feld mit der Sequence Number gesetzt ist. Daten sind in der Regel nicht enthalten. Ist die Gegenseite zur Verbindungsaufnahme bereit, antwortet sie mit einem TCP-Segment, in dessen Header sowohl das SYN- als auch das ACK-Flag gesetzt ist. Das ACK steht für Acknowledgment, also für Bestätigung des SYN der Gegenseite. Gleichzeitig wird im Acknowledgment Number-Feld die initiale Sequence Nummer plus 1 des Empfängers angegeben. Im Sequence Number-Feld wird die Sequence Number des Empfänger mitgeschickt.
Die abschließende Nachricht vom Sender der Kommunikation dient dazu, um die gewünschte Sequence Number zu bestätigen. Hierzu schickt der Sender beide Sequence-Number (seine und die des Empfängers) plus 1 zurück.
Beispiel: Host A will Verbindung mit Host B aufnehmen
TCP A TCP B
1. CLOSED LISTEN
2. SYN-SENT SYN-RECEIVED
3. ESTABLISHED SYN-RECEIVED
4. ESTABLISHED ESTABLISHED
5. ESTABLISHED ESTABLISHED
1. Anfangszustand
Ein Host A ist inaktiv (geschlossen); Host B wartet auf einen Verbindungsaufbau
2. Verbindungsaufbau von Host A
Host A sendet ein Paket indem das SYN-Flag gesetzt ist und gleichzeitig sendet er seine Sequence Number mit (in dem Beispiel 100).
Host B empfängt das gesendete Paket
3. Bestätigung von Host B
Host B sendet seinerseits ein Paket, indem sowohl das ACK- als auch das SYN-Flag gesetzt ist.
Zur Bestätigung, dass er die Sequence Number von Host A erhalten hat, schickt er sie im ACK-Feld mit, allerdings um eins erhöht. In "seinem" Sequence-Feld schickt er die eigene Sequence Number mit ( 300).
Wenn Host A dieses Paket besteht von seiner Seite steht die Verbindung zu Host B.
4. Nochmalige Bestätigung von A
Damit auch eine Verbindung von B nach A aufgebaut wird, müssem noch ein letzes Mal die beiden Nummern bestätigt werden.
Host A sendet dazu ein Paket mit gesetztem ACK-Flag. Die Sequence Number ist nun 101, die ACK-Number 301.
Kommt das Paket am Host B an, steht die Verbindung auch zu Host A.
5. Daten verschicken
Host A schickt zu Host B Daten.
Mögliche Sonderfälle
. Beide Host wollen gleichzeitig eine Verbindung aufbauen
. Neuaufbau einer "abgestürzten" Verbindung
. Behandlung von halbgeöffnete Verbindungen
|