TCP (Transmission Control Protocol)
Was ist das Transmission Control Protocol (TCP)?
Das Transmission Control Protocol (TCP) ist ein Standard, der definiert, wie eine Netzwerkkonversation aufgebaut und aufrechterhalten wird, über die Anwendungen Daten austauschen können.
TCP ist eines der wichtigsten Kommunikationsprotokolle der IP-Suite und befindet sich auf der Transportschicht des OSI-Modells (Open Systems Interconnection). Es arbeitet mit IP zusammen, das definiert, wie Computer Datenpakete aneinander senden. Zusammen bilden TCP und IP die Grundregeln, die das Internet definieren und die erfolgreiche Zustellung von Nachrichten über Netzwerke gewährleisten.
Die Entstehungsgeschichte von TCP
Die Entstehung des Internets ist eng mit der Geschichte des Transmission Control Protocol verknüpft. Im Folgenden finden Sie einen kurzen Überblick über die wichtigsten Ereignisse in der Geschichte von TCP:
- 1960s. In den Anfängen der Computernetzwerke wurden verschiedene Protokolle entwickelt, um die Kommunikation zwischen verschiedenen Computern zu erleichtern. Protokolle wie das Network Control Program wurden im ARPANET verwendet, dem Vorläufer des heutigen Internets.
- Anfang der 1970er Jahre. Die Arbeit an der TCP/IP -Suite begann in den frühen 1970er Jahren. TCP/IP wird weithin als Erfindung von Vinton Cerf und Bob Kahn angesehen. Die erste Version sollte verschiedene vom US-Verteidigungsministerium finanzierte Forschungsnetze miteinander verbinden.
- 1974. In einem Papier mit dem Titel A Protocol for Packet Network Intercommunication skizzierten Cerf und Kahn die Spezifikationen für TCP. In diesem Papier wurden die wesentlichen Grundsätze der verbindungsorientierten Kommunikation und das Konzept der Aufteilung von Daten in Pakete für die Übertragung über Netzwerkedargelegt.
- 1978. Ursprünglich waren TCP und IP eng miteinander verbunden. Im Jahr 1978 wurden die Protokolle in zwei Schichten getrennt: IP für Paketadressierung und Routing und TCP für die zuverlässige, verbindungsorientierte Kommunikation.
- 1980s. 1981 wurden IPv4 und TCP durch die Request for Comments 791 und RFC 793 der Internet Engineering Task Force standardisiert. Dies war ein wichtiger Wendepunkt in der Entwicklung des Internets zu einem weltweiten Netz. Im Laufe der Jahre wurde TCP verbessert und erweitert, um verschiedene Probleme zu beheben und die Leistung zu steigern. Dazu gehörten die Entwicklung von Algorithmen zur Staukontrolle, Verbesserungen für Hochgeschwindigkeitsnetze und Überarbeitungen der Protokolldefinition.
- 1990er-2000er Jahre. Da die zugänglichen IPv4-Adressen knapp wurden, bekam die Migration zu IPv6 höchste Priorität. IPv6 wirkt sich auf TCP und andere Protokolle auf der Transportschicht aus, auch wenn der Schwerpunkt auf der IP-Adressierung liegt.
TCP wird nach wie vor entwickelt und standardisiert, und es wird ständig daran gearbeitet, neue Herausforderungen zu bewältigen, die Leistung zu verbessern und sich an die sich entwickelnden Netzwerkumgebungen anzupassen.
Die vier Schichten von TCP/IP
TCP/IP besteht aus vier Schichten, von denen jede eine bestimmte Funktion im Datenübertragungsprozess übernimmt.
Zu den vier Schichten (Layers) des TCP/IP-Stacks gehören die folgenden:
- Netzzugangsschicht. Die Netzzugangsschicht (Network Access Layer), manchmal auch als Datenverbindungsschicht (Data Link Layer) bezeichnet, verwaltet die Netzinfrastruktur, die die Computerkommunikation über das Internet ermöglicht. Zu den Hauptkomponenten gehören Gerätetreiber,Netzwerkkarten, Ethernet-Verbindungen und drahtlose Netzwerke.
- Internet-Schicht. Die Adressierung, Weiterleitung und Fragmentierung von Datenpaketen über verschiedene Netze hinweg wird von der Internet-Schicht (Internet Layer) verwaltet. Sie nutzt das Internetprotokoll, um Geräten eindeutige IP-Adressen zuzuweisen und zu gewährleisten, dass die Pakete ihren Bestimmungsort erreichen.
- Transportschicht. Diese Schicht (Transport Layer) ermöglicht die End-to-End-Kommunikation zwischen den Geräten. Durch den Einsatz von Protokollen wie dem User Datagram Protocol (UDP) und TCP wird die konsistente und systematische Zustellung von Datenpaketen gewährleistet. Während UDP eine schnellere, verbindungslose Kommunikation ermöglicht, sorgt die TCP-Verbindung für eine zuverlässige, verbindungsorientierte Kommunikation.
- Anwendungsschicht. Die oberste Schicht, die Anwendungsschicht (Application Layer), ist für die Unterstützung bestimmter Dienste und Anwendungen zuständig. Sie umfasst eine breite Palette von Protokollen, darunter das File Transfer Protocol (FTP), das Simple Mail Transfer Protocol (SMTP) und HTTP.
Wie das Transmission Control Protocol funktioniert
TCP ist ein verbindungsorientiertes Protokoll, das heißt eine Verbindung wird aufgebaut und aufrechterhalten, bis die Anwendungen auf beiden Seiten den Austausch von Nachrichten beendet haben.
TCP führt die folgenden Aktionen durch:
- Aufbau durch ein Drei-Wege-Handshake, bei dem Sender und Empfänger Steuerpakete (Control Packets) austauschen, um sich zu synchronisieren und eine Verbindung herzustellen.
- Legt fest, wie die Anwendungsdaten in Pakete zerlegt werden, die über das Netz übertragen werden können.
- Sendet Pakete an die Netzwerkschicht und nimmt Pakete von ihr entgegen.
- Verwaltet die Flusskontrolle.
- Kümmert sich um die erneute Übertragung von verworfenen oder verstümmelten Paketen, um eine fehlerfreie Datenübertragung zu gewährleisten.
- Bestätigt alle ankommenden Pakete.
- Beendet die Verbindung nach Abschluss der Datenübertragung durch einen vierfachen Handshake.
Im OSI-Kommunikationsmodell deckt TCP Teile von Schicht 4, der Transportschicht, und Teile von Schicht 5, der Sitzungsschicht (Session Layer), ab.
Wenn ein Webserver eine HTML-Datei an einen Client sendet, verwendet er dazu HTTP. Die HTTP-Programmschicht fordert die TCP-Schicht auf, die Verbindung aufzubauen und die Datei zu senden. Der TCP-Stack teilt die Datei in Datenpakete auf, nummeriert sie und leitet sie dann einzeln an die IP-Schicht zur Zustellung weiter.
Obwohl jedes Paket bei der Übertragung dieselbe Quell- und Ziel-IP-Adresse hat, können die Pakete über mehrere Routen gesendet werden. Die TCP-Programmschicht (Program Layer) auf dem Client-Computer wartet, bis alle Pakete eingetroffen sind. Dann bestätigt sie die empfangenen Pakete und bittet um die erneute Übertragung der Pakete, die sie nicht erhalten hat, basierend auf den fehlenden Paketnummern. Die TCP-Schicht setzt dann die Pakete zu einer Datei zusammen und übergibt die Datei an die empfangende Anwendung.
TCP und UDP im Vergleich
TCP und UDP sind zwei verschiedene Protokolle für die Übertragung von Daten über das Internet. Zu den wichtigsten Unterschieden zwischen TCP und UDP gehören die folgenden:
- TCP bietet eine zuverlässige Zustellung aufgrund des Prozesses der Fehlererkennung, bei dem TCP die Pakete nach ihrem Eintreffen erneut überträgt und neu anordnet. Allerdings kann dies zu Latenzzeiten in einem TCP-Stream führen. UDP hingegen überträgt die Daten nicht erneut. Zeitkritische Anwendungen wie Voice-over-IP, Videostreaming und Spiele setzen in der Regel auf UDP, da es Latenz und Jitter reduziert, indem es Pakete nicht neu anordnet oder fehlende Daten nicht erneut überträgt.
- Im Gegensatz zu TCP wird UDP als Datagramm-Protokoll oder verbindungsloses Protokoll eingestuft, da es keine Möglichkeit hat, zu erkennen, ob beide Anwendungen ihre Hin- und Her-Kommunikation beendet haben.
- Anstatt wie TCP ungültige Datenpakete zu korrigieren, verwirft UDP diese Pakete und überlässt der Anwendungsschicht eine genauere Fehlererkennung.
- Der Header eines UDP-Datagramms enthält weit weniger Informationen als ein TCP-Segment-Header. Der UDP-Header wird auch auf der Transportschicht viel weniger verarbeitet, um die Latenzzeit zu verringern.
Wofür wird TCP verwendet?
TCP wird verwendet, um Daten so zu organisieren, dass eine sichere Übertragung zwischen dem Server und dem Client gewährleistet ist. Es garantiert die Integrität der über das Netz gesendeten Daten, unabhängig von ihrer Menge. Aus diesem Grund wird es für die Übertragung von Daten aus anderen übergeordneten Protokollen verwendet, bei denen alle übertragenen Daten ankommen müssen.
Beispiele für solche Protokolle sind die folgenden:
- Secure Shell, FTP, Telnet. Für den Peer-to-Peer-Dateiaustausch und, im Falle von Telnet, für das Einloggen in den Computer eines anderen Benutzers, um auf eine Datei zuzugreifen.
- SMTP, Post Office Protocol, Internet Message Access Protocol. Für das Senden und Empfangen von E-Mails.
- HTTP. Für den Web-Zugang.
Diese Beispiele befinden sich alle auf der Anwendungsschicht des TCP/IP-Stapels und senden Daten nach unten zu TCP auf der Transportschicht.
Einige wichtige Anwendungsfälle von TCP sind die folgenden
- Zuverlässige Datenübertragung. Eine der Hauptfunktionen von TCP ist die Gewährleistung einer zuverlässigen Datenübertragung durch Fehlererkennung, erneute Übertragung von Datenpaketen und Sequenzierung von Datenpaketen. Es garantiert, dass die Daten fehlerfrei und in der richtigen Reihenfolge empfangen werden.
- Web Browsing. Ohne TCP wäre das Surfen im Internet nicht möglich. TCP stellt eine Verbindung zwischen dem Client, das heißt dem Webbrowser, und dem Server her, der die Webseite hostet. Es garantiert, dass Ressourcen und Webseiten konsistent und in der richtigen Reihenfolge bereitgestellt werden.
- E-Mail-Zustellung. TCP wird auch für die Zustellung von E-Mails verwendet. Indem es eine Verbindung zwischen dem Client und dem Mailserver herstellt, garantiert TCP, dass E-Mails zuverlässig zugestellt und empfangen werden.
- Dateiübertragung. TCP wird häufig für Dateiübertragungsprotokolle wie FTP und Secure File Transfer Protocolverwendet. Es sorgt dafür, dass Dateien zuverlässig und fehlerfrei transportiert werden.
- Fernzugriff. TCP wird auch für den Fernzugriff mit Protokollen wie Telnet und SSH verwendet. Mit diesen Protokollen können Benutzer über eine sichere Verbindung auf Computer oder Netzwerkgeräte zugreifen und diese fernsteuern.
- Datenbankzugriff. TCP wird für den Zugriff auf Datenbanken über Netzwerke verwendet. Es garantiert die sichere und zuverlässige Übertragung von Abfragen und Datenbankantworten.
- Nachrichtenübermittlung und Chat. TCP wird in Messaging- und Chat-Anwendungen eingesetzt, um die zuverlässige Übermittlung von Nachrichten zwischen Benutzern zu gewährleisten.
- Virtuelle Private Netzwerke (VPNs). TCP wird in VPNs eingesetzt, um sichere und zuverlässige Verbindungen zwischen entfernten Benutzern und privaten Netzen herzustellen.
Was ist die Bedeutung von TCP?
TCP ist wichtig, weil es die Regeln und Standardverfahren für die Art und Weise der Informationsübertragung im Internet festlegt. Es ist die Grundlage für das Internet in seiner heutigen Form und sorgt dafür, dass die Datenübertragung unabhängig von Standort, Hardware oder Software einheitlich erfolgt.
TCP ist flexibel und hochgradig skalierbar, was bedeutet, dass neue Protokolle eingeführt werden können. Es wird sie aufnehmen. Außerdem ist es nicht proprietär, das heißt es ist nicht im Besitz einer Person oder eines Unternehmens.
Die Vor- und Nachteile von TCP
TCP bietet die folgenden Vorteile:
- Verlässlichkeit. Wie bereits erwähnt, bietet TCP die Funktionen Fehlererkennung, Paketwiederholung bei fehlenden Paketen und Paketreihenfolge, um eine zuverlässige Datenübertragung zu gewährleisten.
- Flusskontrolle. Um zu verhindern, dass zu viele Daten auf einmal an den Empfänger gesendet werden, verwendet TCP die Methoden der Flusskontrolle (Flow Control), um die Geschwindigkeit der Datenübertragung zu regulieren.
- Ordnung und Reihenfolge der Pakete. TCP stellt sicher, dass die Datenpakete in der gleichen Reihenfolge empfangen werden, in der sie gesendet wurden, indem es ihre Reihenfolge und Sequenznummer garantiert.
- Fehlerprüfung. TCP führt eine umfangreiche Fehlerkontrolle durch, die Fehler in den empfangenen Daten mit Hilfe von Prüfsummen identifiziert.
- Verbindungsorientiert. TCP stellt eine Verbindung zwischen Absender und Empfänger her, um eine zuverlässige und stabile Kommunikationsverbindung zu gewährleisten.
Neben seinen vielen Vorteilen hat TCP auch einige Nachteile. Zu den häufigsten Nachteilen von TCP gehören folgende:
- Overhead. Aufgrund seiner Zuverlässigkeitsmerkmale hat TCP mehr Overhead als UDP, was manchmal zu langsameren Übertragungsgeschwindigkeiten führen kann.
- Latenz. Die von TCP verwendete Übermittlungsmethode umfasst Bestätigungen und erneute Übertragungen, was manchmal zu einer Latenz führen kann, die Echtzeitanwendungen beeinträchtigt.
- Überlastungssteuerung. Um Netzüberlastungen zu vermeiden, können die TCP-Überlastungskontrolltechniken (Congestion Control) die Datenübertragung verlangsamen. Dies kann allerdings ein Nachteil sein, wenn eine Hochgeschwindigkeitsübertragung erforderlich ist.
- Verbindungsorientiert. Das verbindungsorientierte Design von TCP erfordert einen zusätzlichen Aufwand für den Aufbau und die Aufrechterhaltung von Verbindungen, während diese Funktion für viele Anwendungen nicht erforderlich ist.
- Allgemeinheit. TCP ist speziell auf die TCP/IP-Suite zugeschnitten und kann nicht zur Darstellung anderer Protokollstapel, wie zum Beispiel für Bluetooth-Verbindungen, verwendet werden.
Position im TCP/IP-Stack
Der TCP/IP-Stack ist ein Modell, das darstellt, wie Daten über Netzwerke mit dem TCP/IP-Protokoll organisiert und ausgetauscht werden. Es zeigt eine Reihe von Schichten, die die Art und Weise darstellen, wie Daten auf ihrem Weg vom Client zum Server und umgekehrt von einer Reihe von Protokollen behandelt und verpackt werden.
TCP existiert in der Transportschicht mit anderen Protokollen wie UDP. Die Protokolle dieser Schicht sorgen für die fehlerfreie Übertragung der Daten zur Quelle, mit Ausnahme von UDP, da es nur über eine begrenzte Fähigkeit zur Fehlerkontrolle verfügt.
Wie das OSI-Modell ist auch der TCP/IP-Stack ein konzeptionelles Modell für Datenaustauschstandards. Die Daten werden auf jeder Schicht auf der Grundlage ihrer Funktionalität und der Transportprotokolle neu verpackt.
Die Anfragen gelangen über den Stack zum Server und beginnen auf der Anwendungsschicht als Daten. Von dort aus werden die Informationen auf jeder Schicht in Pakete verschiedener Typen aufgeteilt. Die Daten bewegen sich auf die folgenden Arten:
- Sie bewegen sich von der Anwendungsschicht zur Transportschicht, wo sie in TCP-Segmente sortiert werden.
- Sie werden zur Internet-Schicht transportiert, wo sie in ein Datagramm umgewandelt werden.
- Sie werden zur Netzwerkschnittstellenschicht übertragen, wo sie wieder in Bits und Frames zerlegt werden.
- Wenn der Server antwortet, durchlaufen sie den Stack, um als Daten auf der Anwendungsschicht anzukommen.
TCP/IP und das OSI-Modell im Vergleich
Das OSI-Modell und TCP/IP haben viele Gemeinsamkeiten. Beispielsweise bieten beide eine Grundlage für das Verständnis, wie verschiedene Protokolle miteinander und mit der Netzwerkkommunikation interagieren. Beide Modelle unterstützen die Idee der Verkapselung, bei der Daten auf jeder Schicht für die Übertragung in Header und Trailer verpackt werden, und verfügen über Ebenen, die bestimmte Funktionalitäten definieren.
Beide Modelle weisen jedoch auch viele Unterschiede auf:
- Spezifität. Der Hauptunterschied zwischen dem TCP/IP-Modell und dem OSI-Modell ist der Grad der Spezifität. Das OSI-Modell ist eine abstraktere Darstellung der Art und Weise, wie Daten ausgetauscht werden, und ist nicht spezifisch für ein bestimmtes Protokoll konzipiert. Es ist ein Rahmenwerk für allgemeine Netzwerksysteme. Der TCP/IP-Stack ist spezifischer und umfasst die vorherrschenden Protokolle, die zum Datenaustausch verwendet werden.
- Protokollabhängigkeit. Das OSI-Modell ist abstrakt und basiert eher auf Funktionalität und ist nicht protokollabhängig. Der TCP/IP-Stack ist konkret und protokollabhängig.
- Anzahl der Schichten. Das OSI-Modell hat sieben Schichten, während das TCP/IP-Modell nur vier Layer hat.
- Entwicklung und Verwendung. Das vom US-Verteidigungsministerium entwickelte TCP/IP-Modell ist dem OSI-Modell vorausgegangen und hat sich zum De-facto-Standard für die Internetkommunikation entwickelt. Das OSI-Modell wurde von der Internationalen Organisation für Standardisierung (ISO) entwickelt und ist eher ein konzeptionelles Modell, das in der Praxis weniger weit verbreitet ist.
- Komplexität. Das OSI-Modell ist kompliziert und detailliert, es enthält mehr Schichten und eine detaillierte Aufschlüsselung der Funktionen. Im Gegensatz dazu ist das TCP/IP-Modell einfacher und schlanker und konzentriert sich auf die wesentlichen Funktionen, die für die Internetkommunikation erforderlich sind.