ISO/OSI, TCP & UDP — Interaktive Lernseite
Echtzeit- & Betriebssysteme

Netzwerke verstehen:
ISO/OSI, TCP & UDP

Eine interaktive Lernseite zum Aufgabenblatt 09: das Schichtenmodell animiert, TCP- und UDP-Abläufe als Simulation, der komplette Quellcode Zeile für Zeile erklärt, ein Fachwortglossar und ein Quiz zur Selbstkontrolle.

Mit dem OSI-Modell starten → Zum Quellcode Quiz
Client
Server
A×B
{{ st.n }}
{{ st.label }}
Teil 1 · Das Schichtenmodell

Das ISO/OSI-Referenzmodell

Sieben Schichten teilen die Netzwerkkommunikation in klar getrennte Aufgaben. Jede Schicht bietet der Schicht darüber Dienste an und nutzt die Dienste der Schicht darunter. Klicke eine Schicht an, um Kernaufgabe, Funktionen und Protokolle zu sehen.

Beschriftung:
{{ openLayer.num }}
{{ openLayer.de }}
Layer {{ openLayer.num }} · {{ openLayer.en }}

{{ openLayer.core }}

Funktionen
{{ f }}
Protokolle & Komponenten
{{ p }}
Dateneinheit (PDU) {{ openLayer.pdu }}

Merksatz zum Auswendiglernen

von Schicht 7 (oben) nach Schicht 1 (unten)
{{ M.letter }}
{{ M.wordEN }}
{{ M.wordDE }}
{{ M.layer }}
EN: „All People Seem To Need Data Processing"
DE: „Alle deutschen Studenten trinken verschiedene Sorten Bier"
Teil 1 · Datenkapselung

Die Reise einer Nachricht durch den Stapel

Beim Senden wandert die Nachricht von oben nach unten durch die Schichten — jede Schicht verpackt sie in einen eigenen Header (Kapselung). Beim Empfänger wird von unten nach oben wieder ausgepackt (Entkapselung). Dabei ändert sich der Name der Dateneinheit: Daten → Segment → Paket → Rahmen → Bits.

{{ z.t }}
{{ p.t }}
{{ s.label }}
Dateneinheit {{ encPdu }} {{ encLayer }}

{{ encNote }}

{{ encStepLabel }}
Teil 1 · Modell trifft Praxis

TCP/IP-Stapel ↔ OSI-Zuordnung

In der Praxis benutzt man den TCP/IP-Stapel mit nur vier Schichten. Er fasst die oberen OSI-Schichten 5–7 zu einer Anwendungsschicht zusammen. Die Zuordnung im Überblick:

OSI · 7 SchichtenTCP/IP · 4 Schichten
{{ c.num }} {{ c.de }}
{{ t.name }} {{ t.osiLabel }}
{{ p }}
Die BSD-Socket-API

Sockets sind die Schnittstelle zwischen deinem Programm (Schicht 7) und dem Netzwerk-Stack des Betriebssystems (Schicht 4 und darunter). Sie verbergen TCP, UDP, IP und das Framing hinter einer einheitlichen, datei-ähnlichen API.

Merke

IP-Adresse = welcher Rechner? (Schicht 3). Port = welcher Dienst auf dem Rechner? (Schicht 4). Erst beide zusammen adressieren einen Endpunkt.

Teil 2 · Transportschicht

TCP — verbindungsorientiert & zuverlässig

Bevor ein einziges Nutzbyte fließt, handeln Client und Server eine Verbindung aus (3-Way-Handshake). Danach garantiert TCP Vollständigkeit und Reihenfolge. Spiele den kompletten Lebenszyklus einer Verbindung durch:

{{ p.t }}
💻 Client {{ tcpClientState }}
{{ tcpPkt.dir }}{{ tcpPkt.label }}
{{ tcpPkt.sub }}
🖥️ Server {{ tcpServerState }}

{{ tcpNote }}

{{ tcpStepLabel }}
Zuverlässigkeit

Jeder empfangene Block wird per ACK bestätigt. Verlorene Pakete werden automatisch neu übertragen.

🔢
Reihenfolge

Segmente werden nummeriert und in der richtigen Reihenfolge an die Anwendung ausgeliefert.

🚦
Flusskontrolle

Das Empfangsfenster verhindert, dass ein schneller Sender einen langsamen Empfänger überflutet.

🌊
Strom-Semantik

TCP liefert einen kontinuierlichen Bytestrom ohne Nachrichtengrenzen — deshalb ist recvAll() nötig.

Warum recvAll()? Der Strom kennt keine Grenzen

Ein send() von 32 784 Bytes wird vom Netzwerk in beliebige Häppchen zerlegt. Ein einzelnes recv() gibt zurück, was gerade da ist — mal viel, mal wenig. Erst die Schleife setzt die Nachricht wieder zusammen.

Der Client sendet
1 × send() · 32 784 Bytes
recv() liefert (Beispiel)
1460 B
1024 B
Teil 2 · Transportschicht

UDP — verbindungslos & ohne Garantie

UDP verzichtet auf Handshake, ACKs und Zustand. Das macht es schnell und schlank — aber Pakete können verloren gehen, und niemand merkt es. Simuliere beide Fälle:

Zeigt, warum UDP ohne eigene Absicherung riskant ist.
💻 Client {{ udpClientState }}
{{ udpPkt.dir }}{{ udpPkt.label }}
🖥️ Server {{ udpServerState }}

{{ udpNote }}

{{ udpStepLabel }}
Kein Verbindungsaufbau

Die erste Operation sendto() verschickt sofort das Datagramm — keine Round-Trip für einen Handshake.

🎲
Keine Garantie

Pakete können verloren gehen, dupliziert oder in falscher Reihenfolge ankommen — UDP meldet das nicht.

📦
Datagramm-Semantik

Ein sendto() = genau ein Datagramm. recvfrom() liefert es vollständig — oder gar nicht. Kein recvAll() nötig.

🪶
Geringer Overhead

Header nur 8 Bytes (TCP: 20–60). Kein Handshake, keine ACKs, kein Zustand → niedrige Latenz.

Teil 2 · Direkter Vergleich

TCP vs. UDP

Merkmal
TCP
UDP
Verbindung
verbindungsorientiert
verbindungslos
Zuverlässigkeit
garantiert
keine Garantie
Reihenfolge
eingehalten
nicht garantiert
Overhead / Paket
hoch · Header 20–60 B
gering · Header 8 B
Nachrichtengrenzen
keine (Bytestrom)
ja (Datagrammgrenzen)
Typische Anwendungen
HTTP, SSH, Dateitransfer
DNS, VoIP, Online-Spiele
Zeit bis zum ersten Nutzbyte

UDP spart eine komplette Round-Trip — den Handshake. Genau deshalb hat UDP bei kleinen Nachrichten die niedrigere RTT.

UDP
Datagramm →
← Antwort
✓ sofort
TCP
SYN →
← SYN-ACK
ACK →
Daten →
← Antwort
Die drei blassen Felder sind der Handshake — reine „Verhandlungszeit" vor dem ersten Nutzbyte.
Teil 2 · Praxis

Dasselbe Problem, zwei Antworten

In beiden Szenarien geht unterwegs genau ein Paket verloren — doch die richtige Reaktion ist völlig verschieden. Links eine Online-Zahlung über TCP, rechts ein MMO über UDP. Spiele beide gleichzeitig ab und vergleiche, was passiert.

{{ twStepLabel }}
💳
Online-Zahlung
Kunde → Zahlungsanbieter · 49,99 €
TCP
💻 Kunde {{ payClientState }}
{{ payFlight.dir }}{{ payFlight.label }}
{{ payFlight.sub }}
🏦 Anbieter {{ payServerState }}
Beim Server angekommen
{{ k.label }}{{ k.sub }}

{{ payNote }}

🎮
MMO / Online-Spiel
Spieler → Game-Server · ~60 Updates/s
UDP
🎮 Spieler {{ gameClientState }}
{{ gameFlight.dir }}{{ gameFlight.label }}
{{ gameFlight.sub }}
🖥️ Server {{ gameServerState }}
Beim Server angekommen
{{ k.label }}{{ k.sub }}

{{ gameNote }}

Und wenn man die Protokolle vertauscht?
💳 Zahlung über UDP? ✗ riskant

Ein Datagramm könnte verloren gehen oder doppelt ankommen — der Betrag würde unvollständig übertragen oder doppelt abgebucht, ohne dass es jemand merkt. Für Geld ist das inakzeptabel.

🎮 Spiel über TCP? ✗ zäh

Ein verlorenes Paket blockiert alle nachfolgenden, bis es neu übertragen ist (Head-of-Line-Blocking). Der Charakter friert kurz ein und springt dann — ein Lag-Spike. Eine 50 ms alte Position hilft ohnehin niemandem.

Mehr Beispiele aus der Praxis

Die Faustregel: Wo Vollständigkeit zählt, gewinnt TCP. Wo Aktualität zählt, gewinnt UDP.

TCP Vollständigkeit & Reihenfolge zählen
{{ u.icon }} {{ u.name }} {{ u.why }}
UDP Tempo & Aktualität zählen
{{ u.icon }} {{ u.name }} {{ u.why }}
Teil 2 · Programmierschnittstelle

Die Socket-API im Überblick

Elf Funktionen genügen, um über TCP und UDP zu kommunizieren. Der farbige Marker zeigt, wo jede Funktion im Ablauf steht — auf der Server-Seite, nur bei TCP, nur bei UDP oder bei beiden.

{{ s.fn }}() {{ s.whoLabel }}
{{ s.sig }}

{{ s.desc }}

Teil 3 · Der Quellcode

Der Code — Zeile für Zeile erklärt

Fünf C++-Dateien bilden das Matrixmultiplikations-Beispiel über das Netzwerk. Wechsle oben die Datei und klicke eine markierte Zeile (blauer Punkt) — rechts erscheint die Erklärung. Mit ◀ ▶ springst du durch alle erklärten Zeilen.

{{ codeFileTitle }}
{{ codeFileMeta }}
{{ ln.num }} {{ ln.text }}
Zeile {{ codeSelLine }} {{ codeNoteCounter }}

{{ codeNoteText }}

Teil 3 · Übungen

Aufgaben mit Musterlösung

Die fünf Aufgaben des Blattes — jeweils mit Fragestellung und ausführlicher Musterlösung. Versuche die Antwort erst selbst, dann klappe die Lösung auf und vergleiche.

{{ it.q }}

{{ it.a }}

Teil 4 · Nachschlagen

Fachwort-Glossar

Alle wichtigen Begriffe kompakt erklärt. Filtere nach Kategorie oder suche direkt nach einem Wort.

{{ glossCount }}
{{ g.t }} {{ g.tag }}
{{ g.tr }}

{{ g.d }}

Keine Begriffe gefunden — andere Suche oder Kategorie wählen.
Teil 4 · Selbstkontrolle

Quiz — teste dein Wissen

16 Fragen zu OSI, TCP, UDP und Sockets. Wähle eine Antwort — die Lösung und eine kurze Erklärung erscheinen sofort.

{{ quizTopic }} {{ quizNum }}

{{ quizQ }}

{{ quizFeedback }}

{{ quizExpl }}

{{ quizScore }}
🎉 Alle Fragen beantwortet — {{ quizFinalScore }}

Lernzielkontrolle · offene Fragen

Formuliere die Antwort erst selbst, dann aufklappen und mit der Musterlösung vergleichen.

{{ x.a }}