Das Transmission Control ProtocolWas ist eigentlich TCP?TCP ist der meist genutzte Transport-Dienst in IP-Netzen. Tatsächlich wird er so exzessiv genutzt, das man statt vom IP-Protokoll normalerweise von TCP/IP spricht. Er bietet eine ganze Reihe von Features für den darunter liegenden IP-Layer und die darüber liegenden Dienste. Am wichtigsten dabei: Er bietet ein verbindungsorientiertes Protokoll für die höheren Schichten, das garantiert das Pakete vollständig und in der richtigen Reihenfolge ankommen. ![]() TCP kümmert sich um den Datenfluss zwischen den Anwendungen und der IP-Schicht, räumt auf wenn eine Anwendung terminiert, korrigiert Fehler auf der IP-Schicht, und verwaltet eine Tabelle aller TCP-Verbindungen und deren Zustand. Es ist daher eher kompliziert, erspart es aber den Anwendungen all das selbst zu implementieren. Eine TCP-Verbindung wird wie eine Datei geöffnet und geschlossen, und in eine TCP-Verbindung kann im Grunde wie in eine Datei geschrieben und wie aus einer Datei gelesen werden. Der Weg einer TCP-Nachricht
Die TCP-Software der empfangenden Maschine kann eine einfache Form der Flusskontrolle nutzen. Sie tut dies, indem sie eine Puffergröße, ein sogenanntes Window zum Sender schickt. Der Sender darf nur bis dieses Fenster gefüllt ist Daten senden. Danach muss er warten bis ein neues Fenster geschickt wird. Weiterhin verwendet TCP Timer zur Flusskontrolle. Zum Beispiel läuft während des Wartens auf eine Empfangsbestätigung ein Timer. Läuft dieser ab bevor eine Empfangsbestätigung kommt, so gilt das Paket als nicht empfangen. Werden Teile von Paketen doppelt empfangen, so werden die überflüssigen Teile verworfen. Der TCP-Stack ist nur daran interessiert das Pakete empfangen werden. Wie oft ist ihm egal. Der Transmission Control Block und die FlußkontrolleTCP verwaltet eine Menge Informationen über bestehende Verbindungen, und das tut es, indem es zu jeder Verbindung einen TCP Transmission Control Block mit folgendem Inhalt verwaltet.
Beispiel: Maschine A möchte 5 Datenblöcke an Maschine B schicken. Die Fenstergroeße, also die Anzahl der Blöcke die ohne Bestätigung geschickt werden dürfen ist 7. Die Variable SND.UNA enthält danach die Anzahl der unbestätigten Pakete (5) und die Variable SND.NEXT die Folgenummer des nächsten Paketes (6). Der Wert der Variable SND.WND gibt an wievele Blöcke noch ohne Bestätigung gesendet werden können (2), bevor auf eine Betsätigung von Maschine B gewartet werden muß. |