Grundlagen TCP und UDP


TCP und UDP

Transportschicht
– IP: Vermittlungsschicht
– – Nicht zugänglich für Anwendungen!
– Transportschicht als Schnittstelle zum Netz
– – bietet verbindungsorientierten, verlässlichen Dienst
– – bietet verbindungslosen, nicht verlässlichen Dienst
– – Abstraktion von Details der Kommunikation
Ende-zu-Ende-Sicht: Die Transportschicht erlaubt den höheren Schichten, die gesamte Routingkomplexität zu ignorieren. Es gibt nur ein Ziel, den gewählten Empfänger. Die Router sind „unsichtbar“.

UDP

– User Datagram Protocol (UDP) [RFC 768]
– – Einfachstes Transportprotokoll: verbindungsloser Transportdienst
– – Nicht verlässlich: Pakete können verloren gehen
– – Überlässt der Anwendung die Fehlerbehandlung und Flusssteuerung
– – Unterstützt Multicast und Broadcast (mit IP Multicast / Broadcast)

IP Datagramm

IP Datagramm

Aufbau eines UDP-Pakets

UDP-Pakets

UDP-Pakets

UDP-Adresse: <IP-Adresse, UDP-Portnummer>
– Sender und Empfänger so zu identifizieren: Jeder Port kann nur von einem Prozess (einer Anwendung) zur gleichen Zeit verwendet werden.
– auch „UDP-Socket“ genannt

UDP

– Anwendungen
– – DNS (Domain Name System)
– – – Daten passen meist in ein Datagramm. Verwendet auch TCP.
– – NFS (Network File System)
– – – Performanzgründe, heutige Versionen verwenden TCP
– – SNMP (Simple Network Management Protocol)
– – – Möglichst geringe Netzlast erzeugen
– – RIP (Routing Information Protocol, dynamische Routingtabellenanpassung)
– – – Ebenfalls: Kurze Nachrichten, Netzlast minimieren
– – Multimedia-Streaming
– – – geringer Aufwand, keine Notwendigkeit für Verlässlichkeit

TCP

– Transmission Control Protocol (TCP) [RFC 793, 1122, 1323]
– Bereitstellung eines zuverlässigen Ende-zu-Ende-Bytestroms in einem unzuverlässigen Netz (verbindungsorientierter Transportdienst)
– Verlässlicher Datenstrom
– – Fehlerfrei, keine Verluste, keine Duplikate, Reihenfolge intakt
– – reiner Bytestrom, d.h., Nachrichtengrenzen werden nicht erhalten, z.B. send(170 Bytes) + send(230) = receive(400)
– – Teilt Anwendungsdaten in Blöcke (Segmente) <=64 KiBytes (meistens ca. 1500 Bytes); jedes Segment wird als ein IP-Datagramm geschickt
– TCP-Adresse = <IP-Adresse, TCP-Portnummer> („TCP-Socket“)

IP Datagramm TCP

IP Datagramm TCP

Aufbau eines TCP-Segments

TCP-Segments

TCP-Segments

Verlässliche Kommunikation

– Segmente werden bestätigt
– – Empfänger schickt Bestätigung (ACK) mit Folgenummer an den Absender
– – Es wird nur bestätigt, wenn alle bisherigen Segmente eingetroffen sind
– Beispiel: sechs Segmente, der Reihe nach verschickt (1, 2, 3, 4, 5, 6), Paket 3 und 4 verspäten sich in der Ankunft

Verlässliche Kommunikation

Verlässliche Kommunikation

TCP- und UDP-Dienste

– Je Port kann nur ein Dienst laufen
– Aber: Dienst „von außen“ nicht identifizierbar
– – Man müsste sich verbinden, um zu erfahren, welcher Dienst an diesem Port läuft
– – Daher wird für bestimmte Ports („Well-Known“-Ports, [ RFC 1700 ]) ein zugehöriger Dienst angenommen.

TCP UDP
– FTP: 20 und 2 (Dateitransfer)
– SSH: 22 (Anmeldung)
– SMTP: 25 (E-Mail)
– HTTP: 80 (WWW)
– DNS: 53 (Domänennamen)
– NFS: 111 (Netzdateisystem)
– SNMP: 161 und 162 (Management)

Socket

– TCP / UDP – Programmierschnittstelle in UNIX
– Socket-Abstraktion ( = Steckdose )
– – angelehnt an das Datei-Modell der UNIX-Ein- und -Ausgabe
– – erstmals in BSD UNIX, heute allgemein gebräuchlich
– Erste Implementierung in C, heute Implementierungen für verschiedene Programmiersprachen (z.B. C++, Java)
– TCP: Server-Socket vs. Client-Socket
– – Server-Socket: wartet passiv auf Verbindungsanfrage auf einem Port; eigentliche Verbindung läuft über neu vergebenen Port
– – Client-Socket stellt aktiv Verbindungsanfrage an einen Port