TCP_Logo

TCP

Das Transmission Control Protocol (kurz: TCP) arbeitet auf Layer 4 des OSI-Schichtenmodells (Transportschicht). Es sorgt dafür, dass eine verbindungsorientierte Verbindung zwischen zwei Endgeräten aufgebaut und abgebaut wird.

Aufgaben

Hier eine Übersicht mit den Aufgaben und Funktionen von TCP:
Segmentierung (Data Segmenting)
Verbindungsmanagement (Connection Establishment and Termination)
Fehlerbehandlung (Error Detection)
Flusssteuerung (Flow Control)
Anwendungsunterstützung (Application Support)
Diese Aufgaben werden jetzt im Detail beschrieben:

Segmentierung (Data Segmenting)

Eine Funktion von TCP besteht darin, den von den Anwendungen kommenden Datenstrom in Datenpakete bzw. Segmente aufzuteilen (Segmentierung) und beim Empfang wieder zusammenzusetzen. Die Segmente werden mit einem Header versehen, in dem Steuer- und Kontroll-Informationen enthalten sind. Danach werden die Segmente an das Internet Protocol (IP) übergeben.

Da beim IP-Routing die Datenpakete unterschiedliche Wege gehen können, entstehen unter Umständen zeitliche Verzögerungen, die dazu führen, dass die Datenpakete beim Empfänger in einer anderen Reihenfolge eingehen, als sie ursprünglich hatten. Deshalb werden die Segmente beim Empfänger auch wieder in die richtige Reihenfolge gebracht und erst dann an die adressierte Anwendung übergeben. Dazu werden die Segmente mit einer fortlaufenden Sequenznummer versehen (Sequenzierung).

Verbindungsmanagement (Connection Establishment and Termination)

Als verbindungsorientiertes Protokoll ist TCP für den Verbindungsaufbau und Verbindungsabbau zwischen zwei Stationen einer Ende-zu-EndeKommunikation zuständig. Durch TCP stehen Sender und Empfänger ständig in Kontakt zueinander.

Wenn auf einer bestehenden Verbindung längere Zeit nichts gesendet wird, schickt TCP ein Paket zur Bestätigung der Verbindung.

Fehlerbehandlung (Error Detection)

Obwohl es sich eher um eine virtuelle Verbindung handelt, werden während der Datenübertragung ständig Kontrollmeldungen ausgetauscht. Der Empfänger bestätigt dem Sender jedes empfangene Datenpaket. Trifft keine Bestätigung beim Absender ein, wird das Paket noch mal verschickt. 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.

Flusssteuerung (Flow Control)

Bei einer paketorientierten Übertragung ohne feste zeitliche Zuordnung und ohne Kenntnis des Übertragungswegs erhält das Transport-Protokoll vom Übertragungssystem keine Information über die verfügbare Bandbreite. Mit der Flusssteuerung werden beliebig langsame oder schnelle Übertragungsstrecken dynamisch auszulasten und auch auf unerwartete Engpässe und Verzögerungen reagiert. Dazu nutzt TCP Stop & Go Bits (Verwendung z.B.: Traffic Shaping). Solange der Empfänger keine Probleme hat mit der Ankunft der vielen Pakete, schickt er immer ein Go Bit im Bestätigungspaket. Wenn allerdings irgendein Fehler oder ein Problem auftritt, setzt der Empfänger dieses Bit auf Stop, sodass TCP aufhört weitere Pakete zu schicken, bis das gleiche Bestätigungspaket mit einem Go Bit beim Sender ankommt.

Dieses Verfahren wird auch gerne von Providern verwendet, um die Datenbandbreite runter zu drosseln. Wenn man zum Beispiel eine 100MByte/s-Leitung zu seinem Haus verlegt hat und nur für 20 MByte/s gezahlt hat, dann kann man durch Stop & Go Bits die Geschwindigkeit verlangsamen, sodass nicht die vollen 100MByte/s genutzt werden können, sondern eben nur 20MByte/s. Dieses Verfahren der Bandbreitenreduzierung nennt sich Traffic Shaping.

Anwendungsunterstützung (Application Support)

TCP- und UDP-Ports sind eine Software-Abstraktion, um Kommunikationsverbindungen voneinander unterscheiden zu können. Ähnlich wie IP-Adressen Rechner in Netzwerken adressieren, adressieren Ports spezifische Anwendungen oder Verbindungen, die auf einem Rechner laufen.

Ports

Mithilfe von Ports kann man verschiedene Anwendungen und Dienste adressieren. TCP muss wissen, an welche Anwendung es die Pakete weiterleiten soll, weshabl die Portnummer darüber Auskunft gibt.

Portgruppen

Portnummern gehen von 1 bis 65.535. In diesem Zahlenbereich gibt es drei verschiedene Bereiche von Portnummern.
Bereich Name dieser Gruppe
0 - 1.023 well-known Ports
1.024 - 49.151 Registered Ports
49.152 - 65.535 Dynamically Allocated Ports
Diese Portbereiche werden nun im Detail beschrieben:
well-known Ports
Die well-known Ports sind fix festgelegt Ports für Anwendungen, wie zum Beispiel FTP, DHCP oder DNS. Der Bereich dieser Portsgruppe geht von 0 bis 1.023. Für eine Auflistenung der wichtigsten well-known Ports, folgen Sie diesem Link: well-known Ports.
Registered Ports
Die registrierten Ports können von jedem registriert werden. Wenn man das will, muss man dies bei IANA/ICANN beantragen. Der Bereich von den registrierten Ports geht von 1.024 bis 49.151.
Dynamically Allocated Ports
Die dynamically allocated Ports werden von Clients für eine ausgehende Verbindung verwendet (Source-Port). Das bedeutet, wenn ein Client sich zu einem Server verbindet, vergibt TCP bzw. UDP den Standard-Port für den Empfänger-Port und einen freien Port ab 49.152 für den Sender-Port. Wenn der Server die Daten erhalten hat und eine Antwort zurückschickt, dann werden die Portnummern vertauscht. Damit wird sichergestellt, dass die Daten nicht an eine falsche Anwendung übergeben werden. Der Bereich dieser Portgruppe geht von 49.152 bis 65.535.

Portzustände

Ports können mehrere Zustände aufweisen. Der Zustand eines Ports definiert, ob eine Kommunikation über diesen Port zu einer dahinterliegenden Anwendung möglich ist, oder nicht. Vereinfacht gesehen gibt es drei Zustände.
Portzustände
Open / Offen
Closed / Geschlossen
Filtered / Gefiltert (Blocked / Geblockt)
Diese Portzustände werden nun im Detail beschrieben:
Open
Ein Port wird dann als Open bezeichnet, wenn eine Anwendung dahinter "lauscht". Der Client kann dann zu dieser Anwendung mittels TCP eine Verbindung aufbauen und kommunizieren.
Closed
Ein Port wird dann als Closed bezeichnet, wenn keine Anwendung dahinter "lauscht". Dies ist der Standardzustand eines Ports und er bedeutet, dass der Host eine Verbindung zu diesem Port aktiv ablehnt. Closed kann auch bedeuten, dass zwar eine Anwendung auf diesem Port "lauscht", allerdings ist dieser durch eine Firewall blockiert und wird rejected. Das bedeutet aber auch, dass zu der dahinterliegenden Anwendung keine Verbindung aufgebaut werden kann.
Filtered
Ein Port wird dann als Filtered bezeichnet, wenn die Verbindung weder bestätigt (Open) noch abgeleht (Closed) wird. Das bedeutet, dass der kontaktierte Port durch eine Firewall geschützt ist und auf Verbindungsversuche nicht antwortet (drop). Dieser Zustand kann allerdings auch dadurch entstehen, dass der kontaktierte Host gar nicht erreichbar ist.