das ELKO - Elektronik - Computertechnik - Kommunikationstechnik - Netzwerktechnik
Schnellsuche:
Newsletter:
anmelden abmelden

TCP - Transmission Control Protocol

Das Transmission Control Protocol, kurz TCP, ist Teil der Protokollfamilie TCP/IP. TCP übernimmt, als verbindungsorientiertes Protokoll, innerhalb von TCP/IP die Aufgabe der Datensicherheit, der Datenflusssteuerung und ergreift Maßnahmen bei einem Datenverlust. Die Funktionsweise von TCP besteht darin, den Datenstrom verschiedener Anwendungen aufzuteilen, mit einem Header zu versehen und an das Internet Protocol (IP) zu übergeben. Beim Empfänger werden die Datenpakete in die richtige Reihenfolge gebracht und an die adressierte Anwendung übergeben.

Das Transmission Control Protocol (TCP) im TCP/IP-Protokollstapel

Schicht Dienste / Protokolle / Anwendungen
Anwendung HTTP IMAP DNS SNMP
Transport TCP UDP
Internet IP (IPv4 / IPv6)
Netzzugang Ethernet, ...

Eigenschaften von TCP

  • Verbindungsmanagement
  • Flusskontrolle
  • Zeitüberwachung
  • Fehlerbehandlung

Funktionsweise von TCP

Durch TCP stehen Sender und Empfänger ständig in Kontakt zueinander. Obwohl es sich eher um eine virtuelle Verbindung handelt, werden während der Datenübertragung ständig Kontrollmeldungen ausgetauscht. So werden zum Beispiel verloren gegangene Pakete von TCP erkannt und erneut angefordert.
TCP hat außerdem einen Algorithmus, der die Datenrate dynamisch an die Netzauslastung anpasst. TCP erhöht nach dem Verbindungsaufbau die Übertragungsrate kontinuierlich, bis irgendwo auf dem Weg zum Empfänger Pakete verloren gehen. TCP reagiert dann umgehend mit der Halbierung der Datenrate.
Zum einen nutzt TCP freie Kapazität aus. Zum anderen, wenn andere Nutzer die Kapazität ebenfalls beanspruchen, dann gibt TCP sie wieder frei. Diese Steuerung findet in den Endgeräten statt. Die IP-Router im Netz haben damit nichts zu tun.
Ein Problem ist das dann, wenn Anwendungen einfach mehrere TCP-Verbindungen öffnen. Das ist zum Beispiel bei P2P-Filesharing in der Regel der Fall. Das Problem dabei ist aber nicht das Filesharing, sondern die Zuteilungsregeln von TCP.

Der kleine Bruder: UDP - User Datagram Protocol

Neben dem verbindungsorientierten TCP gibt es auch das verbindungslose und unsichere UDP. Das User Datagram Protocol (UDP) ist auf der 4. Schicht, der Transportschicht, des OSI-Schichtenmodells angeordnet. Es hat die selbe Aufgabe wie TCP, nur das ihm nahezu alle Kontrollfunktionen fehlen und dadurch schlanker daher kommt und einfacher zu verarbeiten ist.

TCP-Port-Struktur

Funktionsweise von TCP
In jedem TCP-Datenpaket ist eine Nummer hinterlegt, die einen Port definiert, hinter dem sich eine Anwendung oder ein Dienst befindet, die diesen Port abhören und die Daten von TCP entgegennehmen. Datenpakete, die über IP ihr Ziel erreichen, werden von TCP zusammengesetzt und über die Port-Nummer an eine Anwendung übergeben. Dieser Port wird ständig von einem Prozess, Dienst oder einer Anwendung abgehört.
Die Port-Nummer 0 bis 1023 sind jeweils einer Anwendung oder einem Dienst fest zugeordnet. Die darüber liegenden Port-Nummern können frei belegt werden, sofern sie gerade von keinem anderen Dienst belegt sind. Zum Beispiel nehmen Programme einen freien Port, um damit Kontakt zu einem Server aufzunehmen. Der Server schickt dann die Daten an diesen Port zurück. Damit wird sichergestellt, dass die Daten nicht an die falsche Anwendung übergeben werden.
Durch die Port-Struktur ist es möglich, dass mehrere Anwendungen gleichzeitig über das Netzwerk Verbindungen zu Kommunikationspartnern aufbauen können.
Mit der Port-Struktur ist es möglich, dass mehrere Anwendungen gleichzeitig über das Netzwerk Verbindungen zu mehreren Kommunikationspartner aufbauen.

TCP-Port-Übersicht

Well Known Ports 0 - 1023 Diese Ports sind fest einer Anwendung oder einem Protokoll zugeordnet. Die feste Zuordnung ermöglicht eine einfachere Konfiguration durch den Benutzern. Er kommt so mit dem Protokoll TCP in Kontakt.
Die Verwaltung dieser Ports übernimmt die Internet Assigned Numbers Authority (IANA).
Registered Ports 1024 - 49151 Diese Ports sind für Dienste vorgesehen.
Dynamically Allocated Ports 49152 - 65535 Diese Ports werden dynamisch zugewiesen. Jeder Client kann diese Ports nutzen. Wenn ein Prozess einen Port benötigt, fordert er diesen bei seinem Host an.

Beispiele für TCP-Ports

Port-NummerProtokollAnwendung
21FTPDateitransfer
23TelnetKonsole
25SMTPPostausgang
80HTTPWorld Wide Web
110POP3Posteingang
119NNTPUsenet

Aufbau des TCP-Headers

Aufbau des TCP-HeadersJedem Datenpaket, das TCP verschickt, wird ein Header vorangestellt, der die folgenden Daten enthält:

  • Sender-Port
  • Empfänger-Port
  • Paket-Reihenfolge (Nummer)
  • Prüfsumme
  • Quittierungsnummer

Aufbau des TCP-Headers TCP-Pakete setzen sich aus dem Header-Bereich und dem Daten-Bereich zusammen. Im Header sind alle Informationen enthalten, die für eine gesicherte TCP-Verbindung wichtig sind. Der TCP-Header ist in mehrere 32-Bit-Blöcke aufgeteilt. Mindestens enthält der Header 5 solcher Blöcke. Somit hat ein TCP-Header eine Länge von mindestens 20 Byte.

Bedeutung der Felder im TCP-Header

FeldinhaltBitBeschreibung
Quell-Port
(Source-Port)
16 Hier steht der Quell-Port, von der die Anwendung das TCP-Paket verschickt. Bei einer Stellenanzahl von 16 Bit beträgt der höchste Port 65.535.
Ziel-Port
(Destination-Port)
16 Hier steht der Ziel-Port, über welchen das TCP-Paket der Anwendung zugestellt wird. Bei einer Stellenanzahl von 16 Bit beträgt der höchste Port 65.535.
Sequenz-Nummer32 Bei jeder TCP-Verbindung werden Nummern zwischen den Kommunikationspartner ausgehandelt. Während der Verbindung werden diese Nummern verwendet um die TCP-Pakete eindeutig zu identifizieren.
Acknowledgement-Nummer32 Alle Datenpakete werden bestätigt. Dazu dient das ACK-Flag und die Acknowledgement-Nummer, die sich aus der Sequenz-Nummer und der Anzahl von empfangenen Bytes errechnet. Damit kann der Sender feststellen, ob die Daten beim Empfänger vollständig angekommen sind.
Data Offset4 Hier steht die Anzahl der 32-Bit-Blöcke des TCP-Headers. Die Mindestmenge beträgt 5.
Reserviert6 Dieser Bereich ist auf 000000 gesetzt und für Erweiterungen des TCP-Headers gedacht.
Flags1 Kennzeichnung welche Bedeutung das Paket hat.
Window-Größe16 Der Empfänger sendet dem Sender in diesem Feld die Anzahl an Daten, die der Sender senden darf. Dadurch wird das Überlaufen des Empfangspuffers beim Empfänger verhindert. Den Vorgang nennt man Windowing und dient der Datenflusssteuerung.
Check-Summe16 Dieses Feld dient der Kontrolle von Header- und Datenbereich.
Urgent-Pointer16 Zusammen mit der Sequenz-Nummer gibt dieser Wert die genaue Position der Daten im Datenstrom an. Der Wert ist nur gültig, wenn das URG-Flag gesetzt ist.
Optionen/Füllbits
(Options/Padding),
jeweils 32 Bit lang
Dieses Feld beinhaltet optionale Informationen. Um die 32-Bit-Grenze einzuhalten wird das Options-Feld mit Nullen aufgefüllt.

TCP-Flags zur Steuerung der Kommunikation

TCP-Flag Beschreibung
Urgent-Pointer-Flag
(URG-Flag)
Ist das URG-Flag gesetzt wird das Urgent-Pointer-Feld ausgewertet. Ein solches Datenpaket ist keiner Anwendung zugeordnet. Es hat eine besondere Priorität.
Acknowledgement-Flag
(ACK-Flag)
Da sich die Acknowledgement-Nummer nicht bei jedem Datenpaket ändert, kennzeichnet ein gesetztes ACK-Flag die Gültigkeit der Acknowledgement-Nummer.
Push-Flag
(PSH-Flag)
TCP puffert einzelne Datenpakete bis eine größere zusammenhängende Datenmenge vorhanden ist. Ist das PSH-Flag gesetzt, wird dieses Paket sofort an den TCP-Port weitergeleitet.
Reset-Flag
(RST-Flag)
Ist ein Abbruch der TCP-Verbindung notwendig, wird das RST-Flag gesetzt. Es kommt auch zum Einsatz, wenn eine TCP-Verbindung abgewiesen wird.
Syncronization-Flag
(SYN-Flag)
Das SYN-Flag wird gesetzt, wenn zwischen Sender und Empfänger eine Verbindung aufgebaut werden soll.
Final-Flag
(FIN-Flag)
Sind zwischen zwei Stationen alle Daten übertragen, senden beide Stationen ein TCP-Paket mit gesetztem FIN-Flag. Danach gilt die TCP-Verbindung als beendet.

TCP-Verbindungsaufbau

TCP-Verbindungsaufbau
Der Verbindungsaufbau läuft nach dem Three-Way-Handshake ab. Zuerst schickt der Client an den Server einen Verbindungswunsch (SYN). Der Server bestätigt den Erhalt der Nachricht (ACK) und äußert ebenfalls seinen Verbindungswunsch (SYN). Der Client bestätigt den Erhalt der Nachricht (ACK). Danach erfolgt die Kommunikation zwischen Client und Server.

TCP-Kommunikation

TCP-Kommunikation
Der Sender beginnt mit dem Senden des ersten Datenpakets (Send Paket 1). Der Empfänger nimmt das Paket entgegen (Receive Paket 1) und bestätigt den Empfang (Send ACK Paket 1). Der Sender nimmt die Bestätigung entgegen (Receive ACK Paket 1) und sendet das zweite Datenpaket (Send Paket 2). Der Empfänger nimmt das zweite Paket entgegen (Receive Paket 2) und bestätigt den Empfang (Send ACK Paket 2). Der Sender nimmt die zweite Bestätigung entgegen (Receive ACK Paket 2).
Und so läuft die Kommunikation weiter, bis alle Pakete übertragen wurden.

TCP-Kommunikation mit Timer

TCP-Kommunikation mit Timer
Um festzustellen, ob Datenpakete ankommen, wird ein Timer gesetzt. Läuft der Timer ab, dann muss der Sender das Datenpaket nochmal schicken.
Im Prinzip läuft die Kommunikation wie gewohnt. Der Sender beginnt mit dem Senden des ersten Datenpakets (Send Paket 1). Gleichzeitig setzt er einen Timer. Bekommt er die Bestätigung (Send ACK Paket 1) des Empfängers, dann sendet er das zweite Paket. Läuft der Timer jedoch ab, dann geht der Sender von einem Paketverlust aus und sendet das Datenpaket noch mal (Send Paket 1).

TCP-Verbindungsabbau

TCP-Verbindungsabbau
Der Verbindungsabbau kann sowohl vom Client als auch vom Server vorgenommen werden. Zuerst schickt einer der beiden der Gegenstelle einen Verbindungsabbauwunsch (FIN). Die Gegenstelle bestätigt den Erhalt der Nachricht (ACK) und schickt gleich darauf ebenfalls einen Verbindungsabbauwunsch (FIN). Danach bekommt die Gegenstelle noch mitgeteilt, dass die Verbindung abgebaut ist (ACK).

Flusskontrolle

Da es bei Übertragungsproblemen zu doppelten Datenpaketen und Quittierungen kommen kann, werden alle TCP-Pakete und TCP-Meldungen mit einer fortlaufenden Sequenznummer gekennzeichnet. So sind Sender und Empfänger in der Lage die Reihenfolge und Zuordnung der Datenpakete und Meldungen zu erkennen.
Ein weiteres Problem sind die Wartezeiten zwischen Datenpaket, Bestätigung und nächstes Datenpaket. Die Wartezeit kann manchmal sehr lange dauern. Insbesondere dann, wenn die Quittierung eines gesendeten Pakets nicht kommt. Deshalb können auch mehrere TCP-Pakete hintereinander verschickt werden (Sliding Window). Weitere Datenpakete folgen dann, wenn das erste ACK zurück kommt.

Weitere verwandte Themen:

Bookmark

 Mr. Wong  Webnews  Linkarena  Favoriten  Yigg  Del.icio.us  Facebook  Google Information

Findest Du Elektronik-Kompendium.de gut? Hat Dir diese Webseite auch schon weitergeholfen?
Willst Du uns dabei unterstützen noch bekannter und besser zu werden?
Erfahre mehr über die Möglichkeiten. Jeder kann etwas tun!