Direkt zum Inhalt

Meinels Web-Tutorial: Von Handshakes und Ports – Datenverbindung über TCP

Sockets und Ports sorgen für eine sichere Datenübertragung, ähnlich wie Häfen und Landungsbrücken in der analogen Welt dafür sorgen, dass Waren verladen und weitertransportiert werden können.
Globale Verbindungen Laden...

Das Internet ermöglicht über seine physischen Netze vermittels seiner Internetprotokolle einen weltweiten Informationsaustausch und Datentransfer in Echtzeit und verbindet dabei völlig heterogene Netze und Anwendungen. Eine besonders entscheidende Rolle kommt dabei dem Transmission Control Protocol – kurz TCP – zu, das zwischen den unterschiedlichsten Systemen verlässliche Verbindungen herstellt und den fehlerlosen Datenaustausch garantiert.

Wie das genau organisiert ist, lässt sich über eine Metapher aus der analogen Welt gut illustrieren. Vergleicht man das Internet mit einem gewaltigen Ozean, über den viele verschiedene Länder und Erdteile durch Schiffsrouten verbunden sind, dann kann man sich die Schnittstellen als Landungsbrücken oder Häfen vorstellen: An diesen Schnittstellen übergeben Internetanwendungen Daten dem Internet zur sicheren Versendung an entfernte andere Internetanwendungen – oder empfangen Daten von diesen. Tatsächlich werden diese Schnittstellen auch in der digitalen Welt als »Sockets« und »Ports« bezeichnet. Diese digitalen Landepunkte sind die Endpunkte von TCP-Verbindungen. Hier werden die Daten aus den Anwendungen »verladen« oder »entladen« und die Fehlerlosigkeit und Vollständigkeit der transportierten Ladung kontrolliert.

Ports sind die Services Access Points der Transportschicht, auf der Daten für diverse Internetanwendungen »umgeschlagen« werden. Ports und Sockets haben Adressen: Die Port-Nummer ist 16 Bit lang, und die Sockets (Landungsstellen) werden durch Socket-Nummern eindeutig charakterisiert. Diese setzen sich aus der IP-Adresse des Rechners und einer lokal zuordenbaren Port-Nummer zusammen. Mit 16 Bit lassen sich 65 536 Ports unterscheiden. Davon sind 1024 global standardisiert und bezeichnen Ports von Anwendungen, die von jedem weltweit genutzt werden können, beispielsweise das World Wide Web (HTTP-Protokoll, Port 80) oder E-Mail (SMTP-Protokoll, Port 25). Weitere 48 128 Ports können bei der IANA, der internationalen IP-Vergabestelle, von privaten oder öffentlichen Institutionen registriert werden, und die verbleibenden 16 384 können frei (dynamisch) vergeben werden.

TCP überträgt Daten Ende-zu-Ende

Um eine Datenverbindung zwischen zwei entfernten Anwendungen aufzubauen, müssen die entsprechenden Landungsstellen, die »Sockets«, anvisiert werden. Diese sind bestimmt durch die Rechner-IP-Adressen, auf denen die beiden Anwendungen laufen, und den jeweiligen Portnummern der beiden Anwendungen, zwischen denen Datenpakete ausgetauscht werden. Die Portnummer auf Empfängerseite ist typischerweise die global standardisierte Portnummer der Empfängeranwendung, für die Senderanwendung wird eine frei verfügbare, nicht anderweitig vom Sendersystem genutzte Portnummer verwendet. Nachdem die Sende- und Empfängerendpunkte für die Datenverbindung festgelegt sind, können die beiden Anwendungen über so genannte TCP-Primitive (Grundbefehle wie »request«, »response«, »confirm« und andere) den Datenaustausch steuern und entsprechende Aktionen auslösen.

Die Hafenmetapher beschreibt sehr gut, dass es sich bei TCP um einen verbindungsorientierten Dienst handelt, der Daten Ende-zu-Ende von einer Anwendung zu einer entfernten anderen überträgt. Um das zu realisieren, muss TCP eine Verbindung aufbauen zwischen den beiden Anwendungen. Da für die Transportzwecke im Internet nur der Datentransferdienst des IP-Protokolls zur Verfügung steht, kann diese Verbindung nur virtuell sein. Für die beiden Anwendungen fühlt sich das zwar an wie eine Ende-zu-Ende-Verbindung, tatsächlich ist das aber nur eine über TCP geschaffene Illusion.

TCP nummeriert die zu versendenden Datenpakete mit einer Sequenznummer, mit deren Hilfe die Vollständigkeit der Sendung überprüft und auch die richtige Reihenfolge der Datenpakete wiederhergestellt werden kann. Die kann nämlich beim Transport der einzelnen Pakete mit dem IP-Datentransferdienst über eventuell unterschiedliche Routen verloren gehen. Damit das funktioniert, müssen beide Kommunikationspartner sicherstellen, dass sie mit den jeweils gleichen initialen Paketnummern hantieren. Dieses gemeinsame Verständnis stellt TCP beim Auf- beziehungsweise Abbau einer Verbindung mittels eines so genannten Drei-Wege-Handshake (beziehungsweise Vier-Wege-Handshake) her. Dabei werden die für die Verbindung vorgesehenen Sockets/Ports definiert und die initialen Sequenznummern ausgetauscht.

Sind alle Datenpakete angekommen?

Zum Verbindungsaufbau sendet das Absendersystem ein so genanntes SYN-Segment, das eine Startsequenznummer x enthält, von der ab alle gesendeten Datenpakete durchnummeriert werden (Schritt 1). Der Empfänger bestätigt den Erhalt des SYN-Segments und der initialen Sequenznummer und sendet als Bestätigung x+1. Zusätzlich wird eine eigene initiale Sequenznummer y versendet (Schritt 2). Das System, das den Aufbau der Verbindung initiiert hat, bestätigt seinerseits nun den Erhalt der Sequenznummer durch Rücksendung von y+1 (Schritt 3). Über die nun aufgebaute Verbindung kann dann der eigentliche Datentransfer in beide Richtungen beginnen.

Wenn alle Daten ausgetauscht sind und ein System die Kommunikation beenden möchte, leitet es den Abbau der Verbindung ein, indem es ein spezielles Ende- oder FIN-Segment überträgt. Mit dem FIN-Segment wird die Endsequenznummer x versehen (Schritt 1). Das Empfängersystem ist damit über die Sequenznummer des letzten zur Verbindung gehörenden Datenpakets informiert und kann dem Sender den Empfang der letzten Sequenznummer bestätigen (Schritt 2).

Es nimmt daraufhin keine weiteren Datenpakete über diese Verbindung an und informiert die Zielanwendung (zum Beispiel den Web- oder E-Mail-Dienst) darüber, dass die Verbindung abgebaut wird. Daraufhin sendet die Zielanwendung ihre eigene Endsequenznummer y (Schritt 3). Schließlich empfängt der Sender die FIN-Sequenz des Zielports, bestätigt diese (Schritt 4), und die TCP-Verbindung ist abgebaut.

Lesermeinung

Beitrag schreiben

Wir freuen uns über Ihre Beiträge zu unseren Artikeln und wünschen Ihnen viel Spaß beim Gedankenaustausch auf unseren Seiten! Bitte beachten Sie dabei unsere Kommentarrichtlinien.

Tragen Sie bitte nur Relevantes zum Thema des jeweiligen Artikels vor, und wahren Sie einen respektvollen Umgangston. Die Redaktion behält sich vor, Leserzuschriften nicht zu veröffentlichen und Ihre Kommentare redaktionell zu bearbeiten. Die Leserzuschriften können daher leider nicht immer sofort veröffentlicht werden. Bitte geben Sie einen Namen an und Ihren Zuschriften stets eine aussagekräftige Überschrift, damit bei Onlinediskussionen andere Teilnehmer sich leichter auf Ihre Beiträge beziehen können. Ausgewählte Lesermeinungen können ohne separate Rücksprache auch in unseren gedruckten und digitalen Magazinen veröffentlicht werden. Vielen Dank!

Partnervideos