Transmission Control Protocol TCP erklärt

Transmission Control Protocol TCP erklärt

Das Transmission Control Protocol (TCP) ist eines der Hauptprotokolle in den Internetprotokollsuiten. Es gehört zur Transportschicht des OSI-Modells und stellt eine zuverlässige, geordnete und fehlergeprüfte Zustellung von Datenströmen zwischen Programmen bereit, die auf Computern in einem IP-Netzwerk laufen

Funktionsweise

  1. Verbindungsaufbau: TCP ist verbindungsorientiert. Ein TCP-Verbindungsaufbau erfolgt über den sogenannten Drei-Wege-Handschlag (Three-way handshake). Dabei werden SYN (Synchronize), SYN-ACK (Synchronize-Acknowledgement) und ACK (Acknowledgement) Pakete ausgetauscht.
  2. Datenübertragung: Nach dem Verbindungsaufbau beginnt die eigentliche Datenübertragung. Die Daten werden in TCP-Segmenten verpackt und gesendet.
  3. Verbindungsabbau: Nach dem Datentransfer wird die Verbindung mit einem Vier-Wege-Handshake beendet.

Verbindungsaufbau: Three-Way Handshake

Der „Three-Way Handshake“ ist ein grundlegender und wesentlicher Bestandteil des Transmission Control Protocol (TCP), der die Verlässlichkeit und Effizienz von Internetkommunikationen sicherstellt. Bevor Daten zwischen zwei Computern über TCP übertragen werden können, müssen sie eine zuverlässige Verbindung herstellen. Dieser Verbindungsaufbau, auch als „Three-Way Handshake“ bezeichnet, ist ein dreistufiger Prozess, der entwickelt wurde, um sowohl die Bereitschaft als auch die Fähigkeit beider Seiten zur Datenkommunikation zu bestätigen. Es stellt nicht nur die Integrität der Verbindung sicher, sondern legt auch die Grundlage für einen geordneten und fehlerfreien Datenaustausch zwischen den Kommunikationspartnern.

  1. SYN (Synchronize sequence numbers): Der Client sendet ein TCP-Segment mit dem SYN-Flag gesetzt zum Server, um eine Verbindung zu initiieren. Zum Beispiel:
    • Client wählt eine zufällige Sequenznummer x aus und sendet: SYN, Seq=x
  2. SYN-ACK (Synchronize-Acknowledgement): Der Server empfängt den SYN vom Client, wählt seine eigene Sequenznummer y aus und sendet ein Segment zurück, das sowohl das SYN- als auch das ACK-Flag gesetzt hat. Zum Beispiel:
    • Server antwortet mit: SYN, Seq=y, ACK=x+1
  3. ACK (Acknowledgement): Der Client empfängt das SYN-ACK vom Server und sendet ein ACK zurück, um den Verbindungsaufbau abzuschließen. Zum Beispiel:
    • Client antwortet mit: ACK, Seq=x+1, ACK=y+1

Beispiel:

Nehmen wir an, Tessa (Client) möchte eine TCP-Verbindung zu Paul (Server) aufbauen:

  1. Tessa sendet: SYN, Seq=1000
  2. Paul antwortet mit: SYN, Seq=2000, ACK=1001
  3. Tessa sendet: ACK, Seq=1001, ACK=2001

Nach einiger Datenkommunikation möchte Tessa die Verbindung beenden:

  1. Tessa sendet: FIN, Seq=1500
  2. Paul antwortet mit: ACK, Seq=1501
  3. Paul sendet nach einigen Sekunden: FIN, Seq=2500
  4. Tessa antwortet mit: ACK, Seq=2501

Die Verbindung zwischen Tessa und Paul ist jetzt beendet.

3-Way Handshake Beispiel in Wireshark

Datenübertragung

Daten werden in TCP-Segmenten segmentiert und übertragen. Für jedes gesendete Segment erwartet der Sender eine Bestätigung (ACK) vom Empfänger. Falls keine Bestätigung innerhalb eines bestimmten Zeitraums eintrifft, wird das Segment erneut gesendet.

Verbindungsabbau

Der Verbindungsabbau kann durch jede Seite initiiert werden

  1. FIN (Finish): Die Seite, die die Verbindung beenden möchte, sendet ein TCP-Segment mit dem FIN-Flag gesetzt.
    • Zum Beispiel: FIN, Seq=z
  2. ACK: Die andere Seite bestätigt den Erhalt des FIN-Segments mit einem ACK.
    • Zum Beispiel: ACK, Seq=z+1
  3. FIN: Nun sendet die andere Seite ihr eigenes FIN-Segment, um den Verbindungsabbau ihrerseits zu initiieren.
  4. ACK: Die erste Seite bestätigt den Erhalt des FIN-Segments mit einem weiteren ACK.

Jetzt ist die TCP-Verbindung vollständig abgebaut.

Bild: Wireshark TCP 4 Time Close

 Zuverlässigkeit

TCP ist ein verbindungsorientiertes Protokoll, das darauf abzielt, eine zuverlässige Kommunikation über potenziell unzuverlässige Netzwerke hinweg sicherzustellen. Die Zuverlässigkeit von TCP basiert auf mehreren Schlüsselmerkmalen und -techniken

Fehlererkennung

  • Prüfsumme: Bei der Erstellung eines TCP-Segments wird für die Daten im Segment und dem TCP-Header eine Prüfsumme berechnet. Diese Prüfsumme wird im Header des TCP-Segments gespeichert und zusammen mit den Daten über das Netzwerk gesendet.
  • Funktionsweise: Wenn das Segment beim Empfänger ankommt, berechnet dieser ebenfalls eine Prüfsumme für die empfangenen Daten und vergleicht sie mit der im TCP-Header gespeicherten Prüfsumme. Wenn die beiden Prüfsummen übereinstimmen, ist es sehr wahrscheinlich, dass die Daten korrekt übertragen wurden. Andernfalls wird davon ausgegangen, dass das Segment beschädigt wurde und es wird verworfen.

Bestätigungen (ACKs)

  • Zweck: ACKs sind eine zentrale Komponente der TCP-Zuverlässigkeit. Sie informieren den Sender darüber, welche Segmente erfolgreich beim Empfänger angekommen sind.
  • Funktionsweise: Wenn ein Empfänger ein Segment erhält und feststellt, dass es nicht beschädigt ist (durch Überprüfung der Prüfsumme), sendet er ein ACK an den Sender, um zu bestätigen, dass das Segment erfolgreich empfangen wurde. Das ACK enthält eine Sequenznummer, die angibt, welches das nächste erwartete Segment ist.

Wiederholungen

  • Timeouts und erneute Übertragungen: Wenn ein Sender nach einer festgelegten Zeit (Timeout) kein ACK für ein gesendetes Segment erhält, geht er davon aus, dass das Segment verloren gegangen oder beschädigt wurde. Daraufhin sendet er das Segment erneut.
  • Dynamische Anpassung: Die Zeit, die ein Sender wartet, bevor er ein nicht bestätigtes Segment erneut sendet (das sogenannte Retransmission Timeout oder RTO), kann dynamisch angepasst werden, je nachdem, wie zuverlässig das Netzwerk ist.

Fenstersteuerung

  • Sliding Window-Protokoll: Dies ist eine Kernfunktion von TCP zur Kontrolle des Datenflusses. Sie stellt sicher, dass der Sender nicht mehr Daten sendet, als der Empfänger verarbeiten kann.
  • Funktionsweise: Der Empfänger gibt an, wie viel freier Speicherplatz er im Puffer hat (das sogenannte „Fenster“). Der Sender kann dann nur so viele Segmente senden, wie im Fenster des Empfängers Platz haben, ohne dass er für jedes einzelne Segment eine Bestätigung erhält. Sobald der Sender die Bestätigung für die gesendeten Segmente erhält, „schiebt“ er das Fenster vorwärts und kann weitere Daten senden.

All diese Merkmale und Techniken arbeiten zusammen, um die zuverlässige Lieferung von Daten über TCP zu gewährleisten. Sie helfen dabei, die Herausforderungen und Unsicherheiten von Netzwerkkommunikationen zu bewältigen, von verlorenen Segmenten bis hin zu Netzwerkstaus.

Reihenfolge

Das Internet, in dem TCP operiert, ist inhärent unzuverlässig; Pakete können verloren gehen, verzögert werden oder in einer anderen Reihenfolge ankommen, als sie gesendet wurden. Für viele Anwendungen, insbesondere solche, die auf einer zuverlässigen Datenübertragung angewiesen sind (z. B. Web-Browsing, Dateiübertragung, E-Mail), wäre es problematisch, wenn die Daten in der falschen Reihenfolge ankämen. Hier kommt das Konzept der Sequenzierung ins Spiel.

Sequenznummern

  • Funktionsweise: Bei der Initiierung einer TCP-Verbindung wählt jeder Endpunkt eine Anfangs-Sequenznummer (oft zufällig). Ab diesem Punkt wird zu jedem gesendeten Byte eine fortlaufende Nummer hinzugefügt, die als Sequenznummer bezeichnet wird. So wird jedes TCP-Segment mit einer Sequenznummer versehen, die dem ersten Byte des Segments entspricht.
  • Reihenfolge-Wiederherstellung: Wenn TCP-Segmente beim Empfänger ankommen, können sie aufgrund von Netzwerklatenzen, -staus oder anderen Faktoren außerhalb der Reihenfolge liegen. Der Empfänger verwendet die Sequenznummern, um die ursprüngliche Reihenfolge der Segmente wiederherzustellen, bevor die Daten an die Anwendung weitergegeben werden.
  • Fehlende Segmente erkennen: Wenn Segmente verloren gehen (was im Internet durchaus vorkommen kann), ermöglichen die Sequenznummern dem Empfänger auch das Erkennen dieser Lücke. Wenn beispielsweise die Sequenznummern 1-10 und 21-30 empfangen werden, aber 11-20 fehlen, weiß der Empfänger, dass er einige Daten verpasst hat.
  • Doppelte Daten verhindern: Sequenznummern helfen auch dabei, Duplikate zu erkennen. Wenn ein Segment erneut gesendet wird (vielleicht weil der Sender dachte, es sei verloren gegangen, obwohl es nur verzögert war), kann der Empfänger das doppelte Segment anhand seiner Sequenznummer erkennen und verwerfen.

Praktische Anwendung

Stellen Sie sich vor, Sie lesen ein Buch online, und die Seiten dieses Buches werden über das Internet einzeln an Sie gesendet. Wenn die Seiten in der falschen Reihenfolge ankommen, wäre es sehr schwer, die Geschichte zu verstehen. Mit Sequenznummern kann Ihr Computer sicherstellen, dass Sie die Seiten (oder in diesem Fall TCP-Segmente) in der richtigen Reihenfolge lesen, auch wenn sie in einer anderen Reihenfolge ankommen.

Insgesamt tragen Sequenznummern wesentlich zur Kernfunktionalität von TCP bei, indem sie sicherstellen, dass Daten korrekt und in der beabsichtigten Reihenfolge wieder zusammengesetzt werden können, selbst wenn sie durch ein unbeständiges Netzwerk übertragen werden.

Congestion-Control

Congestion (Stau) tritt auf, wenn ein Netzwerkknoten oder ein Link mehr Daten erhält, als er verarbeiten oder weiterleiten kann. Das kann dazu führen, dass Pakete verzögert werden, in Warteschlangen stehen oder sogar verworfen werden. Eine solche Überlastung kann die Leistung von Netzwerkanwendungen erheblich beeinträchtigen.

Warum ist Congestion-Control notwendig?

Wenn zu viele Daten zu schnell gesendet werden, insbesondere in einem Netzwerk, das bereits seine Kapazitätsgrenze erreicht hat, führt dies zu einer Überlastung, die die Übertragungszeiten erhöht und zu Paketverlusten führen kann. Das wiederum zwingt Sender, Pakete erneut zu übertragen, was die Überlastung weiter verschlimmert.

Hauptmechanismen der TCP Congestion-Control:

  1. Slow Start: Bei der Initialisierung einer Verbindung beginnt TCP vorsichtig mit dem Senden von Daten. Anstatt sofort mit der maximalen Rate zu senden, steigert TCP die Senderate exponentiell, bis ein bestimmter Schwellenwert erreicht ist oder Paketverluste erkannt werden. Das Ziel ist es, die Netzwerkkapazität zu „ertasten“.
  2. Congestion Avoidance: Nachdem der Schwellenwert erreicht wurde, beginnt TCP, die Senderate linear zu erhöhen, um eine potenzielle Überlastung zu vermeiden.
  3. Fast Retransmit: Anstatt auf ein Timeout zu warten, um festzustellen, ob ein Paket verloren gegangen ist, verwendet TCP eine Technik namens „DupACKs“. Wenn ein Empfänger mehrere Bestätigungen für dasselbe Paket erhält, deutet dies darauf hin, dass ein nachfolgendes Paket verloren gegangen ist. In diesem Fall wird das fehlende Paket sofort erneut übertragen.
  4. Fast Recovery: Nach einem Fast Retransmit halbiert TCP die Sendrate (anstatt sie vollständig zurückzusetzen), um schnell auf die Überlastung zu reagieren und dennoch eine gewisse Datenübertragung aufrechtzuerhalten.

Praktische Anwendung

Stellen Sie sich vor, Sie versuchen, durch eine Tür zu gehen, hinter der sich eine Menschenmenge befindet. Anfangs gehen Sie schnell, aber wenn Sie feststellen, dass es zu voll ist, verlangsamen Sie sich und passen Ihre Geschwindigkeit an die Menge an. Wenn jemand vor Ihnen stolpert (analog zu Paketverlust), warten Sie einen Moment, bevor Sie wieder vorsichtig weitergehen. Dieses Szenario ist eine vereinfachte Darstellung dessen, wie TCP die Datenübertragung in einem überlasteten Netzwerk handhabt.

TCP-Flags

TCP-Flags sind Felder im TCP-Header, die verwendet werden, um den Zustand und die Art der Übertragung zu spezifizieren. Sie spielen eine zentrale Rolle bei der Steuerung des Verhaltens von TCP-Verbindungen.

  1. URG (Urgent)
    • Beschreibung: Gibt an, dass das „Urgent Pointer“-Feld gesetzt ist und gültig ist.
    • Verwendung: Dieses Flag wird verwendet, um anzuzeigen, dass bestimmte Daten im Segment bevorzugt behandelt werden sollen. Es zeigt, dass die Daten im Segment als „dringend“ betrachtet werden.
  2. ACK (Acknowledgment)
    • Beschreibung: Gibt an, dass das „Acknowledgment Number“-Feld gesetzt ist und gültig ist.
    • Verwendung: Dieses Flag wird gesetzt, wenn ein Paket eine Bestätigung für den Empfang eines anderen Pakets enthält. Es ist in den meisten TCP-Segmenten nach dem initialen SYN-Segment gesetzt.
  3. PSH (Push)
    • Beschreibung: Fordert den Empfänger auf, die im Puffer befindlichen Daten sofort an die Anwendung weiterzugeben.
    • Verwendung: Dieses Flag wird verwendet, um sicherzustellen, dass die Daten sofort von den Puffern an die Anwendung übergeben werden und nicht in den Puffern des Betriebssystems gehalten werden.
  4. RST (Reset)
    • Beschreibung: Setzt die Verbindung zurück.
    • Verwendung: Wird verwendet, um eine Verbindung sofort zu beenden. Es kann auch verwendet werden, um ein nicht erwünschtes Segment abzulehnen oder auf ein Segment zu reagieren, das für eine nicht existierende Verbindung empfangen wurde.
  5. SYN (Synchronize)
    • Beschreibung: Gibt an, dass der Sender den Verbindungsaufbau initiiert und die Sequenznummern synchronisiert.
    • Verwendung: Wird beim Aufbau einer TCP-Verbindung verwendet. Ein SYN-Flag signalisiert den Beginn eines Drei-Wege-Handshakes.
  6. FIN (Finish)
    • Beschreibung: Der Sender hat seinen Teil der Übertragung beendet.
    • Verwendung: Wird verwendet, um das Ende der Datenübertragung und den Wunsch nach Beendigung der Verbindung zu signalisieren.


TCP Fehlerkorrektur

Die Fehlerkorrekturmechanismen von TCP sind zentral für die Gewährleistung der Zuverlässigkeit von Datenübertragungen über unzuverlässige Netzwerke. Die Round-Trip-Time (RTT) spielt eine entscheidende Rolle bei der Anpassung dieser Mechanismen an die aktuellen Netzwerkbedingungen, um die Effizienz zu maximieren und Datenverlust oder Verzögerungen zu minimieren.

1. Bestätigungen (ACKs)

  • Jedes Mal, wenn ein Empfänger ein TCP-Segment erhält, sendet er ein Bestätigungspaket (ACK) zurück, um zu signalisieren, dass das Segment erfolgreich empfangen wurde.
  • Wenn der Sender kein ACK für ein bestimmtes Segment innerhalb eines festgelegten Zeitraums (dem sogenannten „Retransmission Timeout“ oder RTO) erhält, nimmt er an, dass das Segment verloren gegangen ist und sendet es erneut.

2. Retransmission (Neuübertragung)

  • Retransmission ist der Vorgang, bei dem verlorene oder fehlerhafte Segmente erneut gesendet werden. Das Erkennen dieser verlorenen Segmente erfolgt durch das Fehlen von ACKs oder durch den Empfang von Duplikat-ACKs.
  • Die Entscheidung, wann ein Segment erneut gesendet werden soll, wird durch den RTO bestimmt, der eng mit der RTT verbunden ist.

3. Prüfsumme

  • Jedes TCP-Segment enthält eine Prüfsumme. Diese Prüfsumme ermöglicht dem Empfänger zu überprüfen, ob das Segment während der Übertragung beschädigt wurde.
  • Wenn der Empfänger feststellt, dass das Segment fehlerhaft ist (d.h. die Prüfsumme stimmt nicht überein), wird er dieses Segment verwerfen und kein ACK dafür senden. Der Sender wird das Segment nach Ablauf des RTO erneut übertragen.

Zusammenhang mit der RTT

  • Was ist RTT? – Die Round-Trip-Time (RTT) ist die Zeit, die ein Paket benötigt, um vom Sender zum Empfänger und zurück zu gelangen. Sie gibt einen guten Hinweis auf die Verzögerung oder Latenz zwischen den beiden Endpunkten.
  • Adaptive RTO-Berechnung: Der RTO wird oft dynamisch basierend auf der gemessenen RTT berechnet. Wenn die RTT kurz ist, wird der RTO ebenfalls kurz sein, was zu schnelleren Retransmissions führt. Ist die RTT lang, wird auch der RTO entsprechend angepasst, um unnötige Retransmissions zu vermeiden.
  • Berücksichtigung von Netzwerkfluktuationen: Da sich die Netzwerkbedingungen ständig ändern können, kann die RTT variieren. TCP verwendet Algorithmen wie den Jacobson/Karels-Algorithmus, um den RTO basierend auf der aktuellen und vergangenen RTT anzupassen und so eine optimale Fehlerkorrektur zu gewährleisten.
  • Congestion-Control: Eine erhöhte RTT kann auch ein Anzeichen für Netzwerküberlastung sein. TCP verwendet die RTT, um Netzwerküberlastung zu erkennen und die Übertragungsrate anzupassen, um Staus zu vermindern.

Timeouts und Retransmissions in TCP

Grundprinzip

TCP ist ein zuverlässiges Übertragungsprotokoll, das darauf ausgelegt ist, Datenintegrität und -reihenfolge über unzuverlässige Netzwerke zu gewährleisten. Eine der Säulen dieser Zuverlässigkeit ist die Mechanik der Timeouts und der daraus resultierenden Retransmissions.

Timeouts

  1. Was ist ein Timeout?
    Ein Timeout bezeichnet in diesem Kontext den Zeitraum, den ein Sender wartet, um eine Bestätigung (ACK) für ein gesendetes TCP-Segment zu erhalten. Wenn diese Bestätigung nicht innerhalb dieses Zeitraums eintrifft, nimmt der Sender an, dass das Segment auf dem Weg zum Empfänger verloren gegangen ist oder dass die Bestätigung selbst verloren gegangen ist.
  2. Dynamische Anpassung
    Es ist wichtig zu betonen, dass dieser Timeout-Wert nicht statisch ist. Er wird dynamisch angepasst, basierend auf den beobachteten Netzwerkbedingungen, wie z. B. der gemessenen Round-Trip-Time (RTT). Dies wird oft als „RTO (Retransmission Timeout)“ bezeichnet und kann sich während einer Sitzung ändern, um optimale Performance und Reaktionsfähigkeit zu gewährleisten.

Retransmissions

  1. Warum Retransmission?
    In einem Netzwerk, besonders in weiträumigen Netzwerken wie dem Internet, können Pakete aus verschiedenen Gründen verloren gehen: Überlastung, Signalverlust, Kollisionen usw. TCP muss in der Lage sein, solche Verluste zu erkennen und darauf zu reagieren, um seine Zuverlässigkeitsgarantie einzuhalten.
  2. Wie funktioniert es?
    Wenn der Timeout für ein gesendetes Segment abläuft, ohne dass eine Bestätigung eingegangen ist, wird das Segment vom Sender erneut gesendet. Diese Aktion wird als „Retransmission“ bezeichnet.
  3. Vorsicht bei mehrfachen Retransmissions:
    Wenn mehrere Retransmissions für dasselbe Segment erfolgen, könnte dies auf ein tiefer liegendes Problem im Netzwerk hindeuten, wie z. B. eine anhaltende Überlastung. TCP hat Mechanismen wie die Kongestion-Kontrolle, um solche Situationen zu erkennen und darauf zu reagieren, indem z. B. die Sendefrequenz reduziert wird.


Optionen im TCP-Protokoll

TCP bietet eine Vielzahl von Optionen, die es ermöglichen, das Verhalten der Verbindung je nach Bedarf anzupassen. Diese Optionen können bei der Initialisierung einer Verbindung (insbesondere während des Drei-Wege-Handshakes) festgelegt werden und sind dazu da, die Kommunikation zwischen Sender und Empfänger zu optimieren. Hier sind die ausführlichen Informationen zu einigen dieser Optionen:

Timestamps

  • Zweck: Timestamps helfen dabei, das genaue Alter eines Pakets zu bestimmen. Sie können verwendet werden, um die genaue Round-Trip-Time (RTT) zwischen Sender und Empfänger zu messen, was wiederum für die Dynamische Anpassung des Timeouts und für andere Mechanismen der Congestion-Control nützlich ist.
  • Funktionsweise: Bei Verwendung dieser Option fügt der Sender einen Zeitstempel zu jedem gesendeten Segment hinzu. Der Empfänger fügt seiner Antwort dann einen Zeitstempel hinzu, so dass der Sender die genaue Zeitdauer seit dem Senden des ursprünglichen Segments bestimmen kann.

Maximum Segment Size (MSS)

  • Zweck: MSS gibt die maximale Größe eines Datensegments an, das über eine bestimmte Verbindung gesendet werden kann, ohne fragmentiert zu werden.
  • Funktionsweise: Während des Verbindungsaufbaus teilen beide Seiten ihre MSS-Werte mit. Dies stellt sicher, dass keine Seite ein Segment sendet, das größer ist als das, was die andere Seite verarbeiten kann. Dies ist besonders wichtig in Netzwerken mit unterschiedlichen Datenübertragungsraten oder Medientypen, um Fragmentierung zu vermeiden.

Window Scaling

  • Zweck: Da die ursprüngliche Definition von TCP eine maximale Fenstergröße von 65.535 Bytes vorsieht, wurde die Window Scaling-Option eingeführt, um größere Fenstergrößen zu unterstützen, was für Hochgeschwindigkeitsnetzwerke wichtig ist.
  • Funktionsweise: Die Window Scaling-Option ermöglicht es beiden Parteien, einen Skalierungsfaktor zu definieren, der auf das 16-Bit-Fensterfeld im TCP-Header angewendet wird. Dies erlaubt es, effektiv viel größere Fenstergrößen zu verwenden, indem man das Fensterfeld um einen bestimmten Faktor verschiebt. Das Ergebnis ist eine deutlich erhöhte maximale Fenstergröße, was wiederum höhere Übertragungsraten auf schnellen Links ermöglicht.

Praktische Anwendung

Denken Sie an eine Verbindung als eine Autobahn. Die MSS wäre vergleichbar mit der maximalen Länge eines Lastwagens, der auf dieser Autobahn fahren darf. Die Fenstergröße könnte als die Anzahl der Lastwagen betrachtet werden, die sich gleichzeitig auf der Autobahn befinden dürfen. Window Scaling erlaubt es, diese „Anzahl“ zu erhöhen, um mehr Datenverkehr zu ermöglichen, während Timestamps helfen, die Reisezeit jedes Lastwagens genau zu bestimmen.

Ports im Kontext von TCP

Definition

Ein Port ist eine 16-Bit-Nummer, die in der TCP- (oder UDP-) Kommunikation verwendet wird, um eine bestimmte Anwendung oder einen bestimmten Dienst auf einem Computer zu identifizieren. Ports ermöglichen es einem Computer, mehrere gleichzeitige Netzwerkverbindungen zu unterschiedlichen Anwendungen aufrechtzuerhalten und den Datenverkehr ordnungsgemäß zu routen.

Wie es funktioniert

  1. Kombination aus IP und Port: Für die eindeutige Identifikation einer Netzwerksitzung wird nicht nur die IP-Adresse, sondern auch die Portnummer verwendet. Dieses Duo aus IP-Adresse und Portnummer wird auch als „Socket“ bezeichnet.
  2. Quell- und Zielport: Ein typisches TCP-Segment enthält sowohl einen Quellport als auch einen Zielport im Header. Der Quellport identifiziert die Anwendung auf dem sendenden Computer, während der Zielport die Anwendung auf dem empfangenden Computer identifiziert.

Kategorien von Ports

  • Wohlbekannte Ports (0-1023): Dies sind standardisierte Ports, die von allgemein bekannten Diensten verwendet werden. Zum Beispiel verwendet HTTP standardmäßig Port 80 und HTTPS Port 443.
  • Registrierte Ports (1024-49151): Diese Ports sind für bestimmte Anwendungen oder Dienste von Organisationen oder Entwicklern registriert, sind aber nicht so universell wie die wohlbekannten Ports.
  • Dynamische oder private Ports (49152-65535): Diese Ports werden normalerweise für temporäre Verbindungen verwendet, wie sie beispielsweise von Client-Anwendungen hergestellt werden.

Praktische Anwendung

Stellen Sie sich einen großen Wohnkomplex vor, bei dem die Adresse des Gebäudes der IP-Adresse eines Computers entspricht. Jede Wohnung im Gebäude entspricht einem Port. So wie verschiedene Personen in unterschiedlichen Wohnungen leben, laufen verschiedene Dienste oder Programme auf verschiedenen Ports. Wenn Sie Post für eine bestimmte Person (Dienst) in dem Gebäude (Computer) senden möchten, müssen Sie nicht nur die Adresse des Gebäudes, sondern auch die spezifische Wohnung (Port) kennen.

Wichtigkeit

Die Nutzung von Ports ermöglicht es Computern, mehrere Anwendungen gleichzeitig auszuführen, die alle Netzwerkverbindungen benötigen. Ein Webserver kann beispielsweise Webseiten auf Port 80 und verschlüsselten Verkehr auf Port 443 bereitstellen, während er gleichzeitig eine E-Mail-Kommunikation auf einem anderen Port verwaltet.

Status einer TCP-Verbindung

Der Status einer TCP-Verbindung beschreibt den aktuellen Zustand einer Kommunikationssitzung zwischen zwei Endpunkten. Das TCP-Protokoll verwendet eine Finite State Machine, um die verschiedenen Phasen einer Verbindung, von ihrem Aufbau bis zum Abbau, zu verwalten.

LISTEN

  • Beschreibung: Der Zustand, in dem sich ein Server befindet, wenn er auf eingehende Verbindungsanfragen wartet.
  • Typischer Einsatz: Ein Webserver, der darauf wartet, dass Clients eine Verbindung anfordern.

SYN_SENT

  • Beschreibung: Nachdem eine Anwendung einen Verbindungsaufbau angefordert hat, sendet das System ein SYN (Synchronize)-Paket an den anderen Endpunkt und geht in den SYN_SENT-Zustand über.
  • Typischer Einsatz: Ein Client, der eine Verbindung zu einem Webserver initiiert hat und auf eine Antwort wartet.

SYN_RECEIVED

  • Beschreibung: Ein Zustand, in dem sich ein Server befindet, nachdem er ein SYN-Paket erhalten und mit einem SYN-ACK (Synchronize-Acknowledgment) geantwortet hat.
  • Typischer Einsatz: Ein Webserver, der eine eingehende Verbindungsanfrage akzeptiert hat und auf die Bestätigung des Clients wartet.

ESTABLISHED

  • Beschreibung: Die Verbindung ist erfolgreich aufgebaut und Daten können zwischen den beiden Endpunkten übertragen werden.
  • Typischer Einsatz: Ein Client und ein Server, die aktiv Daten austauschen, z. B. beim Laden einer Webseite.

FIN_WAIT_1

  • Beschreibung: Der Zustand, in dem sich ein Endpunkt befindet, nachdem er eine Anforderung zum Beenden der Verbindung gesendet hat.
  • Typischer Einsatz: Ein Client oder Server, der die Kommunikation beenden möchte.

FIN_WAIT_2

  • Beschreibung: Der Zustand, in dem sich ein Endpunkt befindet, nachdem er seine Beendigungsanforderung gesendet und eine Bestätigung, aber noch keine eigene Beendigungsanforderung vom anderen Endpunkt erhalten hat.
  • Typischer Einsatz: Warten auf die vollständige Beendigung der Verbindung durch den anderen Endpunkt.

TIME_WAIT

  • Beschreibung: Ein Zustand, in dem sich ein Endpunkt kurzzeitig befindet, nachdem die Verbindung beendet wurde. Es dient dazu, sicherzustellen, dass alle Pakete, die im Netzwerk verzögert wurden, korrekt verarbeitet werden können, bevor die Verbindung vollständig geschlossen wird.
  • Typischer Einsatz: Ein Sicherheitsmechanismus, um mögliche verzögerte Pakete oder Duplikate zu verarbeiten.

Es gibt natürlich noch weitere Zustände im TCP-Protokoll, wie CLOSE_WAIT, LAST_ACK und andere. Jeder dieser Zustände spielt eine wichtige Rolle im Lebenszyklus einer TCP-Verbindung, von der Initialisierung bis zum Abschluss. Das Verständnis dieser Zustände ist entscheidend für Netzwerktechniker und -entwickler, um den Datenverkehr zu analysieren und Netzwerkprobleme zu diagnostizieren.

Sicherheit in TCP

Die Sicherheit in der digitalen Kommunikation ist entscheidend, insbesondere in einer Zeit, in der Cyberbedrohungen und Datenschutzanforderungen im Vordergrund stehen. TCP, das Transmission Control Protocol, ist eines der Hauptprotokolle im Internet-Protokoll-Suite und dient der Herstellung einer verlässlichen Ende-zu-Ende-Verbindung zwischen zwei Netzwerkknoten. Es ermöglicht den sicheren Transfer von Datenpaketen, indem es Mechanismen wie Bestätigungen, Sequenznummern und Wiederholungen verwendet. Allerdings bietet TCP selbst keine Mechanismen zur Verschlüsselung oder Authentifizierung, was es anfällig für verschiedene Arten von Angriffen wie Man-in-the-Middle, Eavesdropping oder Spoofing macht.

Obwohl TCP von Natur aus keine Verschlüsselung oder Authentifizierung bietet, ermöglicht seine Kompatibilität und Integration mit Protokollen wie TLS/SSL eine sichere und verschlüsselte Kommunikation. Das Verständnis dieser Sicherheitsmechanismen ist sowohl für Endbenutzer als auch für Techniker von entscheidender Bedeutung, um die Integrität und Vertraulichkeit von Daten in digitalen Netzwerken zu gewährleisten.

TLS/SSL

  • Was ist TLS/SSL?
    TLS (Transport Layer Security) und sein Vorgänger SSL (Secure Sockets Layer) sind kryptographische Protokolle, die eine sichere Kommunikation über ein unsicheres Netzwerk ermöglichen. Sie bieten sowohl Verschlüsselung als auch Authentifizierung, wodurch vertrauliche Daten geschützt und die Identität der Kommunikationspartner überprüft werden können.
  • Integration mit TCP
    Da TCP keine eingebaute Sicherheit bietet, kommt oft TLS/SSL ins Spiel. Wenn Sie beispielsweise eine HTTPS-Website besuchen, verwenden Sie tatsächlich TCP in Kombination mit TLS. Der Verbindungsaufbau erfolgt folgendermaßen:
    1. Eine normale TCP-Verbindung wird initiiert (der berühmte Drei-Wege-Handshake).
    2. Nach erfolgreichem TCP-Handshake beginnt der TLS/SSL-Handshake, bei dem Verschlüsselungsschlüssel, Zertifikate und andere für die sichere Kommunikation erforderliche Parameter ausgetauscht werden.
    3. Nachdem der TLS/SSL-Handshake abgeschlossen ist, werden alle über diese TCP-Verbindung übertragenen Daten verschlüsselt und gesichert.
  • Warum ist das wichtig?
    In einer Welt, in der Datenschutz und Sicherheit immer wichtiger werden, ist es unerlässlich, Kommunikationen gegen Lauscher und potenzielle Angreifer zu schützen. Insbesondere bei der Übertragung von sensiblen Informationen wie Kreditkartendaten, persönlichen Informationen oder Passwörtern ist eine verschlüsselte Kommunikation unabdingbar. TLS/SSL in Verbindung mit TCP gewährleistet, dass diese Daten sicher über das Internet übertragen werden können.

Anwendungsfälle von TCP

HTTP/HTTPS (Webbrowsing)

  • Was ist es?
    HTTP (Hypertext Transfer Protocol) und HTTPS (HTTP Secure) sind die Standardprotokolle, die für die Übertragung von Webinhalten zwischen Webservern und Browsern verwendet werden.
  • Warum TCP?
    Beim Webbrowsing ist es wichtig, dass Inhalte wie Text, Bilder und Videos korrekt und in der richtigen Reihenfolge an den Browser übertragen werden. TCP garantiert, dass Pakete korrekt und vollständig geliefert werden und ermöglicht bei Bedarf die erneute Übertragung von Paketen.
  • Sicherheitsaspekt
    HTTPS verwendet das TLS/SSL-Protokoll über TCP, um eine verschlüsselte und sichere Kommunikation zwischen dem Webserver und dem Browser zu gewährleisten. Dies ist besonders wichtig, wenn sensible Daten wie Login-Informationen, Kreditkartendaten oder andere persönliche Informationen übertragen werden.

FTP (File Transfer Protocol)

  • Was ist es?
    FTP ist ein Netzwerkprotokoll, das zum Übertragen von Dateien zwischen einem Client und einem Server im Internet oder in einem lokalen Netzwerk verwendet wird.
  • Warum TCP?
    Beim Übertragen von Dateien ist es entscheidend, dass die Dateien vollständig und ohne Fehler übertragen werden. Ein verlorenes oder fehlerhaftes Paket könnte die Integrität der gesamten Datei beeinträchtigen. TCP stellt sicher, dass die Datei korrekt übertragen wird, indem es für Zuverlässigkeit und Fehlerkorrektur sorgt.

SMTP (Simple Mail Transfer Protocol)

  • Was ist es?
    SMTP ist das Hauptprotokoll, das zum Senden von E-Mails über das Internet verwendet wird.
  • Warum TCP?
    Die Zustellung von E-Mails erfordert eine zuverlässige Kommunikation, um sicherzustellen, dass Nachrichten korrekt und vollständig zugestellt werden. Ein verlorenes oder fehlerhaftes Paket könnte bedeuten, dass eine wichtige E-Mail nie ihren Empfänger erreicht. TCP stellt sicher, dass die E-Mail-Nachrichten sicher und in der richtigen Reihenfolge zugestellt werden.

Weitere Anwendungsfälle

  • SSH (Secure Shell): Ein Protokoll, das verschlüsselte Terminaldienste, Dateiübertragungen und Tunneling über TCP bereitstellt.
  • Telnet: Ein älteres, unsicheres Protokoll für den Fernzugriff auf Systeme über ein Netzwerk.
  • POP3 und IMAP: Protokolle für den Empfang von E-Mails.

Flow Control in TCP mittels Sliding Window

Grundprinzip

Flow Control (Flusskontrolle) in TCP ist ein essentieller Mechanismus, der sicherstellt, dass Daten zwischen zwei Kommunikationspartnern in einem ausgewogenen und effizienten Tempo übertragen werden, um einen optimalen Datenfluss zu gewährleisten und gleichzeitig Datenstau oder Pufferüberlauf zu vermeiden.

Sliding Window-Protokoll

  1. Funktionsweise des Fensters
    Das sogenannte „Fenster“ in diesem Protokoll repräsentiert die Menge an Daten, die ein Sender zu einem bestimmten Zeitpunkt übertragen darf, bevor er eine Bestätigung vom Empfänger benötigt. Es ist wie ein „Budget“ an Daten, das dem Sender zur Verfügung steht.
  2. Dynamische Anpassung des Fensters
    Die Größe des Fensters wird nicht statisch festgelegt; sie kann sich dynamisch ändern basierend auf den Feedback-Informationen, die der Empfänger in den Bestätigungs-Paketen (ACKs) zurücksendet. Wenn der Empfänger bereit ist, mehr Daten zu empfangen und zu verarbeiten, kann er die Fenstergröße erhöhen, und wenn er Schwierigkeiten hat, mit der Datenrate Schritt zu halten, kann er die Fenstergröße verringern.
  3. Empfängerseitiger Puffer
    Der Empfänger verfügt über einen Puffer, in dem eingehende Daten gespeichert werden, bevor sie an die Anwendung weitergegeben werden. Die Größe des Sliding Window ist oft direkt mit der Größe dieses Puffers verknüpft. Wenn beispielsweise der Puffer fast voll ist, wird der Empfänger den Sender darüber informieren, dass er das Sendetempo verlangsamen soll.
  4. Bewegung des Fensters
    Das „Sliding“ (Gleiten) im „Sliding Window“ bezieht sich auf die Tatsache, dass das Fenster sich über den Datenstrom bewegt. Wenn der Sender eine Bestätigung für die ersten Daten im Fenster erhält, „gleitet“ das Fenster weiter und macht Platz für neue Daten.

Vorteile und Bedeutung

  1. Optimierung der Netzwerknutzung
    Durch die Anpassung der Fenstergröße an die aktuellen Netzwerkbedingungen und die Kapazitäten des Empfängers wird sichergestellt, dass das Netzwerk effizient genutzt wird, ohne dass es zu Engpässen oder Datenverlusten kommt.
  2. Reaktionsfähigkeit
    Flow Control ermöglicht es TCP, flexibel auf Änderungen in der Netzwerkumgebung zu reagieren, sei es durch Überlastung, Latenz oder andere Faktoren.
  3. Vermeidung von Datenverlust
    Ohne effektive Flow Control könnte der Puffer des Empfängers überlaufen, was zu Datenverlust führen würde. Durch die ständige Abstimmung zwischen Sender und Empfänger über den Zustand des Puffers wird dieses Risiko minimiert.

Sonstiges

Marcel
Marcelhttps://bitjunkie.org
Hallo! Ich bin Marcel, der Gründer von bitjunkie.org. Mit über einem Jahrzehnt Erfahrung in der Netzwerktechnik und einer tiefen Leidenschaft, die ich seit mehr als 13 Jahren in diesem faszinierenden Technologiebereich verfolge, freue ich mich, mein Wissen mit Ihnen zu teilen. Auf meiner Website biete ich Ihnen kostenlos Einblicke und Hilfestellungen, um die Welt der Netzwerke besser zu verstehen. Falls Sie meine Arbeit wertschätzen, freue ich mich natürlich über einen gesponserten Kaffee als kleine Anerkennung.

Weitere Beiträge

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

35FollowerFolgen
42FollowerFolgen
11,000AbonnentenAbonnieren

Aus der Kategorie Netzwerk

IPv6 Header erklärt

IPv4 Header erklärt

Das OSI-Modell