TCP und UDP sind Transportprotokolle der Internetschicht. Sie unterscheiden sich grundlegend in ZuverlΓ€ssigkeit, Geschwindigkeit und AnwendungsfΓ€llen.
Γberblick
| Eigenschaft | TCP | UDP | |-------------|-----|-----| | Verbindung | Verbindungsorientiert | Verbindungslos | | ZuverlΓ€ssigkeit | Garantierte Zustellung | Keine Garantie | | Reihenfolge | Garantiert | Nicht garantiert | | Fehlerkorrektur | Ja | Nein | | Overhead | Hoch | Niedrig | | Geschwindigkeit | Langsamer | Schneller |
TCP (Transmission Control Protocol)
Funktionsweise
TCP stellt eine zuverlΓ€ssige, geordnete Verbindung her.
Three-Way-Handshake (Verbindungsaufbau):
Client Server
| |
|ββββββββ SYN ββββββββββ>β "Ich will eine Verbindung"
| |
β<βββββββ SYN+ACK ββββββββ "OK, ich auch"
| |
|ββββββββ ACK ββββββββββ>β "BestΓ€tigt"
| |
| Verbindung steht |DatenΓΌbertragung:
Client Server
| |
|ββββ Daten (Seq=1) ββββ>β
β<βββββββ ACK=2 ββββββββββ "Paket 1 erhalten"
| |
|ββββ Daten (Seq=2) ββββ>β
β<βββββββ ACK=3 ββββββββββ "Paket 2 erhalten"Verbindungsabbau (Four-Way-Handshake):
Client Server
| |
|ββββββββ FIN ββββββββββ>β "Ich bin fertig"
β<βββββββ ACK ββββββββββββ "OK"
β<βββββββ FIN ββββββββββββ "Ich auch"
|ββββββββ ACK ββββββββββ>β "OK, tschΓΌss"Eigenschaften
ZuverlΓ€ssigkeit:
- Jedes Paket wird bestΓ€tigt (ACK)
- Verlorene Pakete werden erneut gesendet
- PrΓΌfsummen erkennen Γbertragungsfehler
Flusskontrolle:
- EmpfΓ€nger teilt verfΓΌgbaren Puffer mit
- Sender passt Geschwindigkeit an
- Verhindert Γberlastung
Staukontrolle:
- Erkennt NetzwerkΓΌberlastung
- Reduziert Senderate bei Paketverlusten
TCP-Header
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
βββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ€
β Source Port β Destination Port β
ββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ€
β Sequence Number β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Acknowledgment Number β
ββββββββ¬βββββββ¬ββ¬ββ¬ββ¬ββ¬ββ¬ββ¬ββββββββββββββββββββββββββββββββββββ€
βOffsetβReservβUβAβPβRβSβFβ Window Size β
ββββββββ΄βββββββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββββββββββββββββββββββββββββββββββββ€
β Checksum β Urgent Pointer β
ββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ
Header-GrΓΆΓe: 20-60 BytesAnwendungen
HTTP/HTTPS (Web) β Port 80/443
FTP (Dateitransfer) β Port 21
SSH (Secure Shell) β Port 22
SMTP (E-Mail senden) β Port 25/587
IMAP (E-Mail abrufen) β Port 143/993
MySQL β Port 3306UDP (User Datagram Protocol)
Funktionsweise
UDP ist verbindungslos β einfach senden ohne Handshake.
Client Server
| |
|ββββ Daten (Paket 1) ββ>β Keine BestΓ€tigung
|ββββ Daten (Paket 2) ββ>β
|ββββ Daten (Paket 3) ββ>β
| |Kein Verbindungsaufbau, keine BestΓ€tigungen, keine Reihenfolge.
Eigenschaften
Schnelligkeit:
- Kein Handshake nΓΆtig
- Keine Wartezeit auf ACKs
- Minimaler Overhead
Einfachheit:
- "Fire and Forget"
- Anwendung muss ZuverlΓ€ssigkeit selbst implementieren
Broadcast/Multicast:
- Kann an mehrere EmpfΓ€nger gleichzeitig senden
- TCP nur Punkt-zu-Punkt
UDP-Header
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
βββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ΄ββ€
β Source Port β Destination Port β
ββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ€
β Length β Checksum β
ββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββ
Header-GrΓΆΓe: 8 Bytes (nur!)Anwendungen
DNS (NamensauflΓΆsung) β Port 53
DHCP (IP-Zuweisung) β Port 67/68
NTP (Zeitsynchronisation)β Port 123
VoIP/SIP β Port 5060
Online-Gaming β Variabel
Video-Streaming (RTP) β Variabel
VPN (WireGuard) β Port 51820Detaillierter Vergleich
Overhead
TCP-Paket:
ββββββββββββββ¬ββββββββββββββ¬ββββββββββββββββββββββββββ
β IP-Header β TCP-Header β Daten β
β 20 Bytes β 20+ Bytes β β
ββββββββββββββ΄ββββββββββββββ΄ββββββββββββββββββββββββββ
Minimum: 40 Bytes Header
UDP-Paket:
ββββββββββββββ¬ββββββββββββββ¬ββββββββββββββββββββββββββ
β IP-Header β UDP-Header β Daten β
β 20 Bytes β 8 Bytes β β
ββββββββββββββ΄ββββββββββββββ΄ββββββββββββββββββββββββββ
Minimum: 28 Bytes HeaderLatenz
TCP (mit Handshake):
Zeit: ββ¬β[SYN]ββββββ[SYN+ACK]ββββββ[ACK]ββββββ[Daten]β>
ββββββββββββββββββββββββββββββββββββββββββββββββββ
3 Pakete bevor Daten flieΓen
UDP:
Zeit: β[Daten]ββββββββββββββββββββββββββββββββββββββββ>
Sofort Daten sendenPaketverlust
TCP (automatische Wiederholung):
Sender: [1] [2] [3] [4]
β
Verloren
β
EmpfΓ€nger erhΓ€lt: [1] [3] [4]
β
EmpfΓ€nger: ACK fΓΌr 1, wartet auf 2
β
Sender: Sendet [2] erneut
β
EmpfΓ€nger: [1] [2] [3] [4] - vollstΓ€ndig
UDP (keine Wiederholung):
Sender: [1] [2] [3] [4]
β
Verloren
β
EmpfΓ€nger erhΓ€lt: [1] [3] [4] - Paket 2 fehlt dauerhaftWann TCP verwenden?
DatenintegritΓ€t kritisch
- Dateitransfer: Jedes Byte muss ankommen
- E-Mail: VollstΓ€ndige Nachrichten
- Webanwendungen: Korrekte Darstellung
- Datenbanken: Transaktionssicherheit
- API-Aufrufe: ZuverlΓ€ssige Kommunikation
Beispiel: HTTP
Browser Server
| |
|ββ TCP Handshake ββββββ>β
β<ββββββββββββββββββββββββ
|ββ GET /index.html ββββ>β
β<ββ 200 OK + HTML βββββββ
|ββ TCP Close ββββββββββ>βWann UDP verwenden?
Geschwindigkeit wichtiger als VollstΓ€ndigkeit
- Live-Streaming: Verlorenes Frame = Skip (kein Neuanfordern)
- Online-Gaming: Aktuelle Position wichtiger als alte
- VoIP: Kurze Unterbrechung besser als VerzΓΆgerung
- DNS: Kleine Anfragen, schnelle Antwort
Beispiel: DNS
Client DNS-Server
| |
|ββ "example.com?" βββββ>β UDP, Port 53
β<ββ "192.0.2.1" βββββββββ Sofortige Antwort
| |
Kein Handshake = schneller
Bei Verlust: Client fragt erneutBeispiel: Online-Gaming
Client Game-Server
| |
|ββ Position X=10 βββββ>β
|ββ Position X=11 βββββ>β β Verloren (egal)
|ββ Position X=12 βββββ>β
| |
Alte Position ist irrelevant, aktuelle zΓ€hltHybride AnsΓ€tze
QUIC (HTTP/3)
- UDP-basiert
- Aber mit ZuverlΓ€ssigkeit in Anwendungsschicht
- Schnellerer Handshake als TCP
- Bessere Performance bei Paketverlusten
Traditionell: HTTP/2 β TLS β TCP
Neu (HTTP/3): HTTP/3 β QUIC (UDP)
β
ZuverlΓ€ssigkeit + VerschlΓΌsselungGaming mit Reliability Layer
Viele Spiele nutzen UDP mit eigenem Protokoll:
- Wichtige Daten (Login, Kaufen) β ZuverlΓ€ssig (mit ACK)
- Bewegungsdaten β UnzuverlΓ€ssig (aktuellste gewinnt)
Ports und Firewalls
TCP-Ports ΓΆffnen
# UFW
ufw allow 80/tcp
ufw allow 443/tcp
# iptables
iptables -A INPUT -p tcp --dport 80 -j ACCEPTUDP-Ports ΓΆffnen
# UFW
ufw allow 53/udp
ufw allow 51820/udp
# iptables
iptables -A INPUT -p udp --dport 53 -j ACCEPTZusammenfassung
| Kriterium | TCP | UDP | |-----------|-----|-----| | Nutzen wenn | Daten vollstΓ€ndig ankommen mΓΌssen | Geschwindigkeit wichtiger | | Beispiele | Web, E-Mail, FTP, SSH | DNS, VoIP, Gaming, Streaming | | Verbindung | Ja (Handshake) | Nein | | ZuverlΓ€ssig | Ja | Nein | | Reihenfolge | Garantiert | Nicht garantiert | | Overhead | 20+ Bytes | 8 Bytes | | Latenz | HΓΆher | Niedriger |
Fazit
TCP und UDP haben beide ihre Berechtigung. TCP ist das Arbeitstier des Internets fΓΌr alles, was zuverlΓ€ssig sein muss. UDP glΓ€nzt bei Echtzeitanwendungen, wo Geschwindigkeit wichtiger ist als VollstΓ€ndigkeit. Moderne Protokolle wie QUIC kombinieren die Vorteile beider Welten. Die Wahl hΓ€ngt von der Anwendung ab: DatenintegritΓ€t β TCP, Echtzeit β UDP.