Transportprotokolle Setzen auf Internet-Protokollen (Rechner-zu-Rechner) auf Unterscheiden Kommunikationskanäle innerhalb eines Rechners ICMP - Internet Control Message Protocol TCP - Transmission Control Protocol UDP - User Datagram Protocol IGMP - Internet Group Management Protocol Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-1 TCP - Transmission Control Protocol TCP Port Dienst Beschreibung 7 echo Echo für Zeichen 9 discard verwirft alles 13 daytime Zeitangabe 21 ftp Dateitransfer 23 telnet Virtuelles Terminal 25 smtp E-mail-Transfer 53 domain Domain Name Service (DNS) 79 finger Benutzerinformationen 80 http World Wide Web (WWW) 110 pop3 Post Office Protocol (POP) 111 Sunrpc Remote Procedure Call (RPC) 119 nntp Network News Transfer Protocol 512 rexec Remote command execution 513 rlogin Remote login 514 rsh Remote shell 2049 NFS Network File System 6000+ X X Window System Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-2 1
UDP - User Datagram Protocol UDP Port Dienst Beschreibung 7 echo Echo für Zeichen 9 discard verwirft alles 13 daytime Zeitangabe 53 domain Domain Name Service (DNS) 69 tftp Trivial File Transfer Protocol 111 Sunrpc Remote Procedure Call (RPC) 161 Snmp Simple Network Management Protocol 513 who Wer ist eingeloggt? 517 talk 520 route Routing Information Protocol (RIP) 2049 NFS Network File System Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-3 inetd.conf #ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd #telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd name dgram udp wait root /usr/sbin/in.tnamed in.tnamed shell stream tcp nowait root /usr/sbin/in.rshd in.rshd login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind exec stream tcp nowait root /usr/sbin/in.rexecd in.rexecd comsat dgram udp wait root /usr/sbin/in.comsat in.comsat talk dgram udp wait root /usr/sbin/in.talkd in.talkd #uucp stream tcp nowait root /usr/sbin/in.uucpd in.uucpd tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd #systat stream tcp nowait root /usr/bin/ps ps -ef #time stream tcp nowait root internal #time dgram udp wait root internal echo stream tcp nowait root internal #echo dgram udp wait root internal #netstat stream tcp nowait root /usr/bin/netstat netstat -f inet #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-4 2
UDP - User Datagram Protocol Verbindungslos Zuverlässigkeit eher gering Schnell z.b: Transportprotokoll für Network File System (NFS) Video-Datenströme Möglichkeit des Multiplexens (Portnummern) Prüfsumme für das gesamte UDP-Datagramm aber keine Quittierung im Fehlerfall verwerfen Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-5 UDP Header 1 2 3 4 5 6 7 8 1 2 3 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 Header Source Port Number UDP Length Destination Port Number UDP Checksum (optional) 8 Byte Daten Data (if any) Portnummer des Absenders ist optional (Voreinstellung: 0) Prüfsumme ist optional (Voreinstellung: 0) 0 ~64 KByte DieLänge umfasst UDP-Header and Daten Die Prüfsumme beinhaltet Daten, UDP-Header und Teile des IP-Headers Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-6 3
UDP Checksum Zusätzliche Einbeziehung eines Pseudo-Headers Optionales Anhängen eines Pad-Byte um gerade Bytezahl zu erhalten Pseudo-Header 1 2 3 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 2 00000000 Protocol Source IP Address Destination IP Address UDP Length 12 Byte Header Source Port Number UDP Length Destination Port Number UDP Checksum (optional) 8 Byte Daten 00000000 (pad) Data 0 ~64 KByte Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-7 TCP - Transmission Control Protocol Verbindungsorientiert vollduplex Punkt-zu-Punkt-Kommunikation kein Broadcast kein Multicast Zuverlässig Fehlererkennung und Wiederholung der Übertragung im Fehlerfall Kontrolle und, wenn nötig, Wiederherstellung der Reihenfolge Möglichkeit des Multiplexens (Portnummern) Quittierte Prüfsumme für das gesamte TCP-Datagramm Flußkontrolle byte stream service Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-8 4
TCP Header 1 2 3 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 2 Source Port Number Destination Port Number TCP-Header Header Length Reserved U R G Sequence Number Acknowledgement Number A C K P S H R S T S Y N F I N Window Size 20 Byte TCP Checksum Urgent Pointer Opt. Daten Options (if any, z.b.: MSS - Maximum Segment Size) Data (if any) 0 ~64 KByte Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-9 TCP Header Flags Falls die jeweilige Flagge gesetzt ist, gilt: URG - Urgent Pointer ist gültig ACK - Acknowledgement Number ist gültig PSH (push) - Schnellstmögliche Zustellung erwünscht RST - Zurücksetzen der Verbindung SYN - Synchronisation zum Verbindungsaufbau FIN - Der Sender beendet das Senden von Daten (Halbschließung) Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-10 5
TCP Verbindungsaufbau Rechner A Rechner B segment 1 SYN 1415000000: 1415000000 (0) <MSS 1024> segment 3 SYN 2823000000 : 2823000000(0) ACK 1415000001, <MSS 1024> segment 2 segment 4 segment 5 segment 6 1415000001 : 1415000801(800) 1415000801 : 1415000841(40) PSH 1415000841 : 1415000844(3) ACK 1415000844 segment 7 Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-11 TCP Verbindungsabbau Rechner A Rechner B segment 8 FIN 1415333333: 1415333333 (0) segment 12 ACK 1415333334 2823000001 : 2823000003 (2) ACK 1415333334 PSH 2823000003 : 2823000803 (800) ACK 1415333334 ACK 2823000803 segment 9 segment 10 segment 11 segment 14 FIN 2823666666 : 2823666666(0) ACK 1415333334 ACK 2823666667 segment 13 Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-12 6
TCP Verbindungen Aufbau Timeout nach 75 Sekunden bis dahin: 3 SYN-Segmente gesendet Abbau Halbabbau je Datenrichtung unabhängig voneinander meist werden beide Richtungen unmittelbar hintereinander abgebaut, z.b. in Java MSS - Maximum Segment Size z.b. 1460 Byte Angabe exklusive Header (uneinheitlicher Gebrauch des Begriffs Segment ) IP-Paket der Größe 1500 Byte Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-13 TCP Datentransfer Zerlegung in Segmente byte stream service Nachrichtengröße nicht direkt vom Benutzer beeinflußbar anders als bei UDP Nagle-Algorithmus maximal eine ausstehende Bestätigung bei Schließung eines Segments Wird bei einigen Anwendungen bewußt abgeschaltet Verzögerte Bestätigung Bestätigung wird um 50-200 ms verzögert, um auf eine eventuelle Antwort der Anwendung zu warten Erfolgt die Antwort innerhalb der Zeit, werden Antwort und Bestätigung kombiniert. Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-14 7
Flußkontrolle mit gleitendem Fenster Datenempfänger bietet Datenfenster an. Senden eines Pakets verkleinert nutzbaren Bereich dss Fensters. Signalisierung der abgeschlossenen Verarbeitung von Paketen verschiebt (vergrößert) das Fenster. Fenster: 6 Pakete (angeboten vom Empfänger) 1 2 3 4 5 6 7 8 9 10 gesendete Pakete nutzbares Fenster können sofort gesendet werden können erst gesendet werden, wenn Fenster verschoben wird Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-15 Gleitendes Fenster: langsamer Empfänger Rechner A Rechner B segment 1 segment 3 segment 4 segment 5 segment 6 segment 7 segment 10 SYN 1415000000: 1415000000 (0) <MSS 1024> SYN 2823000000 : 2823000000(0) ACK 1415000001, WIN 4096, <MSS 1024> 1415000001 : 1415001025(1024), 1415001025 : 1415002049(1024) 1415002049 : 1415003073(1024) 1415003073 : 1415004097(1024) ACK 1415004097, WIN 0 ACK 1415004097, WIN 4096 1415004097 : 1415005121(1024) segment 2 segment 8 segment 9 Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-16 8
Rechner A segment 1 segment 3 segment 4 segment 5 Gleitendes Fenster: schneller Empfänger SYN 1415000000: 1415000000 (0) <MSS 1024> SYN 2823000000 : 2823000000(0) ACK 1415000001, WIN 4096, <MSS 1024> 1415000001 : 1415001025(1024), 1415001025 : 1415002049(1024) Rechner B segment 2 ACK 1415002049, WIN 3072segment 6 segment 7 segment 8 1415002049 : 1415003073(1024) 1415003073 : 1415004097(1024) ACK 1415004097, WIN 4096 segment 9 Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-17 Flußkontrolle: langsamer Start Congestion Window Startwert: Angebotene Maximum Segment Size der Empfängers Nach Bestätigung der des letzten Bytes des Congestion Windows, wird es mit dem doppelten Wert neu initialisiert (exponentielles Wachstum) Der Sender wird beschränkt durch Congestion Window und das gleitende Fenster zur Flußkontrolle. Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-18 9
TCP Timer TCP verwendet 4 Timer für jede etablierte Verbindung: Retransmission Timer Wiederholte Übertragung verlorener Pakete Persist Timer Anfrage nach verlorengegangener Bestätigung Keepalive Timer (optional, umstritten) keepalive probe nach 2 Stunden 2MSL Timer 2 x Maximum Segment Lifetime: Halten der Verbindung nach einem FIN-Segment Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-19 Retransmission Timer Retransmission Timer: exponential backoff: Paketwiederholung nach Timerablauf Die Länge des Retransmission Timers dynamisch angepasst an aktuelle Roundtrip Time Messung und Schätzung der Roundtrip Time und ihrer Schwankung Fast Retransmit Paketwiederholung nach mehreren identischen Bestätigungen Fast Recovery nach mehreren identischen Wiederholungen: nachdem ein verlorengegangenes Paket wiederholt worden ist, werden weiter aktuelle Pakete gesendet Repacketization Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-20 10
Beobachtung von TCP-Verbindungen Programm netstat TCP Local Address Remote Address Swind Send-Q Rwind Recv-Q State -------------------- -------------------- ----- ------ ----- ------ ------- *.* *.* 0 0 0 0 IDLE *.sunrpc *.* 0 0 0 0 LISTEN *.32771 *.* 0 0 0 0 LISTEN *.domain *.* 0 0 0 0 LISTEN *.32772 *.* 0 0 0 0 LISTEN *.shell *.* 0 0 0 0 LISTEN *.login *.* 0 0 0 0 LISTEN *.exec *.* 0 0 0 0 LISTEN *.finger *.* 0 0 0 0 LISTEN... elfe.nfsd landau.742 8760 0 8760 0 ESTABLISHED elfe.32802 elfix11.6000 4096 0 8760 0 ESTABLISHED elfe.32803 elfix11.6000 4096 0 8760 0 ESTABLISHED elfe.fs elfix11.1025 4092 0 8760 0 ESTABLISHED elfe.exec pc152.1234 8750 0 8760 0 CLOSE_WAIT elfe.nfsd che.700 8760 0 8760 0 ESTABLISHED elfe.916 young.nfsd 8760 0 8760 0 TIME_WAIT Vorlesung Rechnernetze Institut für Informatik Freie Universität Berlin 1-21 11