Überblick. Daten- kommunikation



Ähnliche Dokumente
15 Transportschicht (Schicht 4)

2.3 Applikationen. Protokolle: TCP/IP. Telnet, FTP, Rlogin. Carsten Köhn

Vorab: Überblick TCP. Grundeigenschaften Punkt-zu-Punkt-Verbindung Streaming-Schnittstelle

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Transmission Control Protocol (TCP)

TCP/UDP. Transport Layer

Enigmail Konfiguration

Routing im Internet Wie findet ein IP Paket den Weg zum Zielrechner?

Netzwerke. Netzwerk - Programmierung. Alexander Sczyrba. Madis Rumming.

TCP SYN Flood - Attack. Beschreibung Auswirkungen Zuordnung zu Gefährdungskategorie und Attacken-Art Gegenmaßnahmen Quellen

Lehrveranstaltung Rechnernetze Einschub für das Labor

Kontrollfragen: Internet

Netzwerk-Programmierung. Netzwerke.

Anbindung des eibport an das Internet

1 topologisches Sortieren

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

SIMULATION. example Data Transfer (XDT) Protocol. entwickelt im Rahmen der Bachelor-Arbeit. von. Tobias Weimann. User-Manual

Client-Server mit Socket und API von Berkeley

Vorlesung SS 2001: Sicherheit in offenen Netzen

TCP/IP-Protokollfamilie

Beispiel TCP-/IP-Datenübertragung

DNÜ-Tutorium HS Niederrhein, WS 2014/2015. Probeklausur

KN Das Internet

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier.

WLAN Konfiguration. Michael Bukreus Seite 1

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Vorlesung: Netzwerke (TK) WS 2009/10 Kapitel 5 Ende-zu-Ende-Protokolle Session 15

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

MODBUS/TCP und Beckhoff Steuerelemente

Konfiguration der tiptel Yeastar MyPBX IP-Telefonanlagen mit Peoplefone Business SIP Trunk

RARP, BOOTP, DHCP Wie ermittelt ein Client seine IP-Adresse?

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

Vorab: Überblick TCP. Grundeigenschaften Punkt-zu-Punkt-Verbindung Streaming-Schnittstelle

Einführung in die Netzwerktechnik

ICMP Internet Control Message Protocol. Michael Ziegler

Einleitung Sniffing, Analyzing, Scanning Scanning. Netzwerke. Bierfert, Feresst, Günther, Schuster. 21. März 2006

Grundlagen der Rechnernetze. Internetworking

Benutzerhandbuch - Elterliche Kontrolle

Guide DynDNS und Portforwarding

Grundkurs Routing im Internet mit Übungen

NODELOCKED LIZENZ generieren (ab ST4)

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Erstellen von x-y-diagrammen in OpenOffice.calc

Transportschicht. Einleitung Transmission Control Protocol, RFC793. Transportschicht

TCP. Transmission Control Protocol

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Übersicht. Was ist FTP? Übertragungsmodi. Sicherheit. Öffentliche FTP-Server. FTP-Software

Einführung in IP, ARP, Routing. Wap WS02/03 Ploner, Zaunbauer

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Übung - Konfigurieren einer Windows 7-Firewall

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

ecaros2 - Accountmanager

R-ADSL2+ Einrichthinweise unter Windows 98/ME

Installation OMNIKEY 3121 USB

Modul N5 - Routing. Informatik erleben. Anwendung: http, smtp. Transport: TCP, UDP. Segment. Vermittlung: IP. Datagramm. Sicherung: Ethernet, PPP

SMS/ MMS Multimedia Center

SolarWinds Engineer s Toolset

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Software-Engineering SS03. Zustandsautomat

Anleitung Postfachsystem Inhalt

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Multicast Security Group Key Management Architecture (MSEC GKMArch)

Clustering (hierarchische Algorithmen)

38 kbit/sek * = 22,8 kbit/sek 100

Windows Server 2012 RC2 konfigurieren

Online-Publishing mit HTML und CSS für Einsteigerinnen

STORES2. Operation Manual Version Warenretoure mit Zustimmung des Headquarter

Grundlagen der Theoretischen Informatik, SoSe 2008

Primzahlen und RSA-Verschlüsselung

C.M.I. Control and Monitoring Interface. Zusatzanleitung: Datentransfer mit CAN over Ethernet (COE) Version 1.08

SIMP 1.01 Protokollspezifikation (Mindestanforderung)

Uni-Firewall. Absicherung des Überganges vom Hochschulnetz zum Internet am Wingate (Helmut Celina)

ISA Server 2004 Erstellen einer Webverkettung (Proxy-Chain) - Von Marc Grote

OP-LOG

Inhaltserzeichnis. Datenübernahme

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

Voraussetzungen für die Nutzung der Format Rechenzentrumslösung (Hosting)

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

1 Mit einem Convision Videoserver über DSL oder ISDN Router ins Internet

Kommunikations-Parameter

Behörde für Bildung und Sport Abitur 2008 Lehrermaterialien zum Leistungskurs Mathematik

Die Größe von Flächen vergleichen

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Man liest sich: POP3/IMAP

Modul 5: TCP-Flusskontrolle

Print2CAD 2017, 8th Generation. Netzwerkversionen

Virtuelle COM-Schnittstelle umbenennen

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

IPv6. Autor Valentin Lätt Datum Thema IPv6 Version V 1.0

Transkript:

Überblick Wintersemester 2014/2015 Prof. Dr. Peter Mandl Daten- kommunikation Aufbau von Kommunikationssystemen Funktionen und Protokolle der unteren Schichten Grundlagen der Transportschicht TCP-Grundlagen Fortgeschrittene TCP-Funktionen und UDP Grundlagen der Vermittlungsschicht Internet und Internet Protocol (IP) Routingverfahren und -protokolle Internet-Steuerprotokolle und IPv6 Anwendungsschicht, Fallstudien Mandl/Bakomenko/Weiß Seite 1

Überblick 1. TCP (Transmission Control Protocol) - Sliding-Window-Mechanismus - Optimierungen: Algorithmen von Nagle und Clark, Silly Window Syndrom - Staukontrolle - TCP-Timer - TCP-Zustandsautomat 2. UDP (User Data Protocol) - Einordnung und Aufgaben des Protokolls - Der UDP-Header - Datenübertragung Mandl/Bakomenko/Weiß Seite 2

Wiederholung: TCP/IP-Referenzmodell Sender Logische Kommunikation Empfänger Verarbeitungsschicht Verarbeitungsprotokoll: Telnet, ftp, SNMP, HTTP Verarbeitungsschicht leer leer leer Transportschicht Transportprotokoll: TCP und UDP leer Transportschicht Internet Hostanbindung ans Netz IP, ARP nicht festgelegt Internet Hostanbindung ans Netz IP, ARP nicht festgelegt Internet Hostanbindung ans Netz Host Router Host Mandl/Bakomenko/Weiß Seite 3

Sliding Window Mechanismus Der Sliding Window Mechanismus erlaubt die Übertragung von mehreren TCP-Segmenten, bevor ein ACKnowlegde eintrifft Bei TCP funktioniert Sliding Window auf Basis von Octets (Bytes) Die Octets (Bytes) eines Streams sind sequenziell nummeriert Flusskontrolle wird über das durch den Empfänger veranlasste Ausbremsen der Übertragung erreicht Mandl/Bakomenko/Weiß Seite 4

TCP-Header (PCI, Protocol Control Information) Distanz in Byte 32 Bit 0 Quellport Zielport 4 Folgenummer 8 Bestätigungsnummer 12 Offset Reserviert Flags Zeitfenstergröße 16 Prüfsumme Urgent-Zeiger 20 24 Optionen (0 oder mehrere 32-Bit-Wörter) Daten (optional) Padding Mandl/Bakomenko/Weiß Seite 5

Sliding Window Mechanismus Die TCP-Instanzen reservieren beim Verbindungsaufbau Puffer für abgehende und ankommende Daten Empfänger informiert den Sender über den Füllstand des Empfangspuffers Anwendung TCP-Instanz Belegter Puffer Ankommende Pakete Freier Puffer IP-Instanz Mandl/Bakomenko/Weiß Seite 6

Fenstertechnik, Sliding-Window-Mechanismus T-Instanz 1 T-Instanz 2 Anwendung schreibt 2 KB Anwendung schreibt 3 KB SEQ-Nr=0, 2 KB an Daten ACK-Nr=2048, WIN=2048 0 4095 Leer 0 4095 2 KB Leer Sender ist blockiert SEQ-Nr=2048, 2 KB an Daten ACK-Nr=4096, WIN=0 ACK-Nr=4096, WIN=2048 0 4095 Voll Anwendung liest 2 KB 0 4095 Leer 2 KB SEQ-Nr=4096, 1 KB an Daten 0 4095 Noch 1 KB frei Nach Tanenbaum, A.: et al.: Computer Networks, 5. Auflage, Pearson Studium, 2011 Mandl/Bakomenko/Weiß Seite 7

Nachrichtenfluss: Kleine Übung Ports vernachlässigt T-Instanz 1 T-Instanz 2 SYN=1, SEQ-Nr=2000, ACK-Nr=0, WIN=2048 SEQ-Nr? SEQ-Nr? SEQ-Nr? SYN=1, ACK=1, SEQ-Nr=xxxx, ACK-Nr=xxxx, WIN=1024 ACK=1, SEQ-Nr=2001, ACK-Nr=4001, WIN=2048 ACK=0, SEQ-Nr=xxxx, ACK-Nr=4001, WIN=2048, Data ACK=0, SEQ-Nr=xxxx, ACK-Nr=4001, WIN=2048, Data ACK=1, SEQ-Nr=xxxx, ACK-Nr=2021, WIN=xxxx, Data ACK=1, SEQ-Nr=2021, ACK-Nr=4011, WIN=2048 FIN=1, SEQ-Nr=2021, ACK-Nr=4011 FIN=1, ACK=1, SEQ-Nr=4011, ACK-Nr=2022 ACK=1, SEQ-Nr=2022, ACK-Nr=4012 ACK-Nr? SEQ-Nr? Nutzdaten? Window- Größe? Mandl/Bakomenko/Weiß Seite 8

Nachrichtenfluss: Lösung Ports vernachlässigt T-Instanz 1 T-Instanz 2 SYN=1, SEQ-Nr=2000, ACK-Nr=0, WIN=2048 SYN=1, ACK=1, SEQ-Nr=4000, ACK-Nr=2001, WIN=1024 ACK=1, SEQ-Nr=2001, ACK-Nr=4001, WIN=2048 ACK=0, SEQ-Nr=2001, ACK-Nr=4001, WIN=2048, Data (10 Bytes) Hat T- Instanz 2 festgelegt ACK=0, SEQ-Nr=2011, ACK-Nr=4001, WIN=2048, Data(10 Bytes) ACK=1, SEQ-Nr=4001, ACK-Nr=2021, WIN=1004, Data ACK=1, SEQ-Nr=2021, ACK-Nr=4011, WIN=2048 FIN=1, SEQ-Nr=2021, ACK-Nr=4011 20 Bytes beliebig aufgeteilt FIN=1, ACK=1, SEQ-Nr=4011, ACK-Nr=2022 ACK=1, SEQ-Nr=2022, ACK-Nr=4012 Mandl/Bakomenko/Weiß Seite 9

Nachrichtenfluss: Noch eine Übung Ports vernachlässigt T-Instanz 1 T-Instanz 2 Verfügbarer Empfangspuffer xxxx Bytes SYN=1, SEQ-Nr=2000, ACK-Nr=0, WIN=2048 SYN=1, ACK=1, SEQ-Nr=5000, ACK-Nr=xxxx, WIN=1024 Verfügbarer Empfangspuffer xxxx Bytes Verfügbarer Empfangspuffer xxxx Bytes ACK=1, SEQ-Nr=2001, ACK-Nr=xxxx, WIN=2048, Data 1000 ACK=1, SEQ-Nr=xxxx, ACK-Nr=xxxx, WIN=xxxx... Verfügbarer Empfangspuffer xxxx Bytes Mandl/Bakomenko/Weiß Seite 10

Nachrichtenfluss: Lösung Ports vernachlässigt T-Instanz 1 T-Instanz 2 Verfügbarer Empfangspuffer 2048 Bytes SYN=1, SEQ-Nr=2000, ACK-Nr=0, WIN=2048 SYN=1, ACK=1, SEQ-Nr=5000, ACK-Nr=2001, WIN=1024 Verfügbarer Empfangspuffer 1024 Bytes Verfügbarer Empfangspuffer 2048 Bytes ACK=1, SEQ-Nr=2001, ACK-Nr=5001, WIN=2048, Data 1000 ACK=1, SEQ-Nr=5001, ACK-Nr=3001, WIN=24... Verfügbarer Empfangspuffer 24 Bytes Mandl/Bakomenko/Weiß Seite 11

Überblick 1. TCP (Transmission Control Protocol) - Sliding-Window-Mechanismus - Optimierungen: Algorithmen von Nagle und Clark, Silly Window Syndrom - Staukontrolle - TCP-Timer - TCP-Zustandsautomat 2. UDP (User Data Protocol) - Einordnung und Aufgaben des Protokolls - Der UDP-Header - Datenübertragung Mandl/Bakomenko/Weiß Seite 12

Algorithmus von Nagle: Optimierung des Sendeverhaltens Problem: Sendeprozess sendet immer kleine Pakete Nagle versuchte aus Optimierungsgründen zu verhindern, dass immer kleine Nachrichten gesendet werden Lösungsansatz: Zuerst wird nur 1 Byte bzw. ein kleines Segment gesendet Danach werden Daten gesammelt, bis MSS erreicht ist, und danach wird erst wieder ein Segment gesendet, außer bei flush()-aufruf! Wenn ACK empfangen wird, wird aktueller Pufferinhalt sofort gesendet Kritik: Schlecht bei X-Windows oder bei telnet oder bei ssh. Warum? Daher: Ausschaltbar über Socket-Option (NO_DELAY), in Java: Socket.setTcpNoDelay(boolean) - Spezifikation siehe RFC 1122 Mandl/Bakomenko/Weiß Seite 13

Algorithmus von Nagle Pseudocode If neue Daten zum Senden vorhanden if the window size >= MSS and verfügbare Datenlänge >= MSS else Sende sofort ein komplettes Segment mit Länge = MSS; if es sind noch Daten nicht bestätigt (ACK fehlt) Lege Daten in den Sendepuffer solange bis ein ACK empfangen wird; else Sende Daten sofort; end if end if end if Mandl/Bakomenko/Weiß Seite 14

Silly-Window-Syndrom Empfangsprozess sehr langsam Partner 1 TCP- Instanz 1 TCP- Instanz 2 Partner 2 Verbindung steht... Empfangspuffer ist voll! send Puffern im Sendepuffer WIN=1 Ein Byte lesen Empfangspuffer hat wieder Platz für ein Byte receice (1) Ein Byte senden Empfangspuffer ist voll! WIN=1 Ein Byte lesen receice (1) Ein Byte senden... Mandl/Bakomenko/Weiß Seite 15

Silly-Window-Syndrom Lösungsansatz: Algorithmus von Clark Problem: Empfängerprozess holt Daten zu langsam ab Optimierung des Bestätigungsverhaltens wegen des Silly Window Syndroms notwendig Clarks Lösung - Verhindert, dass Sende-Instanz ständig kleine Segmente sendet, da Empfängerprozess sehr langsam ausliest - Verzögerung der ACK-PDU oder Senden von ACK-PDU mit Window Size = 0 - Es wird solange verzögert, bis der Empfänger eine halbe Segmentlänge gelesen hat oder der Empfangspuffer halb leer ist Nagle und Clark ergänzen sich in einer TCP- Implementierung Quelle: Tanenbaum, A.: et al.: Computer Networks, 5. Auflage, Pearson Studium, 2011) Mandl/Bakomenko/Weiß Seite 16

Überblick 1. TCP (Transmission Control Protocol) - Sliding-Window-Mechanismus - Optimierungen: Algorithmen von Nagle und Clark, Silly Window Syndrom - Staukontrolle - TCP-Timer - TCP-Zustandsautomat 2. UDP (User Data Protocol) - Einordnung und Aufgaben des Protokolls - Der UDP-Header - Datenübertragung Mandl/Bakomenko/Weiß Seite 17

Staukontrolle bzw. Überlastkontrolle Überblick 1986 gab es im Internet massive Stausituationen Seit 1989 ist Staukontrolle ein wichtiger Bestandteil von TCP J. Nagle: Congestion Control in IP/TCP Internetworks, in RFC 896, 1984 Grundüberlegungen IP reagiert nicht auf Überlastsituationen, ausgenommen über neue Ansätze (ECN) Verlust eines TCP-Segmentes wird von TCP als Auswirkung einer Stausituation im Netz interpretiert Annahme: Netze sind prinzipiell stabil, eine fehlende ACK- PDU nach dem Senden einer Nachricht wird als Stau im Netz betrachtet Mandl/Bakomenko/Weiß Seite 18

Staukontrolle bzw. Überlastkontrolle Lösungsansatz (1) TCP tastet sich an die maximale Datenübertragungsrate einer Verbindung heran Neben dem Empfangsfenster wird ein neues Fenster eingeführt: Das Staukontrollfenster (bzw. Überlastfenster) Es baut auf dem Erkennen von Datenverlusten auf Die Übertragungsrate wird bei diesem Verfahren im Überlastfall vom Sender massiv gedrosselt, die Datenmengen werden kontrolliert Das verwendete Verfahren ist das reaktive Slow-Start- Verfahren (RFC 1122) TCP-Implementierungen müssen das Slow-Start-Verfahren unterstützen Mandl/Bakomenko/Weiß Seite 19

Staukontrolle bzw. Überlastkontrolle Lösungsansatz (2) Quittungen (ACK-PDUs) dienen als Taktgeber für den Sender Jede Verbindungsseite führt ein Überlast- und ein Empfangsfenster für den Partner Es gilt: Sendekredit für eine TCP-Verbindung = min {Überlastfenster des Partners, Empfangsfenster des Partners} Das Slow-Start-Verfahren kennt zwei Phasen: - Slow-Start-Phase - Probing-Phase Mandl/Bakomenko/Weiß Seite 20

Überlastungsfenster (KiB) Staukontrolle bzw. Überlastkontrolle Lösungsansatz (3) Initiale TCP-Segmentlänge im Beispiel 1 KiB (MSS wird ausgetauscht beim Verbindungsaufbau) 1. Schwellwert im Beispiel 32 KiB Ein Timeout tritt im Beispiel bei Überlastfenstergröße von 40 KiB ein Schwellwert wird dann auf 20 KiB gesetzt Übertragung beginnt wieder mit einem Segment (TCP- Variante Tahoe) 44 40 36 32 28 24 20 16 12 8 4 0...... Schwelle Schwelle. Timeout Schwelle...... 0 2 4 6 8 10 12 14 16 18 20 22 24. Anzahl der Übertragungen bzw. Round Trips Mandl/Bakomenko/Weiß Seite 21

Staukontrolle bzw. Überlastkontrolle Lösungsansatz (4) Slow-Start-Phase: - Sender und Empfänger einigen sich auf eine erste sendbare TCP-Segmentlänge (MSS = z.b. 1460 Bytes) - Sender sendet zunächst ein Segment dieser Länge - Jeweils Verdoppelung des Überlastfensters bei erfolgreicher Übertragung aller Segmente bis zum Empfangsfenster (exponentielle Steigerung) Für jedes bestätigte TCP-Segment wird im nächsten Schritt das Überlastfenster um ein Segment erhöht - Ein Schwellwert (Threshold) wird ermittelt - Bei Erreichen des Schwellwerts geht es in die Probing-Phase über Gar nicht so langsam! Mandl/Bakomenko/Weiß Seite 22

Staukontrolle bzw. Überlastkontrolle Lösungsansatz (5) Die Probing-Phase: - Bei jeder empfangenen Quittung wird die Größe des Überlastfensters nur noch um eine Segmentlänge erhöht, wenn alle Segmente aus dem Überlastfenster erfolgreich übertragen wurden - Berechnung des Überlastfenster bei Ankunft der ACK-PDUs für alle übertragenen Segmente innerhalb des Überlastfenster: Neues Überlastungsfenster += 1 Segment Weiterhin gilt: Sendekredit = min {Überlastfenster, Empfangsfenster} - Es tritt kein Problem auf Überlastfenster steigt bis zum Empfangsfenster und bleibt dann konstant Bei Änderung des Empfangsfensters wird Sendekredit angepasst Mandl/Bakomenko/Weiß Seite 23

Staukontrolle bzw. Überlastkontrolle Lösungsansatz (6) ACK wird nicht empfangen - Man geht davon aus, dass ein weiterer Sender hinzugekommen ist - Mit diesem neuen Sender muss man die Pfadkapazität teilen - Der Schwellwert wird um die Hälfte der aktuellen Segmentanzahl reduziert - Die Segmentanzahl wird wieder auf das Minimum heruntergesetzt Die Timerlänge ist entscheidend! - Zu lang: Evtl. Leistungsverlust - Zu kurz: Erhöhte Last durch erneutes Senden - Dynamische Berechnung anhand der Umlaufzeit eines Segments (vgl. Zitterbart) Mandl/Bakomenko/Weiß Seite 24

Weitere Mechanismus: Fast Recovery nach RFC 2581 (siehe auch implizites NAK) Ergänzendes Verfahren zur Staukontrolle: Fast- Recovery-Algorithmus (TCP Reno als Weiterentwicklung zu TCP Tahoe) Empfang von 4 Quittierungen (drei ACK-Duplikate) für eine TCP-PDU veranlasst sofortige Sendewiederholung Die Sendeleistung wird entsprechend angepasst Der Schwellwert wird auf die Hälfte des aktuellen Staukontrollfensters reduziert Da nur von einem Paketverlust und nicht von einem Stau im Netzwerk ausgegangen wird, wird das Staukontrollfenster auf einen Wert über dem Schwellwert eingestellt (implementierungsabhängig) Mandl/Bakomenko/Weiß Seite 25

Überblick 1. TCP (Transmission Control Protocol) - Sliding-Window-Mechanismus - Optimierungen: Algorithmen von Nagle und Clark, Silly Window Syndrom - Staukontrolle - TCP-Timer - TCP-Zustandsautomat 2. UDP (User Data Protocol) - Einordnung und Aufgaben des Protokolls - Der UDP-Header - Datenübertragung Mandl/Bakomenko/Weiß Seite 26

TCP-Timer TCP verwendet einige Timer, Beispiele: - Retransmission Timer Zur Überwachung der TCP-Segmente nach Karn-Algorithmus, 1988 adaptives Verfahren Wenn Timer abläuft, wird er verdoppelt und das Segment erneut gesendet (Wiederholung) - Keepalive Timer Partner wird versucht zu erreichen Gelingt es, bleibt Verbindung bestehen - Timed Wait Timer Timer für Verbindungsabbau Läuft über doppelte max. Paketlaufzeit (Default: 120 s) Stellt sicher, dass alle gesendeten Pakete nach einem Disconnect-Request noch ankommen Mandl/Bakomenko/Weiß Seite 27

TCP-Timer 0,3 T 0,3 T1 T2 Wahrscheinlichkeit 0,2 0,1 Wahrscheinlichkeit 0,2 0,1 0 0 10 20 30 40 50 0 0 10 20 30 40 50 Rundreise (ms) Rundreise (ms) (a) Optimale Länge des Timers T Nach Tanenbaum, A.: et al.: Computer Networks, 5. Auflage, Pearson Studium, 2011 Mandl/Bakomenko/Weiß Seite 28 (b) Schlechte Timer T1 (zu kurz) und T2 (zu lang)

Überblick 1. TCP (Transmission Control Protocol) - Sliding-Window-Mechanismus - Optimierungen: Algorithmen von Nagle und Clark, Silly Window Syndrom - Staukontrolle - TCP-Timer - TCP-Zustandsautomat 2. UDP (User Data Protocol) - Einordnung und Aufgaben des Protokolls - Der UDP-Header - Datenübertragung Mandl/Bakomenko/Weiß Seite 29

Exkurs: Endliche Zustandsautomaten (1) Finite State Machine (FSM) - Deterministischer endlicher Automat mit Ausgabe (siehe Mealy-Automat): Zustandsveränderung hängt vom aktuellen Zustand und vom Input ab - Verwendet man gerne zur groben Beschreibung des Verhaltens von Protokollinstanzen - Ein endlicher Zustandsautomat lässt sich als Quintupel <S, I, O, T, s o > beschreiben: S - endliche, nicht leere Menge von Zuständen I - endliche, nicht leere Menge von Eingaben O - endliche, nicht leere Menge von Ausgaben T S x (I {t}) x O x S eine Zustandsüberführungsfunktion t bezeichnet eine leere Eingabe s o S Initialzustand des Automaten Mandl/Bakomenko/Weiß Seite 30

Exkurs: Endliche Zustandsautomaten (2) Eine Transition (Zustandsübergang) t T ist definiert durch das Quadrupel <s, i, o, s > wobei - s S der aktuelle Zustand, - i I eine Eingabe, - o O eine zugehörige Ausgabe und - s S der Folgezustand ist Grafische Darstellung eines Zustandsübergangs i / o s s i / o,... s s Erweitert: mehrere Ausgaben Mandl/Bakomenko/Weiß Seite 31

Exkurs: Endliche Zustandsautomaten (3) Nachteil von FSM: Keine weiteren Zustandsinformationen z.b. in Variable modellierbar Daher in der Praxis oft Nutzung erweiterter endlicher Automaten (EFSM) für die Detailspezifikation, um Zustandskontexte noch besser zu beschreiben nutzt weitere Variable neben Zustandsvariable Modellierung z.b. in der Sprache SDL (Spezification and Description Language) Beispiel: ACK Aktion1 S1 t Aktion2 DR ACK Kontrollflüsse Variablen Aktionen.. S2 -- S3 Mandl/Bakomenko/Weiß Seite 32

Zustandsautomat allgemein Client- Anwendung Server- Anwendung [Socket-Interface] TCP-Instanz (Client) [TCP-Protokoll] TCP-Instanz (Server) Je ein Zustandsautomat pro Transportverbindung wird in jeder beteiligten TCP-Instanz verwaltet Mandl/Bakomenko/Weiß Seite 33

Zustände im TCP-Zustandsautomat (nur Verbindungsmanagement) Zustand CLOSED LISTEN SYN_RCVD SYN_SENT ESTABLISHED FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT CLOSING CLOSE_WAIT LAST_ACK Beschreibung Keine Verbindung aktiv oder anstehend Der Server wartet auf eine ankommende Verbindung Ankunft einer Verbindungsanfrage und Warten auf Bestätigung Die Anwendung hat begonnen, eine Verbindung zu öffnen Zustand der normalen Datenübertragung Die Anwendung möchte die Übertragung beenden, Close-Aufruf wurde bereits abgesetzt Die andere Seite ist einverstanden, die Verbindung abzubauen, Bestätigung (ACK) gesendet Warten, bis keine Segmente mehr kommen Beide Seiten haben versucht, gleichzeitig zu beenden Die Gegenseite hat den Abbau eingeleitet, warten auf Close- Aufruf der lokalen Anwendung Warten, bis letzte Bestätigung (ACK) für Verbindungsabbau angekommen ist Mandl/Bakomenko/Weiß Seite 34

TCP als FSM Ein TCP-Zustandsautomat für das TCP-Verbindungsmanagement lässt sich als Quintupel <S, I, O, T, s o > beschreiben: S = {CLOSED, LISTEN, SYN_RCVD,...} I = {connect, send, close, SYN, ACK, FIN,...} O = {SYN, ACK, FIN,...} s o = CLOSED S Hinweis: Wir beschreiben im Weiteren nur die Transitionen des Verbindungsauf- und abbaus Beispiel einer Transition: Aufruf an der Socket- Schnittstelle Gesendetes TCP-Segment mit SYN-Flag CLOSED connect / SYN SYN_SENT Mandl/Bakomenko/Weiß Seite 35

Finite-State-Machine-Modell für das TCP-Verbindungsmanagement (1) fette Linie: normaler Pfad des Clients fette gestrichelte Linie: normaler Pfad des Servers feine Linie: ungewöhnliche Ereignisse (Start) CLOSED CONNECT/SYN CLOSE/- LISTEN/- CLOSE/- SYN/SYN +ACK LISTEN SYN RCVD RST/- SYN/SYN + ACK SEND/SYN (gleichzeitig geöffnet) SYN SENT CLOSE/FIN zu FIN WAIT 1 ACK/- (Datenübertragung) ESTABLISHED SYN + ACK/ACK (Schritt 3 des Dreiwege-Handshakes) Mandl/Bakomenko/Weiß Seite 36

Finite-State-Machine-Modell für das TCP-Verbindungsmanagement (2) von SYN RCVD ESTABLISHED SYN + ACK/ACK (Schritt 3 des Dreiwege-Handshakes) CLOSE/FIN FIN/ACK (ClOSE aktiv) (CLOSE passiv) FIN WAIT 1 FIN/ACK CLOSING CLOSE WAIT ACK/- ACK/- CLOSE/FIN FIN WAIT 2 FIN + ACK/ACK FIN/ACK TIME WAIT LAST ACK (Timeout/-) CLOSED ACK/- (Zurück zum Anfang) Es gibt vier Möglichkeiten, die Verbindung abzubauen. Welche? 1) Close Aktiv 2) Close passiv 3) Beide gleichzeitig (FIN_WAIT_1 CLOSING TIME_ WAIT CLOSED) 4) Selten: Close auf passiver Seite bei FIN schon da Mandl/Bakomenko/Weiß Seite 37

Finite-State-Machine-Modell Aktiver Partner (vereinfacht) 30-120 s (konfigurierbar) CLOSED CONNECT / SYN (Start) TIME_WAIT SYN_SENT FIN / ACK SYN+ACK / ACK FIN_WAIT_2 ESTABLISHED ACK / - FIN_WAIT_1 CLOSE / FIN Mandl/Bakomenko/Weiß Seite 38

Finite-State-Machine-Modell Passiver Partner (vereinfacht) ACK / - CLOSED LISTEN / - LAST_ ACK LISTEN CLOSE / FIN SYN / SYN+ACK CLOSE_ WAIT SYN_ RCVD FIN / ACK ESTABLISHED ACK / - Mandl/Bakomenko/Weiß Seite 39

Verbindungsaufbau T-Instanz 1 T-Instanz 2 Datenaustausch kann ab den ausgetauschten Sequenznummern beginnen c_isn = Initial Sequence Number des Clients (Instanz 1) s_isn = Initial Sequence Number des Servers (Instanz 2) Mandl/Bakomenko/Weiß Seite 40

Verbindungsabbau Client baut die Verbindung ab (auch Server kann es) Alle Segmente mit Folgenummer < i bzw. j sind noch zu verarbeiten T-Instanz 1 T-Instanz 2 ESTABLISHED close-aufruf FIN_WAIT_1 FIN_WAIT_2 ESTABLISHED Anwendung informieren CLOSE_WAIT close-aufruf TIME_WAIT Warten... CLOSE LAST_ACK CLOSE Zustände im TCP-Zustandsautomat: ESTABLISHED, FIN_WAIT_1, FIN _WAIT_2, TIME_WAIT, CLOSE, CLOSE_WAIT, LAST_ACK Mandl/Bakomenko/Weiß Seite 41

Übung Wozu dienen folgende Stati des TCP- Zustandsautomaten: - SYN_RECVD - SYN_SENT - TIME_WAIT - CLOSE_WAIT Betrachten Sie mit dem Kommando netstat die Zustände diverser TCP-Verbindungen, die auf Ihrem Rechner laufen - Web-Browser - Chat-Anwendung -... Mandl/Bakomenko/Weiß Seite 42

Einschub für Interessierte: Zustandsautomaten implementieren Wie implementiert man einen Zustandsautomaten? - Welches Prozess-/Threadmodell verwendet man? Ein bekanntes Modell: Server-Modell - Auftretende Ereignisse (Nachrichten, Timeouts, Dienstaufrufe) müssen verarbeitet werden und führen zu Zustandsänderungen und Aktionen Mehrere Varianten - Bei jedem Ereignis über Switch-Case-Konstruktionen prüfen, welche Aktion ausgeführt werden soll und ob das Ereignis zulässig ist - Nutzung des State Patterns zur Vermeidung von ewigen Switch-Case- Konstruktionen State Pattern (Objektorientierter Ansatz) - Jeder Zustand wird als eigene Objektklasse implementiert, die von einer Basisobjektklasse erbt Mandl/Bakomenko/Weiß Seite 43

Einschub für Interessierte: Zustandsautomaten implementieren - Server-Modell (1) Das Server-Modell - Protokollinstanz wird als zyklisch arbeitender sequentieller Prozess/Thread umgesetzt - Eingabewarteschlange für auftretende Ereignisse wird an einem Ereigniswartepunkt abgearbeitet - Ereignisse werden zyklisch in einer Endlosschleife abgearbeitet: - Grober Algorithmus: Ereignis aus der Warteschlange lesen Analyse des eingehenden Ereignisses (Nachricht) Aktion auf Basis des aktuellen Zustandes auswählen Ggf. Fehleranalyse und Fehlerreaktion Aktion ausführen, Transition durchführen (in Zustand gehen) und Ausgabe erzeugen Und dann wieder von vorne: Nächstes Ereignis aus der Warteschlange lesen Mandl/Bakomenko/Weiß Seite 44

Einschub für Interessierte: Zustandsautomaten implementieren - Server-Modell (2) Dienstaufruf Eingabewarteschlange (receive) Ankommende PDU Timeout Timerbaustein Zentraler Wartepunkt Ereignis lesen Transition ermitteln Zustand 1 Zustand n Ereignis 1 Ereignis n Ereignis 1 Ereignis n Aktion für Ereignis 1 Aktion für Ereignis n Aktion für Ereignis 1 Aktion für Ereignis n Ausgabe (send) Protokollinstanz König, H.: Protocol Engineering, Teubner, 2003 Mandl/Bakomenko/Weiß Seite 45

Einschub für Interessierte: Zustandsautomaten implementieren - Server-Modell (3) Eingabewarteschlange (receive) Programmierte Auswahl Zentraler Wartepunkt Ereignis lesen Transition ermitteln switch (zustand) { case (Closed) if (ereignis == ConnectReqPDU) {... } else if... case (Connecting) if (ereignis == Timeout) {... } else if...... } Ausgabe (send) Protokollinstanz König, H.: Protocol Engineering, Teubner, 2003 Mandl/Bakomenko/Weiß Seite 46

Einschub für Interessierte: Zustandsautomaten implementieren - Server-Modell (4) Eingabewarteschlange (receive) Tabellengesteuerte Auswahl Zentraler Wartepunkt Ereignis lesen Ereignis / Zustand Connect Req Connect Rsp Data ReqPDU Closed Aktion_1 Transition ermitteln Ausgabe (send) Connecting -- Accepting Aktion_n Established --- -- Aktion_k Sending --- Testing ---...... Protokollinstanz König, H.: Protocol Engineering, Teubner, 2003 Mandl/Bakomenko/Weiß Seite 47

Einschub für Interessierte: Zustandsautomaten implementieren - Server-Modell (5) Kritik am Server-Modell - Positiv - Negativ Einfacher Entwurf, da Zustandsautomat direkt abgebildet wird Einfach zu implementieren Bei vielen Zuständen unübersichtlich, da viele Switch-Case und If- Konstruktionen zur Ermittlung der nächsten Transition notwendig sind Evtl. nicht so leistungsfähig, da alles in einem Prozess/Thread erledigt wird Verbesserung durch Ausführen einer Aktion in einem eigenen Thread Mandl/Bakomenko/Weiß Seite 48

Überblick 1. TCP (Transmission Control Protocol) - Sliding-Window-Mechanismus - Optimierungen: Algorithmen von Nagle und Clark, Silly Window Syndrom - Staukontrolle - TCP-Timer - TCP-Zustandsautomat 2. UDP (User Data Protocol) - Einordnung und Aufgaben des Protokolls - Der UDP-Header - Datenübertragung Mandl/Bakomenko/Weiß Seite 49

Einordnung und Aufgaben Unzuverlässiges, verbindungsloses Transportprotokoll - Keine Empfangsbestätigung für Pakete - UDP-Nachrichten können ohne Kontrolle verloren gehen - Eingehende Pakete werden nicht in einer Reihenfolge sortiert - Maßnahmen zur Erhöhung der Zuverlässigkeit müssen im Anwendungsprotokoll ergriffen werden, z.b. ACK und Warten mit Timeout Wiederholtes Senden bei fehlendem ACK Vorteile von UDP gegenüber TCP - Bessere Leistung möglich, aber nur, wenn TCP nicht nachgebaut werden muss - Multicast- und Broadcast wird unterstützt Mandl/Bakomenko/Weiß Seite 50

Einordnung und Aufgaben Bei UDP ist keine explizite Verbindungsaufbau- Phase erforderlich und entsprechend auch kein Verbindungsabbau Userprozess erzeugt ein UDP-Socket und kann Nachrichten senden und empfangen Nachrichten werden bei UDP als Datagramme bezeichnet In den Datagrammen wird die T-SAP-Adresse des Senders und des Empfängers gesendet (UDP-Ports) Mandl/Bakomenko/Weiß Seite 51

TCP-Header (PCI, Protocol Control Information) Distanz in Byte 32 Bit 0 Quellport Zielport 4 Folgenummer 8 Bestätigungsnummer 12 Offset Res. Flags Zeitfenstergröße 16 Prüfsumme Urgent-Zeiger 20 24 Optionen (0 oder mehrere 32-Bit-Wörter) Daten (optional) Padding Mandl/Bakomenko/Weiß Seite 52

UDP-Header (PCI) Distanz in Byte 32 Bit 0 4 UDP-Quellportnummer Länge UDP-Zielportnummer Prüfsumme (optional) 8 Daten (optional) Mandl/Bakomenko/Weiß Seite 53

UDP-Header UDP-Ziel-Portnummer Nummer des empfangenden Ports UDP-Quell-Portnummer Nummer des sendenden Ports Länge Größe des UDP-Segments inkl. Header in Byte Prüfsumme (optional) Prüft das Gesamtsegment (Daten + Header) einschließlich eines Pseudoheaders Daten Nettodaten der Nachricht Mandl/Bakomenko/Weiß Seite 54

Pseudoheader (1) Die Prüfsumme ist die einzige Möglichkeit, die intakte Übertragung beim Empfänger zu verifizieren Vor dem Berechnen der Prüfsumme wird Pseudoheader ergänzt Das Segment wird auf eine durch 16 Bit teilbare Größe aufgefüllt (gerade Anzahl an Bytes) Berechnung auch wie bei TCP über Addition der Einerkomplemente der 16-Bit-Wörter und Bildung des Einerkompliments der Summe (RFC 1071) 32 Bit IP-Adresse des Senders IP-Adresse des Empfängers Zero Protokoll (17) UDP-Länge (ohne Pseudo Header) Mandl/Bakomenko/Weiß Seite 55

Pseudoheader (2) Der Empfänger muss bei Empfang einer UDP- Nachricht folgendes unternehmen: - die IP-Adressen aus dem ankommenden IP-Paket lesen - Der Pseudoheader muss zusammengebaut werden - Die Prüfsumme muss ebenfalls berechnet werden (vorher Prüfsumme aus UDP-Datagramm entfernen) - Die mit gesendete Prüfsumme mit der berechneten vergleichen Wenn die beiden Prüfsummen identisch sind, dann muss das Datagramm seinen Zielrechner und auch den richtigen UDP-Port erreicht haben - Ziel des Pseudoheaders ist es somit, beim Empfänger herauszufinden, ob das Paket den richtigen Empfänger gefunden hat Mandl/Bakomenko/Weiß Seite 56

Einige well-known UDP-Portnummern UDP- Portnummer Protokoll, Service 53 DNS Domain Name Service 520 RIP Routing Information Protocol 161 SNMP Simple Network Management Protocol 69 TFTP Trivial File Transfer Protocol Mandl/Bakomenko/Weiß Seite 57

Begrenzte Nachrichtenlänge bei UDP Die Länge eines UDP-Segments ist minimal 8 Byte und maximal 2 16 1 = 65.535 Byte Nettodatenlänge = 2 16 1 8 = 65.527 Byte Darüber hinaus ist es sinnvoll, die UDP-Segmente nicht länger als in der möglichen IP-Paketlänge zu versenden, da sonst fragmentiert werden muss Mandl/Bakomenko/Weiß Seite 58

Rückblick 1. TCP (Transmission Control Protocol) - Sliding-Window-Mechanismus - Optimierungen: Algorithmen von Nagle und Clark, Silly Window Syndrom - Staukontrolle - TCP-Timer - TCP-Zustandsautomat 2. UDP (User Data Protocol) - Einordnung und Aufgaben des Protokolls - Der UDP-Header - Datenübertragung Mandl/Bakomenko/Weiß Seite 59