Peer-to-Peer-Netzwerke: Algorithmen und Methoden
dargestellt.
1. Im ersten Segment sendet der Client ein SYN-Segment mit der initialen Sequenznummer (und naturlich mit dem gewUnschten Ziel-Port).
2. Der Server antwortet mit einem SYN-Segment mit seiner initialen Sequenznummer and bestatigt mit diesem Segment durch ACK-Flag and Bestatigungsnummer (= Sequenznummer des Clients +1) das erste Segment des Clients.
3. Der Client bestatigt das SYN-Segment des Servers durch ein ACK-Segment mit Bestatigungsnummer (= Sequenznummer des Servers +1).
TCP legt hierbei mit dem SYN-Segment auch die maximale SegmentgroBe (MSS: Maximum Segment Size) test. Dies geschieht dadurch, dass jeder Empfanger dem Sender die SegmentgroBe, die er empfangen mochte, mitteilt. Problematisch ist bei diesem einfachen Protokoll, dass nicht getestet wird, ob these PaketgroBe auch tatsachlich ubermittelt werden kann. Beispielsweise kann ein Router oder ein dazwi- schen genutztes Netzwerk hierbei gewissen Einschrankungen unterliegen. Es sei hier erwahnt, class IPv4 Datagramme, deren Lange die maximale Ubertragungseinheit einer Verbindung (MTU: Maximum Transmission Unit) uberschreiten, zerlegt (frag- mentiert) and am Zielrechner wieder zusammengesetzt werden. Ein solcher Vorgang verringert naturlich den Datendurchsatz and erhoht die Fehleranfalligkeit. In IPv6 werden zu groBe Datagramme gleich ganz geloscht.
Es sei angemerkt, dass TCP neben dieser Art des Client-Server-Verbindungsauf- baus auch andere Varianten des Verbindungsaufbaus erlaubt [17], auf die wir bier jedoch nicht eingehen. Stattdessen wenden wir uns nun dem Beenden von TCPVerbindungen zu.
Verbindungsende
TCP erlaubt einen so genannten Half-Close, d.h., die gegenlaufigen Datenstrome konnen unabhangig voneinander beendet werden. Ist ein Datenstrom durch einen Half-Close beendet, konnen noch Daten in der Gegenrichtung ubermittelt werden.
Abb. 2.11. Half-Close einer TCP-Verbindung.
Fur einen solchen Half-Close werden zwei Segmente benotigt, siehe Abbildung 2.11:
Abb. 2.10. Schematischer Verbindungsaufbau einer Client-Server TCP-Verbindung.
1. Der Sender (einer Datenrichtung) verschickt ein FIN-Segment.
2. Der Empfanger bestatigt dies durch ein ACK-Segment.
Fur das vollstandige SchlieBen einer TCP-Verbindung werden wegen zweier Half- Close-Operationen daher vier Segmente benotigt, siehe Abbildung 2.12.
Abb. 2.12. Zwei entgegengesetzte Half-Close beenden eine TCP-Verbindung.
Bestatigungen and Fenster
Wie schon bei der Beschreibung des TCP-Headers erwahnt wurde, werden die Anwendungsdaten dutch die Sequenznummern durchnummeriert. Jedes TCP-Paket mit Daten muss bestatigt werden. Pakete, die keine Daten tragen and nur aus Bestatigungen bestehen, werden nicht bestatigt. Diese verursachen naturlich auch keine Erhohung der Sequenznummer.
TCP nutzt nun die gegenlaufigen Datenstrome, um Bestatigungen in einer Richtung per Huckepack mit Daten aus der Gegenrichtung zu befordern. Ferner mussen Segmente nicht einzeln bestatigt werden. Sind alle Segmente bis zum Datenbyte mit Sequenznummer i korrekt eingetroffen, wird lediglich eine einzige Bestatigungsnummer i + 1 zuruckgeschickt, unabhangig davon, wie viele Pakete seit der letzten Bestatigung eingetroffen sind. Tatsachlich wird bei jedem Segment (auBer bei Verbindungsaufbau and Ende) das ACK-Flag gesetzt and mit der Bestatigungsnummer das als nachstes erwartete Datenbyte mitgeteilt.
Um weitere Segmente einzusparen, arbeitet TCP mit verzogerten Bestatigungen (Delayed Acknowledgements). Hat etwa eine Seite keine Daten zu senden, wartet sie zwischen den reinen Bestatigungspaketen eine Mindestzeit (z.B. 200 ms), um einkommende Segmente zu sammeln.
Das Packet-Forwarding Protokoll von IP kummert sich nicht um eine faire and effiziente Ausnutzung der Verbindungsressourcen. Diese Aufgabe muss die Transportschicht ubernehmen. Wir stellen nun die verschiedenen Mechanismen hierfur vor.
Exponentielles Zuriickweichen
TCP unterhalt eine Retransmission-Timer-Variable, (RTO - Retransmission Timeout), die den minimalen Zeitraum (von z.B. einer Sekunde) vorgibt, nach dem ein verlo- renes Segment als solches erkannt wird and es erneut verschickt werden darf. Bleibt also die Bestatigung fur ein Paket aus, wartet TCP mindestens den in dieser Variablen beschriebenen Zeitraum and sendet dann das Paket nochmals.
Das Besondere hierbei ist, dass dieser Wert nach jedem erfolglosen Senden eines Pakets verdoppelt wird, bis er eine obere Grenze von 64 Sekunden erreicht hat and dort verbleibt. Erreicht die
Weitere Kostenlose Bücher