![Page 1: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/1.jpg)
1
Die Transportprotokolle:
Transmission Control Protocol (TCP) User Datagram Protocol (UDP)Die Socket-Schnittstelle
![Page 2: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/2.jpg)
2
Rolle der Transportschicht im OSI-Referenzmodell
TCP-SegmenteTransport-Dienst
Schicht 4
Schichten1..3
Netzwerk-Dienst
Transport-Protokoll
Anforderungen des AnwendungsprozessesSchichten
5..7
![Page 3: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/3.jpg)
3
Einführung in TCP
• TCP implementiert ein verbindungsorientiertes,zuverlässiges Transport- Protokoll, aufbauend auf demIP-Dienst.
Physikalische Subnetze (Hardware, Firmware)
Internet Protocol (IP)
Transmission ControlProtocol (TCP)
User Datagram Protocol(UDP)
E-mail FileTransfer
WorldWideWeb
VerteilteSpiele
Gebäude-Steuerung
Dienst-schnittstellen
![Page 4: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/4.jpg)
4
Funktionen eines Transportdienstes
• Verbindungsaufbau (falls verbindungsorientiert)• Datentransfer
– normale Daten / Daten mit Priorität,Unterbrechungssignale
– strom- oder paketorientiert– Fehlerbehandlung, Flusssteuerung
• Verbindungsabbruch– durch den Benutzer– durch den Diensterbringer, d.h. die Transportschicht
• Adressierung des "Benutzers" der Transportschicht, d.h. desAnwendungsprozesses
• Managementfunktionen• Programmierschnittstelle (API)
![Page 5: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/5.jpg)
5
Adressierung von Anwendungsprozessen: Beispiel TCP/IP - Portnummern
Rechner
Internet
Router
PhysikalischesNetz
IP3
4 UDP
Proto=17
AP1 AP2 AP3
371245 56 Port-
Nummern
![Page 6: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/6.jpg)
6
Verbindungserstellung (socket-Schnittstelle)
socket()
bind()
listen()
accept()
read()
write()
socket()
connect()
write()
read()
Server(verbindungsorientiert)
Client
Blockiert
Verbindung erstellt
Daten (Anfor-derung)
Daten (Antwort)
Bearbeitung der Anforderung
![Page 7: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/7.jpg)
7
Zuweisung von Portnummern
• Passive Seite: Server bindet sich an einen bestimmten Port (bind())
• Aktive Seite: Client sendet Anfrage oder erstellt eine Verbindung zum Port des Servers (connect()).
• Portnummern können Anwendungsdiensten statisch zugeordnet sein: Eintrag in einer Datenbank, die den durch Server erbrachten Diensten bestimmte Ports zuordnet (/etc/services)
• Dynamische Zuordnung via Verzeichnisdienst, Nameserver (lokal oder verteilt) möglich.
![Page 8: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/8.jpg)
8
Koordination der global zugeordneten Ports
• Internet Assigned Numbers Authority (IANA):Zuständig für Vergabe von Konstanten in TCP/ IP- Protokollen (port numbers, protocol numbers, ...)
• Bereich 0.. 1023: Für globale "well known" ports,kontrolliert von der IANA
• Bereich 1024 .. 65535: Frei für dynamische Allozierung durch Prozesse oder für statische Allozierung mit lokaler Bedeutung– Registrierung durch IANA ist optional
• Aktuelle globale / statische Zuordnungen:ftp://ftp.isi.edu/in-notes/iana/assignments
![Page 9: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/9.jpg)
9
Well-known port numbers:/etc/services (Auszug)
# Note that it is presently the policy of IANA to assign a single well-known# port number for both TCP and UDP; hence, most entries here have two entries# even if the protocol doesn't support UDP operations.# Updated from RFC 1700, “Assigned Numbers”
echo 7/tcpecho 7/udpdiscard 9/tcp sink nulldiscard 9/udp sink nullftp-data 20/tcpftp 21/tcptelnet 23/tcpsmtp 25/tcp mailtime 37/tcp timservertime 37/udp timservernameserver 42/tcp name # IEN 116whois 43/tcp nicnamedomain 53/tcp nameserver # name-domain serverdomain 53/udp nameserver
![Page 10: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/10.jpg)
10
Typischer Ablauf bei dynamisch zugeteilten Ports
1. Server-Prozess signalisiert Bereitschaft, eine Kommunikationsbeziehung entgegenzunehmen; erhält mit bind() seinen Port zugeteilt.
2. Server-Prozess trägt sich mit seinem Namen unddem Port in das Verzeichnis ein.
3. Client sucht im Verzeichnis nach dem Namendes Server-Prozesses und erhält dessen Port.
4. Client erstellt eine Verbindung (TCP) oder sendet ein Anfrage-Paket (UDP) zum Server-Prozess (connect()).
5. Server nimmt Verbindung an (TCP) oder sendet ein Antwortpaket (UDP).
![Page 11: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/11.jpg)
11
Eigenschaften desTransmission Control Protocol (TCP)
• verbindungsorientiert• Vollduplex-Verbindung• stellt eine “byte pipe” zur Verfügung -
unstrukturierter Datenstrom• Sliding Window-Protokoll• Folgenummern sind Bytenummern• Maximale Fenstergrösse 216 Bytes• Variable Grösse des Sendefensters bestimmt
durch das Maximum von:– Angabe des Empfängers (receiver window size)– Congestion window size, abhängig von einer lokalen
Schätzung der Netzbelastung -> “Slow Start” Algorithmus
![Page 12: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/12.jpg)
12
Basismechanismen von TCP
• Segmente variable Länger; maximale Segmentgrösse bei der Verbindungserstellungfestgelegt.
• Jedes Segment hat eine Folgenummer, die seine Position im Datenstrom in Bytes spezifiziert.
• Abgesendete Segmente müssen innerhalb einer bestimmten Zeit bestätigt werden (adaptiv geschätzteRound Trip Time).
• Bestätigungen werden verzögert gesendet (ca. 200 ms)
• Jedes Segment hat eine Ende-zu-Ende-Prüfsumme; fehlerhaft empfangene Segmente werden ignoriert.
• Der Empfänger ordnet empfangene Segmente entsprechend ihrer Folgenummer; Duplikate werden ignoriert.
![Page 13: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/13.jpg)
13
TCP-Segmentformat
0 4 10 16 24 31
Port des Senders Port des Empfängers
Sequenznummer im Bytestrom des Senders
Bestätigungsnummer (ACK in Gegenrichtung)
HLEN Reserviert Code Bits Grösse des Emfängerfensters
Prüfnummer (auch über Daten) Dringlichkeitszeiger
Optionen (falls vorhanden) "Padding"
Daten
…
• Code Bits: URG, ACK, PSH, RST, SYN, FIN• Dringlichkeitszeiger: zeigt auf das Ende der
dringenden Daten im TCP-Datenfeld.
![Page 14: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/14.jpg)
14
Verbindungsaufbau
• Aktives Öffnen einer Verbindung (SYN)• Passive Seite nimmt eine Verbindung auf einer
bestimmten Port-Nummer entgegen• Die initialen Sequenznummern werden auf jeder
Seite zufällig gewählt und bestätigt.• 3-fach-Handshake (nötig wegen des unzuverlässigen
Dienstes von IP):
SendeSYN seq=x Empf. SYN
Sende SYNseq=y, ACK x+1
Empf. SYN + ACKSende ACK y+1
Empf. ACK
![Page 15: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/15.jpg)
15
Verbindungsaufbau, zwei Fehlerszenarien
altes Duplikat
SYN, Seq=x
RST, Seq=y+1
SYN, Seq=y, Ack=x+1
altes Duplikat
SYN, Seq=x
RST, Seq=y+1
SYN, Seq=y, Ack=x+1
altes DuplikatData, Seq=x+1, Ack=z wirdver-worfen
![Page 16: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/16.jpg)
16
Segmente, Datenströme und Sequenznummern
• TCP betrachtet einen Datenstrom als Sequenz von Bytes, die für die Übertragung in TCP-Segmente eingeteilt werden.Jedes Segment wird dann in der Regel auf ein IP-Paket abgebildet. (Grösse eines Segmentes bei lokaler Übertragung gemäss physikalischem Netz, sonst 536 Bytes)
• TCP verwendet ein "sliding window" Protokoll, um möglichst effizient Daten zu übertragen, und Flusskontrolle zu ermöglichen. Bei einer Vollduplex-Verbindung müssen insgesamt 4 Fenster verwaltet werden.
1 2 3 4 5 6 7 8 9 10 11
![Page 17: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/17.jpg)
17
Variable Fenstergrössen• Die Fenstergrösse im TCP "sliding window" Protokoll kann
variiert, d.h. an den "Füllstand" des Netzes bzw. desEmpfängers angepasst, werden.
• Flusssteuerung– Jedes Bestätigungspaket enthält einen "window advertisement"
Wert, in dem der Empfänger angibt, für wieviele weitere Pakete er noch freie Kapazität hat (das Fenster kann also grösser oder kleiner werden).
• Verkehrssteuerung– Jacobsen's "slow start" Algorithmus variiert die Grösse des
Sendefensters, um die Senderate an die Netzbelastung anzupassen (s. Folie 18).
![Page 18: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/18.jpg)
18
Abbau einer TCP-Verbindung
• Aktive Seite (links) schliesst Verbindung mit FIN-Flag• Neue Daten werden nicht mehr übertragen, von rechts
ankommende Daten werden jedoch noch bestätigt.• 4-fach-Handshake; jede Seite wird separat beendet
(TCP half close)
SendeFIN seq=x
Empf. ACK
Empf. FINSende ACK x+1
Applikation informieren
Empf. FIN + ACKSende ACK y+1
Sende FIN, ACK x+1
Empf. ACK
![Page 19: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/19.jpg)
19
Der endliche Automatvon TCP
closed
listen
synreceiv.
finwait 1
finwait 2
estab-lished
closing
timedwait
synsent
closewait
lastack
timeout after 2segment lifetimes
begin
anything / reset
passive open closeactive open / syn
send / synsyn / syn + ack
resetsyn / syn + ack
ack
close / fin
close / fin
fin / ack
ack / ack /
fin / ack
fin-ack / ack
ack /
close /
timeout /reset
fin / ack
close / fin
syn + ack / ack
Client
aus : D. Comer: Internetworking with TCP/IP, Volume 1, Prentice Hall, 1995, p. 220
![Page 20: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/20.jpg)
20
Der endliche Automatvon TCP
aus : D. Comer: Internetworking with TCP/IP, Volume 1, Prentice Hall, 1995, p. 220
closed
listen
synreceiv.
finwait 1
finwait 2
estab-lished
closing
timedwait
synsent
closewait
lastack
timeout after 2segment lifetimes
begin
anything / reset
passive open closeactive open / syn
send / synsyn / syn + ack
resetsyn / syn + ack
ack
close / fin
close / fin
fin / ack
ack / ack /
fin / ack
fin-ack / ack
ack /
close /
timeout /reset
fin / ack
close / fin
syn + ack / ack
Server
![Page 21: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/21.jpg)
21
Slow Start Algorithmus
0
5
10
15
20
0 5 10 15 20
ssthresh
Exponentiell ansteigende Fenstergrösse
Linear ansteigende Fenstergrössse
Anzahl round trip times
con
ges
tio
n w
ind
ow
siz
e(i
n S
egm
ente
n)timeout
![Page 22: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/22.jpg)
22
User Datagram Protocol (UDP)
Nutzdaten (gerade Anzahl von Oktetten)
UDP Port # des Absenders UDP Port # des Empfängers
Länge des Datengramms UDP-Prüfsumme
0 15 16 31
Prüfsummenberechnung schliesst Pseudo-Header mit ein (gilt für UDP und TCP).
![Page 23: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/23.jpg)
23
Die Socket-Schnittstelle
• De-facto-Standard für TCP/IP Programmierschnittstelle
• Zugang zu TCP, UDP und (eingeschränkt) IP• Unterstützung verschiedener Protokolle
– Protocol familiy– Address familiy
• Abstraktion für Kommunikationsendpunkte– sockets
• … mit verschiedenen Kommunikationseigenschaften– socket types (stream socket, datagram socket)
• Benennung/Adressierung vonKommunikationsendpunkten– name binding
![Page 24: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/24.jpg)
24
Socket-Datenstrukturen für die Adressierung
family Adresse (variabel lang)
AF-INET Port
AF-UNIX UNIX-Pfadname
IP-Adresse
allgemein:
für TCP/IP:
Für UNIX-Filesystem:
![Page 25: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/25.jpg)
25
Verbindungslose Kommunikation über Sockets
Server Client
socket()
bind()
recvfrom()
sendto()
(blockiert)
socket()
bind()
sendto()
recvfrom()
(blockiert)
(verarbeitet Anfrage)
![Page 26: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/26.jpg)
26
Verbindungserstellung
socket()
bind()
listen()
accept()
read()
write()
socket()
connect()
write()
read()
Server(verbindungsorientiert)
Client
Blockiert
Verbindung erstellt
Daten (Anfor-derung)
Daten (Antwort)
Bearbeitung der Anforderung
![Page 27: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/27.jpg)
27
Verbindungen undVerbindungsendpunkte
Eine TCP-Verbindung wird durch ein Paar von Adressenund Port-Nummern identifiziert (Verbindungsendpunkte):
• IP-Adresse und Port-Nummer Host A• IP-Adresse und Port-Nummer Host B
Jede Verbindung wird durch ein Paar vonVerbindungsendpunkten eindeutig identifiziert -> mehrere Verbindung zwischen den gleichen Hosts sind dadurch gleichzeitig möglich.
![Page 28: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/28.jpg)
28
Identifikation von Verbindungen
Host A(Client-Maschine)
Host B(Server-Maschine)
Daemon
(tcp, *, 23)
Server 1
(tcp, B, 23)
Server 2
(tcp, B, 23)
Client 1
(tcp, A, 1055)
Client 2
(tcp, A, 1056)
(tcp, A, 1055, B, 23)
(tcp, A, 1056, B, 23)
fork
![Page 29: Die Transportprotokolle: Transmission Control Protocol ...people.ee.ethz.ch/~plattner/Kursunterlagen/TCP-IP/Transportprotoko... · Transmission Control Protocol (TCP) User Datagram](https://reader033.vdocuments.net/reader033/viewer/2022051309/5cad922288c9933f078d7b2c/html5/thumbnails/29.jpg)
29
Weiterführende Literatur
• Postel, Jon, "Transmission Control Protocol - DARPA Internet Program Protocol Specification", RFC 793, Network Information Center, SRI International, Menlo Park, Calif., September 1981
• W. Richard Stevens, "UNIX Network Programming", Prentice Hall, Engelwood Cliffs, NJ, 1990, ISBN 0-13-949876-1
• "man 4 tcp"