Transmission Control Protocol

Aus Foxwiki

TCP (Transmission Control Protocol) ist ein Netzwerkprotokoll, das definiert, auf welche Art und Weise Daten zwischen Netzwerkkomponenten ausgetauscht werden sollen.

Beschreibung

Was ist TCP

  • Ist ein zuverlässiges, verbindungsorientiertes, paketvermitteltes (nicht paketvermittelnd) Transportprotokoll.
  • TCP ermöglicht die Übertragung eines Datenstroms.
  • Im Unterschied zum verbindungslosen User Datagram Protokoll (UDP) stellt TCP eine Verbindung zwischen zwei Endpunkten (Sockets) einer Netzverbindung her.
    • Auf dieser Verbindung können in beide Richtungen Daten übertragen werden.

Vorteile

  • Netzwerküberlastungskontrolle.
  • Zuverlässige Datenübertragung:
    • erkennt verlorene Segmente, doppelte Segmente und fehlerhafte Segmente.

Allgemeines

TCP ist im Prinzip eine Ende-zu-Ende-Verbindung in Vollduplex.

  • Kann auch als zwei Halbduplexverbindungen betrachtet werden (Informationsfluss in beide Richtungen (allerdings nicht gleichzeitig)).
  • Die Daten in Gegenrichtung können zusätzliche Steuerungsinformationen enthalten.
  • Anwendungen, die TCP häufig nutzen, sind zum Beispiel Webbrowser und Webserver.

TCP-Software

  • Übernimmt Verbindungsverwaltung sowie die Datenübertragung.
  • Netz-Protokollstack des Betriebssystems.
  • Anwendungsprogramme nutzen Sockets.

Software-Schnitstelle

  • bei Windows in extra einzubindenden Programmbibliotheken („Winsock.dll“ bzw. „wsock32.dll“).
  • Linux und andere unixoide Betriebssysteme enthalten einen Socketlayer im Betriebssystemkern (Zugriff über Systemaufrufe).

Entwicklung

  • Entwickelt von Robert E. Kahn und Vinton G. Cerf als Forschungsarbeit.
  • Beginn 1973, erste Standardisierung 1981 als RFC 793.
  • Danach gab es viele Erweiterungen, diese werden bis heute in RFCs spezifiziert.

Header

Allgemeines

  • Das TCP-Segment besteht immer aus zwei Teilen: dem Header und der Nutzlast.
  • Die Nutzlast enthält die zu übertragenden Daten.
    • Die wiederum Protokollinformationen der Anwendungsschicht, wie HTTP oder FTP, entsprechen können.
  • Der Header enthält für die Steuerung der Kommunikation erforderliche Daten.
  • Da das Options-Feld in der Regel nicht genutzt wird, hat ein typischer Header eine Größe von 20 Byte.

Felder des TCP-Header

Aufbau des TCP-Headers
Feld Funktion Größe
Source Port (Quellport)
  • Gibt die Portnummer auf der Senderseite an
2 Byte
Destinations Port (Zielport)
  • Gibt die Portnummer auf der Empfängerseite an.
2 Byte
Sequence Number
  • Sequenznummer des ersten Daten-Oktett dieses TCP-Segments, dient zur Sortierung Oder die Initialisierungs-Sequenznummer falls das SYN-Flag gesetzt ist
4 Byte
Acknowledgement Number
  • Gibt die Sequenznummer an, die der Absender dieses TCP-Segments als Nächstes erwartet Sie ist nur gültig, falls das ACK-Flag gesetzt ist.
4 Byte
Data Offset
  • Gibt die Länge des TCP-Headers in 32-Bit-Blöcken an (ohne Nutzdaten).
  • Hiermit wird die Startadresse der Nutzdaten angezeigt.
4 Bit
Reserved
  • Ist für zukünftige Verwendungen reserviert.
  • Alle Bits müssen null sein.
4 Bit
Control-Flags
  • Zweiwertige Variablen mit den Zuständen gesetzt und nicht gesetzt.
  • Kennzeichnung für die wichtigen Zustände der Kommunikation und Weiterverarbeitung der Daten.
8 Bit
(Receive) Window
  • Ist die Anzahl der Bytes die der Sender dieses TCP-Segments bereit ist zu empfangen.
  • Beginnend bei dem durch das Acknowledgementfeld indizierten Daten-Oktett.
2 Byte
Checksum
  • Dient zur Erkennung von Übertragungsfehlern.
  • Wird über den TCP-Header, die Daten und einen Pseudo-Header berechnet.
  • Der Header besteht aus Ziel-IP, Quell-IP, TCP-Protokollkennung (0x0006) und der Länge des TCP-Headers inkl. Nutzdaten (in Bytes).
2 Byte
Urgent Pointer
  • Nur gültig, wenn das URG-Flag gesetzt ist.
  • Die Urgent-Daten beginnen sofort nach dem Header
  • Zusammen mit der Sequenz-Nummer gibt dieser Wert die Position des ersten Bytes nach den Urgent-Daten an.
2 Byte
Options
  • Unterschiedlich groß und enthält Zusatzinformationen.
  • Müssen ein Vielfaches von 32 Bit lang sein, ansonsten muss mit Nullbits aufefüllt werden (Padding).
  • Ermöglicht Verbindungsdaten auszuhandeln, die nicht im TCP-Header enthalten sind, wie z.B. die Maximalgröße des Nutzdatenfeldes.
0–40 Byte

TCP-Flags

Feld Funktion Größe
ECE-Flag (ECN-Echo)
  • Teilt dem Sender mit, dass das Netzwerk überlastet ist und die Senderate reduziert werden muss.
  • Wird für Explicit Congestion Notification (ECN) benötigt
1 Bit
CRW-Flag (Congestion Window Reduced)
  • Teilt dem Empfänger mit das die Senderate reduziert wurde.
  • Wird für Explicit Congestion Notification (ECN) benötigt
1 Bit
URG-Flag (Urgent)
  • Die Daten nach dem Header werden sofort von der Anwendung bearbeitet.
  • Anwendung unterbricht die Datenverarbeitung des aktuellen TCP-Segments und liest alle Bytes nach dem Header bis zu dem Byte, auf das das Urgent-Pointer -Feld zeigt, aus.
  • Kann verwendet werden, um eine Anwendung auf dem Empfänger abzubrechen.
  • In der Regel wird dieses Flag nicht ausgewertet.
1 Bit
ACK-Flag (Acknowledgment)
  • Hat in Verbindung mit der Acknowledgment-Nummer die Aufgabe, den Empfang von TCP-Segmenten bestätigen.
  • Die Acknowledgment-Nummer ist nur gültig, wenn das Flag gesetzt ist.
1 Bit
PSH-Flag (Push)
  • Sowohl der ausgehende, als auch der eingehende Puffer wird übergangen.
  • Hilft den Datenstrom von TCP effizienter zu verarbeiten, indem die empfangende Applikation gezielter aufgeweckt werden kann.
  • RFC 1122 & RFC 793
1 Bit
RST-Flag (Reset)
  • Wird verwendet, wenn eine Verbindung abgebrochen werden soll.
  • z.B. bei technischen Problemen oder zur Abweisung unerwünschter Verbindungen
  • Oder bei nicht geöffneten Ports, es wird kein ICMP-Paket mit „Port Unreachable“ verschickt.
1 Bit
SYN-Flag (Synchronize)
  • Pakete mit diesem Flag initiieren eine Verbindung.
  • Dient der Synchronisation von Sequenznummern beim Verbindungsaufbau.
  • Server antwortet normalerweise mit SYN+ACK oder RST.
1 Bit
FIN-Flag (Finish)
  • Schlussflag, dient zur Freigabe der Verbindung, zeigt an, dass keine Daten vom Sender kommen.
  • FIN- und SYN-Flags haben Sequenznummern, damit diese in der richtigen Reihenfolge abgearbeitet werden.
1 Bit

Installation

Konfiguration

Dateien

Dokumentation

RFC

  1. RFC 793 (1981)
  2. RFC 7323 (2014)

Man-Pages

Info-Pages

Links

Intern

Weblinks

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5