Grundlagen

Schichtenmodell und TCP/IP

Wie eine Nachricht in Umschläge verpackt, in Pakete zerlegt, über Dutzende Router geschickt und am Ziel wieder richtig zusammengesetzt wird – obwohl unterwegs Pakete verloren gehen und sich überholen.

Lesestand

Netzwerk-Kommunikation ist in Schichten aufgebaut. Jede löst genau ein Problem und benutzt die darunter: Die Verbindungsschicht bringt Daten zum nächsten Gerät im selben Netz, IP findet den Weg quer durchs Internet, TCP macht daraus eine zuverlässige Verbindung, und ganz oben sprechen Anwendungen ihre eigenen Protokolle wie HTTP.

Das Entscheidende: IP garantiert gar nichts. Pakete können verloren gehen, doppelt ankommen oder sich überholen. TCP baut darauf mit Nummerierung, Bestätigungen und Neuübertragung einen verlässlichen Datenstrom. Wer auf Zuverlässigkeit verzichten kann, nimmt das schlankere UDP.

Warum Schichten?

Ein Brief im Umschlag: Du schreibst den Inhalt, steckst ihn in einen Umschlag mit Adresse, die Post legt ihn in einen Sack für das Zielverteilzentrum, der Sack kommt auf einen Lastwagen. Der Lastwagenfahrer kennt den Brief nicht, der Briefschreiber nicht die Route. Jede Ebene kümmert sich um ihren Teil und packt den Inhalt der Ebene darüber unbesehen ein. Genau so arbeitet ein Netzwerk – das Prinzip heißt Kapselung.

Der Vorteil: Jede Schicht ist austauschbar. HTTP funktioniert über WLAN, Kabel oder Mobilfunk gleich, weil es von der Funktechnik nichts weiß. Und ein neues Anwendungsprotokoll braucht keine neuen Router.

TCP/IP-SchichtOSI-SchichtAufgabeBeispiele
Anwendung5–7Was die Programme miteinander besprechenHTTP, DNS, SMTP, SSH
Transport4Von Programm zu Programm: Ports, Zuverlässigkeit, ReihenfolgeTCP, UDP, QUIC
Internet3Von Rechner zu Rechner quer durch viele Netze: Adressen, RoutingIPv4, IPv6
Verbindung1–2Zum nächsten Gerät im selben Netz, über Kabel oder FunkEthernet, WLAN, Mobilfunk

Das OSI-Modell mit seinen sieben Schichten aus den späten 1970er-Jahren ist das Lehrbuchmodell – man hört Sätze wie „ein Layer-7-Loadbalancer“. Gesiegt hat in der Praxis aber das schlankere TCP/IP-Modell, auf dem das Internet läuft.

Kapselung: ein Request auf dem Weg nach unten

Größen typisch für IPv4 und Ethernet ohne Optionen. Beim Empfänger läuft alles umgekehrt: Jede Schicht nimmt ihren Kopf ab und reicht den Rest nach oben.

IP: Adressen und Wege

Jedes Gerät im Internet braucht eine IP-Adresse. Die klassische Form, IPv4, hat 32 Bit – geschrieben als vier Zahlen wie 203.0.113.20. Das sind gut 4,3 Milliarden Adressen, und die sind seit Jahren praktisch vergeben. Zwei Auswege:

  • NAT: Zu Hause haben alle Geräte private Adressen (192.168.x.x, 10.x.x.x oder 172.16–31.x.x), die im Internet nicht vorkommen. Der Router tritt nach außen mit einer einzigen öffentlichen Adresse auf und merkt sich, welche Antwort zu welchem Gerät gehört.
  • IPv6: 128 Bit, also so viele Adressen, dass jedes Gerät eine eigene, weltweit eindeutige bekommen kann. Geschrieben in Hex, etwa 2001:db8::1. Ein großer Teil des Verkehrs läuft heute schon darüber – Umstieg seit über zwanzig Jahren.

Den Weg findet IP Schritt für Schritt. Jeder Router schaut auf die Zieladresse, sucht in seiner Tabelle den besten nächsten Nachbarn und schickt das Paket weiter. Kein Router kennt den ganzen Weg. Jedes Paket wird einzeln behandelt – zwei Pakete derselben Nachricht können verschiedene Wege nehmen. Damit kein Paket ewig im Kreis läuft, trägt es einen Zähler (TTL), den jeder Router um eins verringert; bei null wird es verworfen. Das Werkzeug traceroute nutzt genau das, um die Stationen eines Weges sichtbar zu machen.

IP arbeitet nach dem Prinzip „best effort“: Jeder Router gibt sein Bestes – aber ist sein Puffer voll, wirft er Pakete einfach weg. Keine Fehlermeldung, kein zweiter Versuch. Das ist kein Konstruktionsfehler, sondern Absicht: Ein dummes Netz mit klugen Endpunkten ist einfacher, billiger und robuster.

TCP: Zuverlässigkeit auf unzuverlässigem Grund

TCP macht aus verlorenen, doppelten und vertauschten Paketen einen sauberen, geordneten Datenstrom. Die Tricks dahinter:

#

Nummerieren

Jedes Byte hat eine Folgenummer. So erkennt der Empfänger Lücken, Doppelte und falsche Reihenfolge.

✓

Bestätigen

Der Empfänger meldet zurück, bis wohin er alles lückenlos hat (ACK). Bleibt eine Bestätigung aus, sendet der Absender erneut.

⇵

Puffern

Was zu früh ankommt, wartet beim Empfänger, bis die Lücke davor gefüllt ist. Erst dann bekommt die Anwendung die Daten – in richtiger Reihenfolge.

Acht Pakete über ein unzuverlässiges Netz
Verlustrate im Netz

1 · Gesendet

2 · Im Netz – so kommen sie an

3 · An die Anwendung übergeben

Dazu kommen zwei Regelkreise, die man selten sieht, aber ständig nutzt. Die Flusskontrolle sorgt dafür, dass ein schneller Sender einen langsamen Empfänger nicht überflutet: Der Empfänger meldet, wie viel Platz sein Puffer noch hat. Die Überlastkontrolle schützt das Netz selbst: TCP beginnt vorsichtig, steigert das Tempo, solange alles ankommt, und bremst deutlich, sobald Pakete verloren gehen – denn Verluste bedeuten meist volle Router. Dass Millionen TCP-Verbindungen sich so freiwillig zurücknehmen, hält das Internet seit den 1980er-Jahren am Laufen.

Der Handshake – und was er kostet

Bevor TCP Daten überträgt, tauschen beide Seiten drei Pakete aus: SYN, SYN-ACK, ACK. Dabei vereinbaren sie ihre Startnummern. Das kostet eine volle Rundreise (RTT, round-trip time) – und für eine verschlüsselte Verbindung kommt noch der TLS-Handshake dazu. Bei weiten Wegen merkt man das deutlich:

Wie lange bis zur ersten Antwort?
Rundreise (RTT)

Vereinfacht, ohne Rechenzeit. 10 ms entsprechen etwa einer Verbindung innerhalb Deutschlands, 100 ms einer nach Nordamerika, 300 ms einer schlechten Mobilfunkverbindung ans andere Ende der Welt.

Genau deshalb wurde QUIC entwickelt, die Grundlage von HTTP/3. Es läuft über UDP und baut Zuverlässigkeit und Verschlüsselung selbst ein – Verbindungsaufbau und Schlüsselaustausch in einem Schritt. Ein weiterer Vorteil: Geht bei TCP ein Paket verloren, warten alle Daten dahinter, auch die anderer Dateien auf derselben Verbindung. QUIC verwaltet mehrere unabhängige Datenströme, ein Verlust bremst nur seinen eigenen.

Ports, Sockets und UDP

Eine IP-Adresse bringt ein Paket zum richtigen Rechner. Welches Programm es bekommt, entscheidet die Portnummer, eine Zahl von 0 bis 65 535. Server lauschen auf bekannten Ports: 443 für HTTPS, 80 für HTTP, 22 für SSH, 53 für DNS, 5432 für PostgreSQL. Der Client bekommt vom Betriebssystem einen zufälligen hohen Port. Eine TCP-Verbindung ist eindeutig bestimmt durch vier Werte: Quell-Adresse, Quell-Port, Ziel-Adresse, Ziel-Port. Das Ende einer Verbindung im Programm heißt Socket.

UDP verzichtet auf all die TCP-Mechanik: kein Handshake, keine Bestätigung, keine Reihenfolge. Ein Paket, ein Versuch. Das klingt schlechter, ist aber oft genau richtig: Bei einem Videoanruf ist ein verlorenes Bild von vor einer halben Sekunde wertlos – eine Neuübertragung käme zu spät. Auch DNS-Anfragen, Online-Spiele und QUIC laufen über UDP.

Ganz unten: das lokale Netz

Innerhalb eines lokalen Netzes zählt eine andere Adresse: die MAC-Adresse der Netzwerkkarte. Will ein Rechner ein Paket an eine IP im selben Netz schicken, fragt er per ARP in die Runde: „Wer hat 192.168.1.20?“ – und bekommt die MAC-Adresse zurück. Ein Switch verteilt Pakete innerhalb eines Netzes anhand der MAC-Adressen, ein Router verbindet verschiedene Netze anhand der IP-Adressen. Der Router zu Hause ist meist beides, dazu WLAN-Zugangspunkt und NAT-Übersetzer.

Für Entwickler übersetzt

// Ein Echo-Server: schickt alles zurück, was er bekommt
try (var server = new ServerSocket(5000);
     var exec = Executors.newVirtualThreadPerTaskExecutor()) {
    while (true) {
        Socket s = server.accept();               // kehrt nach dem TCP-Handshake zurück
        exec.submit(() -> {
            try (s; var in = s.getInputStream(); var out = s.getOutputStream()) {
                in.transferTo(out);               // ein Datenstrom, keine Nachrichten
            }
            return null;
        });
    }
}

Die Fehlermeldungen von Java verraten, auf welcher Schicht es hakt:

ExceptionWas im Netz passiert ist
UnknownHostExceptionDer Name ließ sich nicht in eine IP-Adresse auflösen – ein DNS-Problem, noch vor TCP.
ConnectException: Connection refusedDer Rechner ist erreichbar, aber auf dem Port lauscht niemand. Er hat das SYN mit einem RST beantwortet.
SocketTimeoutException: Connect timed outAuf das SYN kam gar nichts zurück – Rechner aus, falsche Adresse oder eine Firewall verwirft die Pakete stillschweigend.
SocketTimeoutException: Read timed outDie Verbindung steht, aber die Gegenseite schickt nichts mehr.
SocketException: Connection resetDie Gegenseite hat die Verbindung hart abgebrochen.

Zwei Ratschläge aus der Praxis: Immer beide Timeouts setzen – beim HttpClient mit connectTimeout und pro Anfrage mit timeout, bei Sockets mit connect(addr, ms) und setSoTimeout. Ohne Timeout wartet ein Thread im Zweifel ewig. Und Verbindungen wiederverwenden statt jedes Mal neu aufzubauen – Connection-Pools sparen genau die Handshakes aus dem Widget oben.

Häufige Irrtümer

„TCP überträgt Nachrichten.“ – TCP überträgt einen Bytestrom ohne Grenzen. Wer 100 Bytes schreibt, bekommt beim Lesen vielleicht 60 und dann 40 – oder zwei Nachrichten auf einmal. Wo eine Nachricht endet, muss das Anwendungsprotokoll festlegen, etwa mit einer Längenangabe oder einem Zeilenumbruch.
„UDP ist unzuverlässig, also schlechter.“ – Es ist schneller und einfacher. Wo Aktualität wichtiger ist als Vollständigkeit, ist es die bessere Wahl – und QUIC zeigt, dass man darauf sogar mehr Zuverlässigkeit bauen kann als TCP bietet.
„Eine IP-Adresse gehört zu einem Rechner.“ – Hinter einer Adresse können durch NAT Hunderte Geräte stecken, ein Rechner kann viele Adressen haben, und Adressen wechseln.
„Mehr Bandbreite heißt schneller laden.“ – Bei kleinen Anfragen bestimmt die Rundreisezeit das Tempo, nicht die Bandbreite. Eine Glasfaser nach Australien hat immer noch mindestens die Laufzeit des Lichts.
„Das Internet funktioniert nach dem OSI-Modell.“ – OSI ist ein Lehrmodell. Das Internet läuft auf TCP/IP, und manche Protokolle passen in keine Schicht sauber hinein.

Verwandte Begriffe