Internet-Protokolle, Teil 1: TCP/IP, der Grundstein für Anwendungsprotokolle

Seite 3: Übertragungsmechanismen

Inhaltsverzeichnis

Sobald eine TCP-Verbindung erfolgreich aufgebaut ist, beginnt die Übertragung der Daten. Da es sich bei der Verbindung um eine Vollduplex-Pipe handelt, kann jeder der beiden verbundenen Knoten sowohl Sender als auch Empfänger sein.

Für eine sichere Übertragung durch ein Netz teilt TCP den Datenstrom in Pakete auf (segmentieren). Die einzelnen Segmente oder Pakete werden nacheinander geschickt. Pakete die den Empfänger erreichen, bestätigt dieser (Acknowledge/ACK). Passiert das nicht innerhalb einer bestimmten Zeit (Timeout), gelten die Pakete als verloren, und der Sender muss sie erneut verschicken. Je mehr Segmente neu zu senden sind, desto langsamer ist die Übertragung.

Innerhalb eines lokalen Netzes (LAN) treten Timeouts selten auf. TCP-Pakete, die weitere Strecken zurücklegen müssen (in einem Wide Area Network, WAN), passieren jedoch Hindernisse auf ihrem Weg. Neben Routern, die eine Vielzahl von TCP-Paketen verarbeiten, können auch langsame Verbindungen zum Flaschenhals werden.

Schickt man zu viele Pakete gleichzeitig auf den Weg, kommt es an den Hindernissen zu Staus. Die Pakete am Ende der Schlange erreichen ihr Ziel nicht innerhalb der erwarteten Zeit, sodass keine Bestätigung erfolgt. Durch das erneute Senden der Pakete wird die Situation im Staubereich weiter verschlechtert und es kommt im schlimmsten Fall zu einem kompletten Zusammenbruch der Verbindung. Abbildung 2 zeigt, wie TCP-Pakete sich an Engpässen stauen.

Auf dem Übertragungsweg kann es zu Datenstaus kommen. (Abb. 2)

Nicht nur Datenpakete auf ihrem Weg zum Empfänger werden verlangsamt, sondern auch deren Bestätigung wird ausgebremst.

Um das zu verhindern, verwendet TCP eine Kombination aus einem langsamen Steigern der Anzahl der Pakete, die gleichzeitig auf die Reise gehen (Slow Start[2]), und einem Stau-Vermeidungs-Algorithmus (Congestion Avoidance Algorithm[3]). Je nachdem welcher Algorithmus verwendet wird, ist die Reaktion auf verlorene Pakete unterschiedlich.

Die maximale Menge an Daten, die ohne Bestätigung gesendet werden darf, bestimmt jedoch der Empfänger. Die Größe dieses Sendefensters teilt er dem Sender mit.

Neben Staus durch Hindernisse im Netz kann der Empfänger selbst Daten vielleicht nicht so schnell verarbeiten, wie ein Sender sie schickt. Der Speicherbereich (Puffer) für die Verwaltung der empfangenen Pakete wäre schnell voll, und weitere Pakete ließen sich nicht mehr annehmen. Die ausbleibende Bestätigung führt dann zum erneuten Senden der verworfenen Pakete.

Damit es nicht soweit kommt, teilt der Empfänger dem Sender mit, wie viele Daten er schicken darf, ohne auf eine Bestätigung zu warten. Diese Größe bezeichnet man als Fenster (Window). Sobald Datenpakete vom Empfänger bestätigt wurden, verschiebt sich das Fenster um die Menge der quittierten Daten (Sliding Window[4]). Abbildung 3 zeigt, wie sich ein Sendefenster abhängig von empfangenen Bestätigungen (ACK) bewegt. So ist zu jedem Zeitpunkt sichergestellt, dass der Sender nur so viele Daten verschickt, wie der Empfänger verarbeiten kann.

Das Sendefenster bewegt sich und stellt sicher, dass beim Empfänger nicht mehr ankommt, als er verarbeiten kann. (Abb. 3)