22 Protokolle im TCP/IP-Stack

22.1 Einleitung

Der TCP/IP-Protokollstapel bildet das Fundament des Internets und moderner Netzwerkkommunikation. Während das Schichtenmodell die konzeptionelle Struktur beschreibt, sind es die einzelnen Protokolle innerhalb dieser Schichten, die die eigentliche Kommunikation ermöglichen. Diese Protokolle stellen standardisierte Regeln und Verfahren dar, die definieren, wie Daten formatiert, adressiert, übertragen, geroutet und empfangen werden.

In diesem Kapitel betrachten wir die wichtigsten Protokolle jeder Schicht des TCP/IP-Stacks im Detail. Wir untersuchen ihre spezifischen Funktionen, Merkmale, Einsatzgebiete und ihr Zusammenspiel. Dieses Wissen ist für IT-Fachleute unerlässlich, um Netzwerke effektiv zu implementieren, zu verwalten und Probleme zu diagnostizieren.

Besonders interessant ist dabei zu verstehen, wie diese Protokolle zusammenarbeiten, um komplexe Kommunikationsanforderungen zu erfüllen, und wie sie sich im Laufe der Zeit weiterentwickelt haben, um neuen Herausforderungen gerecht zu werden. Von den grundlegenden Protokollen, die seit den Anfängen des Internets existieren, bis hin zu modernen Entwicklungen, die die Zukunft der Netzwerkkommunikation prägen – alle spielen eine entscheidende Rolle in unserem vernetzten digitalen Ökosystem.

22.2 Protokolle der Netzzugangsschicht

Die Netzzugangsschicht bildet die unterste Ebene des TCP/IP-Modells und ist für die physische Übertragung von Daten zwischen direkt verbundenen Geräten verantwortlich. Obwohl das TCP/IP-Modell diese Schicht nicht detailliert spezifiziert und verschiedene Technologien hier eingesetzt werden können, gibt es einige dominierende Protokolle und Standards.

22.2.1 Ethernet (IEEE 802.3)

Ethernet ist zweifellos das wichtigste und am weitesten verbreitete Protokoll der Netzzugangsschicht für lokale Netzwerke (LANs).

22.2.1.1 Funktionsweise und Merkmale

22.2.1.2 Ethernet-Varianten

Ethernet hat sich über die Jahre kontinuierlich weiterentwickelt, um höhere Geschwindigkeiten und neue Anwendungsfälle zu unterstützen:

Diese Standards unterscheiden sich nicht nur in der Geschwindigkeit, sondern auch in den Anforderungen an Kabeltypen, maximale Distanzen und Hardware-Spezifikationen.

22.2.2 WLAN (IEEE 802.11)

Wireless LAN oder Wi-Fi hat die Art und Weise, wie wir Netzwerke nutzen, revolutioniert, indem es drahtlose Konnektivität ermöglicht.

22.2.2.1 Funktionsweise und Merkmale

22.2.2.2 WLAN-Standards

Die IEEE 802.11-Familie umfasst zahlreiche Standards:

Jeder neue Standard bringt Verbesserungen in Bezug auf Geschwindigkeit, Reichweite, Kapazität und Energieeffizienz.

22.2.3 PPP (Point-to-Point Protocol)

PPP ist ein Protokoll für Direktverbindungen zwischen zwei Netzwerkknoten und war besonders wichtig in der Ära der Einwahl-Internetverbindungen.

22.2.3.1 Funktionsweise und Merkmale

22.2.3.2 Moderne Anwendungen

Obwohl traditionelle Einwahlverbindungen selten geworden sind, findet PPP noch Anwendung in:

22.2.4 Weitere Protokolle der Netzzugangsschicht

22.3 Protokolle der Internetschicht

Die Internetschicht ist für die logische Adressierung und das Routing von Datenpaketen über verschiedene Netzwerke hinweg verantwortlich. Hier finden wir einige der fundamentalsten Protokolle des Internets.

22.3.1 IP (Internet Protocol)

IP ist das zentrale Protokoll der Internetschicht und bildet das Rückgrat des gesamten Internets.

22.3.1.1 IPv4 (Internet Protocol Version 4)

IPv4 ist die ursprüngliche und noch immer dominierende Version des Internetprotokolls.

22.3.1.1.1 Merkmale und Funktionsweise
22.3.1.1.2 Adressklassen und Subnetting

Ursprünglich wurden IPv4-Adressen in fünf Klassen eingeteilt:

Dieses starre System wurde durch CIDR (Classless Inter-Domain Routing) ersetzt, das flexiblere Netzmasken ermöglicht und als Präfixlänge notiert wird (z.B. 192.168.1.0/24).

22.3.1.1.3 Private Adressbereiche und NAT

Um der Erschöpfung des IPv4-Adressraums entgegenzuwirken, wurden bestimmte Bereiche für private Netzwerke reserviert:

Diese privaten Adressen werden mit NAT (Network Address Translation) verwendet, um mehrere Geräte über eine einzelne öffentliche IP-Adresse mit dem Internet zu verbinden.

22.3.1.2 IPv6 (Internet Protocol Version 6)

IPv6 wurde entwickelt, um die Adressknappheit und andere Limitationen von IPv4 zu überwinden.

22.3.1.2.1 Merkmale und Funktionsweise
22.3.1.2.2 Adresstypen und -struktur

IPv6 definiert verschiedene Adresstypen:

22.3.1.3 Vergleich IPv4 und IPv6

Merkmal IPv4 IPv6
Adresslänge 32 Bit 128 Bit
Adressformat Dotted Decimal Hexadezimal mit Doppelpunkten
Header-Größe Variabel (20-60 Bytes) Fest (40 Bytes)
Fragmentierung Am Sender und in Routern Nur am Sender
Checksumme Ja Nein
Broadcast Ja Nein (durch Multicast ersetzt)
Konfiguration Manuell oder DHCP Stateless Autoconfiguration, DHCPv6
NAT Häufig verwendet Typischerweise nicht erforderlich
IPsec Optional Integriert (aber in der Praxis oft optional)
QoS Durch ToS-Feld Durch Traffic Class und Flow Label

Die Migration von IPv4 zu IPv6 ist ein laufender Prozess, der verschiedene Übergangsmechanismen wie Dual-Stack, Tunneling (6to4, Teredo) und Translation (NAT64) umfasst.

22.3.2 ICMP (Internet Control Message Protocol)

ICMP ist ein essentielles Begleitprotokoll zu IP, das Fehlerberichte und operative Informationen bereitstellt.

22.3.2.1 ICMP für IPv4 (ICMPv4)

22.3.2.2 ICMP für IPv6 (ICMPv6)

ICMPv6 erweitert die Funktionalität von ICMPv4 und übernimmt zusätzliche Aufgaben, die in IPv4 von separaten Protokollen (wie ARP) erledigt wurden.

22.3.3 Routing-Protokolle

Routing-Protokolle, obwohl technisch gesehen Anwendungen, die auf höheren Schichten operieren, werden oft im Kontext der Internetschicht diskutiert, da sie direkt mit IP-Routing zusammenhängen. Sie bestimmen, wie Router Informationen über Netzwerktopologien austauschen und optimale Pfade für die Paketweiterleitung berechnen.

22.3.3.1 Interior Gateway Protocols (IGPs)

IGPs werden innerhalb autonomer Systeme (wie Unternehmensnetzwerke) eingesetzt.

22.3.3.1.1 RIP (Routing Information Protocol)
22.3.3.1.2 OSPF (Open Shortest Path First)
22.3.3.1.3 IS-IS (Intermediate System to Intermediate System)
22.3.3.1.4 EIGRP (Enhanced Interior Gateway Routing Protocol)

22.3.3.2 Exterior Gateway Protocols (EGPs)

EGPs werden zwischen autonomen Systemen eingesetzt, insbesondere im Internet-Backbone.

22.3.3.2.1 BGP (Border Gateway Protocol)

22.3.3.3 Policy-Based Routing

Über reine Routing-Protokolle hinaus ermöglicht Policy-Based Routing (PBR) die Definition von Weiterleitungsentscheidungen basierend auf anderen Kriterien als nur der Zieladresse, wie:

Dies wird häufig für Traffic Engineering, Lastverteilung und die Implementierung komplexer Netzwerkrichtlinien verwendet.

22.3.4 Weitere Protokolle der Internetschicht

22.4 Protokolle der Transportschicht

Die Transportschicht stellt eine Ende-zu-Ende-Verbindung zwischen Anwendungen auf verschiedenen Hosts her. Sie bietet verschiedene Dienstqualitäten, von unzuverlässiger bis hin zu garantierter Zustellung, abhängig von den Anforderungen der Anwendung.

22.4.1 TCP (Transmission Control Protocol)

TCP ist das wichtigste verbindungsorientierte Protokoll im TCP/IP-Stack, das zuverlässige, geordnete und fehlerfreie Datenübertragung bietet.

22.4.1.1 Grundlegende Merkmale

22.4.1.2 Verbindungsaufbau und -abbau

TCP verwendet einen Drei-Wege-Handshake zum Verbindungsaufbau: 1. SYN: Client sendet ein Segment mit gesetztem SYN-Flag und Sequenznummer 2. SYN-ACK: Server antwortet mit SYN- und ACK-Flags, eigener Sequenznummer und Bestätigung der Client-Sequenznummer 3. ACK: Client bestätigt die Server-Sequenznummer

Zum Verbindungsabbau wird ein Vier-Wege-Handshake verwendet: 1. FIN: Eine Seite signalisiert den Verbindungsabbau mit dem FIN-Flag 2. ACK: Die Gegenseite bestätigt 3. FIN: Die Gegenseite sendet ihr eigenes FIN 4. ACK: Die erste Seite bestätigt

22.4.1.3 TCP-Header

Der TCP-Header enthält wichtige Steuerinformationen: - Quell- und Zielport (je 16 Bits): Identifizieren die Anwendungen an beiden Enden - Sequenznummer (32 Bits): Nummeriert übertragene Bytes - Bestätigungsnummer (32 Bits): Gibt an, welches Byte als nächstes erwartet wird - Data Offset (4 Bits): Gibt die Header-Länge an - Reservierte Bits (3 Bits): Für zukünftige Verwendung reserviert - Flags (9 Bits): Kontrollflags wie SYN, ACK, FIN, RST, PSH, URG - Fenstergröße (16 Bits): Für die Flusskontrolle - Prüfsumme (16 Bits): Zur Fehlererkennung - Urgent Pointer (16 Bits): Zeigt auf dringende Daten - Optionen (variabel): Zusätzliche Funktionen wie Maximum Segment Size, Window Scaling

22.4.1.4 Flusskontrolle

TCP verwendet einen Sliding-Window-Mechanismus zur Flusskontrolle: - Der Empfänger gibt eine Fenstergröße an, die anzeigt, wie viele Bytes er bereit ist zu empfangen - Der Sender darf nicht mehr unbestätigte Daten senden als die Fenstergröße erlaubt - Das Fenster “gleitet” mit jeder Bestätigung vorwärts

22.4.1.5 Überlastungskontrolle

TCP implementiert verschiedene Algorithmen zur Vermeidung von Netzwerküberlastung: - Slow Start: Beginnt mit einem kleinen Überlastungsfenster und verdoppelt es mit jeder Bestätigung - Congestion Avoidance: Erhöht das Fenster langsamer, nachdem ein Schwellenwert erreicht ist - Fast Retransmit: Erkennt Paketverluste durch duplizierte ACKs - Fast Recovery: Reduziert das Überlastungsfenster weniger drastisch nach Fast Retransmit

22.4.1.6 TCP-Varianten

Es existieren zahlreiche TCP-Varianten mit unterschiedlichen Überlastungskontrollalgorithmen: - TCP Tahoe: Ursprüngliche Implementierung mit Slow Start und Congestion Avoidance - TCP Reno: Fügt Fast Retransmit und Fast Recovery hinzu - TCP Vegas: Präventive Überlastungserkennung basierend auf RTT-Messung - TCP BIC/CUBIC: Optimiert für Hochgeschwindigkeitsnetzwerke mit hoher Bandbreite und Latenz - TCP BBR (Bottleneck Bandwidth and RTT): Google’s neuerer Ansatz, der Netzwerkflaschenhälse modelliert

22.4.2 UDP (User Datagram Protocol)

UDP ist ein einfaches, verbindungsloses Protokoll, das minimalen Overhead bietet und keine Garantien für Zustellung oder Reihenfolge gibt.

22.4.2.1 Grundlegende Merkmale

22.4.2.2 UDP-Header

Der UDP-Header ist extrem einfach und umfasst nur vier Felder: - Quellport (16 Bits): Optionaler Absenderport, kann 0 sein wenn nicht verwendet - Zielport (16 Bits): Identifiziert den Dienst auf dem Zielhost - Länge (16 Bits): Gesamtlänge von Header und Daten - Prüfsumme (16 Bits): Optionale Fehlerprüfung (in der Praxis fast immer verwendet)

22.4.2.3 Anwendungsszenarien

UDP eignet sich besonders für: - Echtzeitanwendungen: VoIP, Videostreaming, Online-Spiele - Einfache Request-Response-Kommunikation: DNS-Anfragen - Broadcast- und Multicast-Anwendungen: Netzwerkdiscovery, Streaming zu multiplen Empfängern - Anwendungen mit eigener Fehlerkorrektur/Flusskontrolle: Anwendungen, die ihre eigene Zuverlässigkeitsschicht implementieren

22.4.2.4 Probleme mit UDP in modernen Netzwerken

Trotz der Einfachheit und Effizienz von UDP gibt es Herausforderungen: - NAT-Traversal: Verbindungsloses UDP kann Probleme mit NAT-Routern haben - Firewall-Blockierung: Viele Firewalls blockieren UDP-Traffic standardmäßig - Fairness: UDP hat keine eingebaute Überlastungskontrolle und kann TCP-Verbindungen beeinträchtigen

22.4.3 QUIC (Quick UDP Internet Connections)

QUIC ist ein modernes Transportprotokoll, entwickelt von Google, das die Vorteile von UDP und TCP kombiniert. Es bildet die Basis für HTTP/3.

22.4.3.1 Merkmale von QUIC

QUIC ist besonders vorteilhaft für mobile Anwendungen, Websites mit vielen Ressourcen und Szenarien mit häufigen Netzwerkwechseln.

22.4.4 SCTP (Stream Control Transmission Protocol)

SCTP wurde ursprünglich für Telekommunikationsanwendungen entwickelt und bietet Funktionen, die weder TCP noch UDP allein bieten.

22.4.4.1 Merkmale von SCTP

SCTP wird hauptsächlich in Telekommunikationsnetzwerken, für Diameter-Protokolle und in speziellen Hochverfügbarkeitsanwendungen eingesetzt.

22.4.5 DCCP (Datagram Congestion Control Protocol)

DCCP ist ein Transportprotokoll, das versucht, die Lücke zwischen TCP und UDP zu schließen.

22.4.5.1 Merkmale von DCCP

DCCP ist für Anwendungen gedacht, die von Überlastungskontrolle profitieren, aber keine vollständige Zuverlässigkeit benötigen, wie Streaming-Medien und Online-Spiele. In der Praxis hat es jedoch keine weite Verbreitung gefunden.

22.5 Protokolle der Anwendungsschicht

Die Anwendungsschicht bietet eine Vielzahl von Protokollen für spezifische Anwendungsbereiche und Dienste. Diese Protokolle nutzen die Dienste der darunter liegenden Schichten und stellen die Schnittstelle zur Endbenutzeranwendung dar.

22.5.1 Webprotokolle

22.5.1.1 HTTP (Hypertext Transfer Protocol)

HTTP ist das grundlegende Protokoll des World Wide Web und ermöglicht den Austausch von Hypertext-Dokumenten.

22.5.1.1.1 HTTP/1.0 und HTTP/1.1
22.5.1.1.2 HTTP/2
22.5.1.1.3 HTTP/3

22.5.1.2 WebSocket

WebSocket bietet einen bidirektionalen Kommunikationskanal zwischen Browser und Server über eine einzelne TCP-Verbindung.

22.5.1.3 REST (Representational State Transfer)

REST ist kein Protokoll, sondern ein Architekturstil für verteilte Hypermedia-Systeme, der häufig mit HTTP implementiert wird.

22.5.2 E-Mail-Protokolle

22.5.2.1 SMTP (Simple Mail Transfer Protocol)

SMTP ist für den Versand von E-Mails zwischen Servern zuständig.

22.5.2.2 POP3 (Post Office Protocol version 3)

POP3 ermöglicht das Abrufen von E-Mails von einem Server auf einen Client, typischerweise mit dem Ziel, sie lokal zu speichern.

22.5.2.3 IMAP (Internet Message Access Protocol)

IMAP bietet fortschrittlichere Funktionen zum Zugriff auf E-Mails auf einem Server, einschließlich serverseitiger Speicherung.

22.5.3 Dateiübertragungsprotokolle

22.5.3.1 FTP (File Transfer Protocol)

FTP ist ein klassisches Protokoll für die Übertragung von Dateien zwischen Client und Server.

22.5.3.2 SFTP (SSH File Transfer Protocol)

SFTP bietet sichere Dateiübertragungen über das SSH-Protokoll.

22.5.3.3 SMB (Server Message Block)

SMB ist das primäre Dateifreigabeprotokoll in Windows-Netzwerken, wird aber auch auf anderen Plattformen unterstützt.

22.5.4 Name Services und Verzeichnisprotokolle

22.5.4.1 DNS (Domain Name System)

DNS ist ein fundamentaler Dienst für die Übersetzung von Domainnamen in IP-Adressen und umgekehrt.

22.5.4.2 DHCP (Dynamic Host Configuration Protocol)

DHCP automatisiert die Zuweisung von IP-Adressen und anderen Netzwerkkonfigurationsparametern.

22.5.4.3 LDAP (Lightweight Directory Access Protocol)

LDAP bietet Zugriff auf und Verwaltung von Verzeichnisdiensten, oft für Benutzerauthentifizierung und -organisation.

22.5.5 Sicherheitsprotokolle

22.5.5.1 TLS/SSL (Transport Layer Security/Secure Sockets Layer)

TLS/SSL bietet verschlüsselte Kommunikation und Authentifizierung zwischen Systemen.

22.5.5.2 IPsec (Internet Protocol Security)

IPsec bietet Sicherheit auf der Internetschicht, was den Schutz des gesamten IP-Datenverkehrs ermöglicht.

22.5.5.3 SSH (Secure Shell)

SSH bietet sicheren Fernzugriff auf Systeme und sichere Dateiübertragung.

22.5.6 Netzwerkmanagementprotokolle

22.5.6.1 SNMP (Simple Network Management Protocol)

SNMP ermöglicht die Überwachung und Verwaltung von Netzwerkgeräten.

22.5.6.2 NETCONF (Network Configuration Protocol)

NETCONF ist ein modernes Protokoll zur Netzwerkkonfiguration mit XML-basierten Operationen.

22.5.7 Streaming und Echtzeit-Kommunikationsprotokolle

22.5.7.1 RTP (Real-time Transport Protocol)

RTP ist für die Übertragung von Audio- und Videodaten in Echtzeit konzipiert.

22.5.7.2 SIP (Session Initiation Protocol)

SIP ist ein Signalisierungsprotokoll für den Aufbau, die Änderung und Beendigung von Multimedia-Sitzungen.

22.5.7.3 WebRTC (Web Real-Time Communication)

WebRTC ist eine offene Technologie, die Echtzeit-Kommunikation im Browser ohne Plugins ermöglicht.

22.5.8 IoT-spezifische Protokolle

22.5.8.1 MQTT (Message Queuing Telemetry Transport)

MQTT ist ein leichtgewichtiges Publish-Subscribe-Protokoll, ideal für IoT-Geräte.

22.5.8.2 CoAP (Constrained Application Protocol)

CoAP ist ein spezialisiertes Webprotokoll für eingeschränkte Geräte und Netzwerke.

22.6 Zusammenspiel und Abhängigkeiten der Protokolle

Die verschiedenen Protokolle im TCP/IP-Stack arbeiten nicht isoliert, sondern in enger Kooperation, um eine nahtlose Kommunikation zu ermöglichen. Dieses Zusammenspiel erfolgt sowohl innerhalb einer Schicht als auch schichtübergreifend.

22.6.1 Protokollstapel in Aktion

Ein typisches Beispiel für das Zusammenspiel der Protokolle ist der Aufruf einer Webseite:

  1. Anwendungsschicht: Der Browser verwendet DNS, um den Domainnamen in eine IP-Adresse aufzulösen, und erstellt dann eine HTTP-Anfrage.

  2. Transportschicht: Die HTTP-Anfrage wird an TCP übergeben, das einen zuverlässigen Kanal zum Webserver einrichtet durch:

  3. Internetschicht: TCP-Segmente werden an IP übergeben, das:

  4. Netzzugangsschicht: IP-Pakete werden in Frames verpackt mit:

  5. Physische Übertragung: Die Frames werden als elektrische Signale, Lichtimpulse oder Funkwellen übertragen.

Der Empfänger durchläuft diese Schritte in umgekehrter Reihenfolge, um die ursprüngliche HTTP-Anfrage zu extrahieren und zu verarbeiten.

22.6.2 Protokoll-Interaktionen und Abhängigkeiten

Protokolle interagieren auf verschiedenen Ebenen:

22.6.2.1 Horizontale Interaktionen (innerhalb einer Schicht)

22.6.2.2 Vertikale Interaktionen (zwischen Schichten)

22.6.2.3 Protokollkonvertierung und -adaption

In komplexen Netzwerken sind oft Protokollkonvertierungen erforderlich:

22.6.3 Protokollaushandlung und -erkennung

Moderne Protokolle implementieren oft Mechanismen zur dynamischen Aushandlung:

22.7 Protokollentwicklung und Zukunftstrends

Der TCP/IP-Stack entwickelt sich kontinuierlich weiter, getrieben durch neue Anforderungen und Technologien. Diese Evolution folgt mehreren Schlüsseltrends:

22.7.1 Optimierung für moderne Netzwerke

22.7.2 Erhöhte Sicherheit

22.7.3 Effizienz und Skalierbarkeit

22.7.4 Protokollkonvergenz und -spezialisierung