6. Die Transportschicht



Ähnliche Dokumente
6. Die Transportschicht. 6.1 Architektur der Transportprotokolle im Internet 6.2 UDP (User Datagram Protocol) 6.3 TCP (Transmission Control Protocol)

Grundkurs Routing im Internet mit Übungen

15 Transportschicht (Schicht 4)

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

TCP/IP-Protokollfamilie

TCP/UDP. Transport Layer

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

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

Systeme II. Christian Schindelhauer Sommersemester Vorlesung

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

Chapter 11 TCP. CCNA 1 version 3.0 Wolfgang Riggert,, FH Flensburg auf der Grundlage von

Transportschicht (Schicht 4) des Internet

KN Das Internet

Systeme II 5. Die Transportschicht

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

TCP. Transmission Control Protocol

Transmission Control Protocol (TCP)

ICMP Internet Control Message Protocol. Michael Ziegler

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

Transportschicht. Transportschicht-Dienste u. Protokolle bei OSI

2. Kommunikation und Synchronisation von Prozessen 2.2 Kommunikation zwischen Prozessen

Vorlesung SS 2001: Sicherheit in offenen Netzen

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

Guide DynDNS und Portforwarding

Grundlagen der Rechnernetze. Internetworking

Hauptdiplomklausur Informatik März 2002: Internet Protokolle

Grundlagen TCP/IP. C3D2 Chaostreff Dresden. Sven Klemm

1.) Nennen Sie Aufgaben und mögliche Dienste der Transportschicht (Transport Layer) des ISO/OSI-Schichtenmodells.

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Anwendungsprotokolle: HTTP, POP, SMTP

DNS-325/-320 und FXP

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

Multiuser Client/Server Systeme

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

Rolf Wanka Sommersemester Vorlesung

Rolf Wanka Sommersemester Vorlesung

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

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Einführung in die Netzwerktechnik

Man liest sich: POP3/IMAP

Multicast Security Group Key Management Architecture (MSEC GKMArch)

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

Peer-to-Peer- Netzwerke

Kommunikationsnetze 1. TCP/IP-Netze 1.2 TCP. University of Applied Sciences. Kommunikationsnetze. 1. TCP/IP-Netze 1.

Client-Server mit Socket und API von Berkeley

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

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

Stefan Dahler. 1. Remote ISDN Einwahl. 1.1 Einleitung

Synchronisations- Assistent

Lehrveranstaltung Rechnernetze Einschub für das Labor

Kontrollfragen: Internet

Internet und WWW Übungen

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

Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen

IAC-BOX Netzwerkintegration. IAC-BOX Netzwerkintegration IACBOX.COM. Version Deutsch

Beispiel TCP-/IP-Datenübertragung

Internet Networking TCP Congestion Avoidance and Control

Vorlesung SS 2001: Sicherheit in offenen Netzen

UDP-, MTU- und IP- Fragmentierung

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Router 1 Router 2 Router 3

Adami CRM - Outlook Replikation User Dokumentation

Transportprotokolle. TCP - Transmission Control Protocol

IMAP und POP. Internet Protokolle WS 12/13 Niklas Teich Seite 1

Systeme II 5. Die Transportschicht

How-to: Webserver NAT. Securepoint Security System Version 2007nx

OP-LOG

Virtual Private Network

Installation und Inbetriebnahme von SolidWorks

Anbindung des eibport an das Internet

CSMA/CD: - keine Fehlerkorrektur, nur Fehlererkennung - Fehlererkennung durch CRC, (Jabber) Oversized/Undersized

Netzwerktechnologie 2 Sommersemester 2004

Internetzugang Modul 129 Netzwerk Grundlagen

Vorlesung SS 2001: Sicherheit in offenen Netzen

Modul 5: TCP-Flusskontrolle

All People Seem To Need Data Processing: Application Presentation - Session Transport Network Data-Link - Physical

Collax PPTP-VPN. Howto

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Thema IPv6. Geschichte von IPv6

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

SIMP 1.01 Protokollspezifikation (Mindestanforderung)

Kommunikations-Parameter

IPv4 - Internetwork Protocol

NovaTec. Konfigurationsanleitung RMCS

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Einrichten eines Microsoft Exchange-Account auf einem Android-System

Lizenzen auschecken. Was ist zu tun?

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

Klicken Sie mit einem Doppelklick auf das Symbol Arbeitsplatz auf Ihrem Desktop. Es öffnet sich das folgende Fenster.

Algorithmische Kryptographie

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Verwendung des IDS Backup Systems unter Windows 2000

ECN. Explicit Congestion Notification ECN

Eine Anwendung mit InstantRails 1.7

POP3 über Outlook einrichten

Telefonieren mit App's"! iphone mit Bria Informationen zur Nutzung von TeScript

Im Folgenden wird die Konfiguration der DIME Tools erläutert. Dazu zählen die Dienste TFTP Server, Time Server, Syslog Daemon und BootP Server.

3 Das verbindungslose Vermittlungsprotokoll IP

Transkript:

6. Die Transportschicht 6.1 Architektur der Transportprotokolle im Internet 6.2 UDP (User Datagram Protocol) 6.3 TCP (Transmission Control Protocol) Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-1 6.1 Architektur der Transportprotokolle im Internet Die Transportprotokolle im Internet sind Ende-zu-Ende-Protokolle! Host A Application identical message Host B Application Transport identical packet Transport Gateway G Internet identical datagram Internet identical datagram Internet Network Interface identical frame Network Interface identical frame Network Interface Physical Net 1 Physical Net 2 Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-2

Wichtige INTERNET-Protokolle SMTP Mail FTP File Transfer TELNET Remote Login HTTP Web-Zugriff NFS TCP UDP IP LLC und MAC Bitübertragungsschicht SMTP = Simple Mail Transfer Protocol FTP = File Transfer Protocol TELNET = Remote Login Protocol UDP = User Datagram Protocol NFS = Network File System TCP = Transmission Protocol IP = Internet Protocol LLC = Logical Link Control MAC = Media Access Control Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-3 Adressierung von Dienst-Prozessen: Ports Die Schicht-4-Adresse soll einen bestimmten Dienst (Anwendungstyp) identifizieren, dem ein Anwendungsprozess zugeordnet ist Eine Adressierung mittels Prozess-Nummer wäre ungeeignet, denn Prozesse werden dynamisch erzeugt und beendet; deshalb ist die Prozess-Nummer außerhalb des lokalen Systems nicht bekannt. Die Zuordnung Dienst <=> Prozess ist nicht fest: Ein Prozess kann mehrere Dienste erbringen. Mehrere Prozesse können denselben Dienst erbringen. => Einführung eines abstrakten Kommunikations-Endpunktes: Port Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-4

Eigenschaften der Ports Ein Dienst ist genau einem Port zugeordnet. Über denselben Port können mehrere Verbindungen gleichzeitig laufen. Asynchroner und synchroner Port-Zugriff sind möglich. Jeder Port ist mit einem Puffer assoziiert. Der Port stellt eine Programmierschnittstelle für den Anwendungsprogrammierer zur Verfügung (API). Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-5 Beispiele für reservierte Port-Nummern Einige Port-Zuordnungen ("well-known addresses") Dezimal Schlüsselworwort Unix Schlüssel- Beschreibung 0 Reserved........ 20 FTP-DATA ftp-data File Transfer Protocol (data) 21 FTP ftp File Transfer Protocol 23 TELNET telnet Terminal Connection 25 SMTP smtp Simple Mail Transfer Protocol 42 NAME- SERVER name Host Name Server 43 NICNAME whois Who Is Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-6

6.2 UDP (User Datagram Protocol) UDP ist ein unzuverlässiges, verbindungsloses Datagramm-Transport- Protokoll im Internet. Es dient im Wesentlichen dazu, den Anwendungen eine Programmierschnittstelle für den Direktzugriff auf IP, ergänzt um die Port-Adressierung, anzubieten. Eigenschaften Datagramm-Transport Keine Garantie über das Einhalten der Reihenfolge der einzelnen Pakete Keine gesicherte Zustellung der Pakete an den Empfänger Duplizierte Pakete sind möglich Multicast ist möglich Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-7 Format von UDP-Paketen UDP-Header 0 16 31 Absender-Port Paket-Länge Empfänger-Port Prüfsumme Daten... Paket-Länge wird in Bytes angegeben (einschließlich UDP-Header) Prüfsumme über Header und Daten zur Fehlererkennung. Die Prüfsumme wird über das gesamte Fragment berechnet, inklusive UDP-Header. Es wird ein spaltenweises EXOR über die senkrecht untereinander geschriebenen 16-Bit-Worte des Pakets berechnet. Die Verwendung der Prüfsumme ist optional (wenn IPv4 darunter liegt) Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-8

Eigenschaften von UDP Geringer Ressourcen-Verbrauch (Speicherplatz, CPU-Zeit) Kein expliziter Verbindungsaufbau Einfache Implementierung UDP ist vor allem für einfache Client-Server-Interaktionen geeignet, zum Beispiel für Request-Response-Protokolle: ein Anfrage-Paket vom Client zum Server ein Antwort-Paket vom Server zum Client Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-9 Anwendungsbeispiele für UDP Domain Name Service (DNS) SNMP: Simple Network Management Protocol NFS: Network File System viele Multimedia-Protokolle, die keine Fehlersicherung in Schicht 4 wollen. alle Multicast-Protokolle, insbesondere auch RTP für Realzeit- Anwendungen, vor allem Multimedia-Anwendungen (Audio- und Videoströme) Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-10

6.3 TCP (Transmission Control Protocol) TCP ist das erste Protokoll in der Internet-Protokollhierarchie, das eine gesicherte Datenübertragung zwischen Endsystemen leistet. Eigenschaften Datenstrom-orientiert: TCP überträgt einen seriellen Bit-Strom der Anwendung in Form von 8-Bit Bytes. Verbindungsorientiert: Vor der Datenübertragung wird eine Verbindung zwischen beiden Kommunikationspartnern aufgebaut, die fehlergesichert und Reihenfolge erhaltend ist. Gepufferte Datenübertragung: Der sequenzielle Datenstrom wird zur Übertragung in einzelne Segmente (Pakete) aufgeteilt. Duplex-Kommunikation: Über eine TCP-Verbindung können gleichzeitig Daten in beide Richtungen übertragen werden. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-11 Was steht im TCP-Standard? Der TCP-Standard (RFC 793) spezifiziert Formate von Datenpaketen und Kontrollinformationen Prozeduren für Verbindungsaufbau und -abbau Fehlererkennung und -behebung Flusskontrolle Netzwerk-Überlastkontrolle (Congestion Control) RFC 793 spezifiziert nicht die Schnittstelle zum Anwendungsprogramm (socket). Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-12

Adressierung Eine TCP-Verbindung ist eindeutig bestimmt durch ein Quintupel aus IP-Adressen von Sender und Empfänger Port-Adressen von Sender und Empfänger TCP-Protokoll-Identifikator Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-13 Paketformat Format des TCP-Headers 0 4 10 16 24 31 Source Port Destination Port Sequence Number Acknowledgement Number HLEN Res. Code Bits Window Size Checksum Options (if any) Urgent Pointer Padding Data... Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-14

Datenfelder im TCP-Header (1) SEQUENCE NUMBER ACKNOWLEDGMENT HLEN CODEBITS URG ACK PSH RST SYN FIN WINDOW SIZE URGENT POINTER Bytenummern headerlänge = Offset des Datenfeldes (6 Bits von links nach rechts) Urgent Pointer wird verwendet Ack-Nummernfeld ist gültig Push Reset der Verbindung Synchronisiere Sequenznummern Ende des Datenstroms Fenstergröße in Bytes Byteoffset zur aktuellen Sequenznummer, an der wichtige Daten beginnen Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-15 Datenfelder im TCP-Header (2) Port-Nummern: wie für UDP sequence number: identifiziert das erste Byte im Datenteil des Paketes acknowledgement number: identifiziert das nächste Byte im Datenstrom, das der Sender dieses Paketes vom Empfänger dieses Paketes erwartet. Nicht einzelne Datenpakete, sondern Byte-Positionen im Datenstrom werden bestätigt. Dadurch ist Kumulation von Bestätigungen über mehrere TCP-Pakete leicht möglich. Die acknowledgements steuern die Übertragungswiederholung im Fehlerfall. Sie definieren auch das Schiebefenster für die Flusskontrolle. Da Daten in beide Richtungen zwischen den Kommunikationspartnern fließen können (Duplex-Betrieb), gibt es eine eigene Sequenznummernfolge für jede Richtung. header length (HLEN): Größe des TCP-Headers in 32-Bit-Worten Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-16

Datenfelder im TCP-Header (3) codebits (Flags) URG: urgent pointer Feld ist gültig ( in Benutzung ) ACK: acknowledgement Feld ist gültig ( in Benutzung ) PSH: (push) Der Empfänger soll die Daten der Anwendung so schnell wie möglich zur Verfügung stellen. RST: Reset der Verbindung SYN: Synchronisation der initialen Sequenznummern bei Verbindungsaufbau FIN: der Sender hat das Senden seiner Daten beendet. window size: Anzahl der Bytes, die der Sender dieses Paketes noch entgegen nehmen kann, bis sein Puffer voll ist (Flusskontrolle) Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-17 Datenfelder im TCP-Header (4) checksum: Die Prüfsumme wird über das gesamte Fragment berechnet, inklusive TCP-Header. Es wird ein spaltenweises EXOR über die senkrecht untereinander geschriebenen 16-Bit-Worte des Pakets berechnet. urgent pointer: Der urgent pointer identifiziert das letzte Byte im Datenteil, welches mit besonderer Priorität bearbeitet werden sollte. Die danach folgenden Daten haben normale Priorität. options: (werden wir später besprechen) Der Datenteil eines TCP-Paketes ist optional, ein leeres TCP-Paket kann zum Beispiel als reine Bestätigung empfangener Daten gesendet werden, wenn gerade keine Daten in die Rückrichtung gesendet werden müssen. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-18

TCP/IP: Format des gesamten Headers 32 bits Version IHL Identification Type of Service D M F F Total Length Fragment Offset Time to live Protocol Header Checksum Source address Destination address Options I P - H E A D E R TCP header length Source Port Checksum Sequence number Piggybacked acknowledgement U R G A C K P R S S H T S F Y I N N Options (0 or more 32 bit words. DATA.. Destination Port Window Size Urgent Pointer T C P - H E A D E R Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-19 Wichtige Funktionen in TCP Positive Bestätigung ("positive acknowledgement or retransmission, PAR) Übertragungswiederholung nach Ablauf einer Wartezeit (Timeout beim Sender). Keine NACKs! Sliding Window"-Mechanismus zur Flusskontrolle. Variable Fenstergröße: bei jeder Bestätigung durch den Empfänger wird die ab sofort zu verwendende Fenstergröße mit übertragen. Fehlererkennung durch Prüfsumme (ähnlich CRC) Piggybacking: Kontrollinformation auf dem Rückweg und Daten können im gleichen TCP-Paket übertragen werden. Out-of-Band Data: wichtige Information soll dem Empfänger zugestellt werden, bevor er früher gesendete Daten verarbeitet. Beispiel: Alarm- Meldungen Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-20

TCP-Verbindungsaufbau Three-Way-Handshake: Verbindungsaufbau durch drei Pakete: Partner 1 Partner 2 Sende SYN seq=x Empfange SYN Sende ACK x+1 SYN seq=y Empfange SYN+ACK Sende ACK y+1 Empfange ACK Beim Verbindungsaufbau werden auch die initialen Sequenznummern beider Seiten (beider Richtungen) ausgetauscht und bestätigt. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-21 Three-Way-Handshake Das SYN-Flag zeigt an, dass die Sequenznummern synchronisiert werden sollen. SYN kostet ein Byte bezüglich der Sequenznummernvergabe. Reine acknowledgements kosten keine Bytes. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-22

Timeout beim Verbindungsaufbau Was passiert, wenn der Kommunikationspartner nicht antwortet? Die Übertragung des Paketes wird wiederholt, TCP betrachtet dies als gewöhnlichen Paketverlust. Nach einer festen Zeit (timeout) wird der Verbindungsversuch abgebrochen und die Anwendung informiert. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-23 TCP-Verbindungsabbau (1) Geordneter Verbindungsabbau durch vier Pakete: Partner 1 Partner 2 Sende FIN seq=x Empfange ACK 1 2 3 Empfange FIN Sende ACK x+1 (Informiere Anwendung) Sende FIN, ACK x+1 Empfange ACK+FIN Sende ACK y+1 4 Empfange ACK Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-24

TCP-Verbindungsabbau (2) Abbau einer Verbindung durch zweimal half-close : Da die TCP-Verbindung bidirektional ist, sollten prinzipiell beide Richtungen getrennt voneinander beendet werden. Wer seine Senderolle beenden möchte, setzt das FIN-Flag. FIN kostet ein Byte und wird daher durch ein acknowledgement bestätigt. Der andere Teilnehmer kann weiter senden - jedoch sieht man in der Praxis fast immer das Verhalten, dass der andere Teilnehmer als Reaktion auch seine Senderolle beendet. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-25 TCP Reset Ein Paket, bei dem das RST-Bit im TCP-Header gesetzt ist, terminiert die Verbindung in Form eines abortive release (im Gegensatz zum orderly release mit FIN): Alle Daten, die beim Sender gepuffert waren, werden verworfen, und das Reset-Paket wird sofort gesendet. Die Verbindung ist damit aus Sicht des RST-Senders sofort geschlossen. Beim Reset können Daten verloren gehen (das passiert beim Verbindungsabbau mit FIN nicht). Der Empfänger eines RST-Pakets meldet dies der Anwendung und terminiert die Verbindung sofort. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-26

Typische Datenflüsse mit TCP Datenflussbeispiel für eine interaktive Anwendung Buchstabe ack für Buchstabe Darstellung des Buchstabens ack für Darstellung des Buchstaben rlogin client rlogin server Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-27 Delayed Acknowledgements (1) Um zu verhindern, dass überflüssige TCP-Pakete gesendet werden, die nur ein ACK beinhalten, wird das Senden von ACKs häufig verzögert: Buchstabe ack für Buchstabe und Darstellung des Buchstabens delayed ack delayed ack ack für Darstellung des Buchstaben rlogin client rlogin server Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-28

Delayed Acknowledgements (2) Ein ACK wird bei delayed acknowledgements in der Regel um maximal 200 ms verzögert. Während dieser Zeit können Daten, die in der Gegenrichtung gesendet werden, das ACK Huckepack (engl. piggyback) mitnehmen, dies spart die Übertragung eines separaten ACK-Pakets. Werden innerhalb dieser Zeit keine Daten gesendet, so wird ein reines ACK-Paket übertragen. Der 200-ms-Timer wird nicht für jedes Paket aufgezogen, sondern läuft global, d.h. alle 200 ms werden alle ACKs verschickt, die noch offen sind. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-29 Massendatentransfer Was passiert, wenn man große Datenmengen per TCP überträgt (bulk data flow)? Wann wird ein ACK gesendet? Bisher: delayed ACK nach 200 ms Das würde zu viele unbestätigte Paketen im Transit verursachen, wenn die Datenrate hoch ist (bulk data flow). Daher wird beim Massendatentransfer jedes zweite Paket sofort bestätigt, auch wenn der 200-ms-Timer noch nicht abgelaufen ist. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-30

Fehlersicherung in TCP TCP unterteilt den Bytestrom in Einheiten, die jeweils in einem IP-Paket übertragen werden. Diese Einheiten heißen Segmente. Nachdem TCP ein Segment per IP losgeschickt hat, wird ein Timer für dieses Segment gestartet. Wenn keine Bestätigung über den erfolgreichen Empfang dieses Segments innerhalb der Timer-Laufzeit eintrifft, wird die Übertragung wiederholt. Der Timer passt sich an die normale Round-Trip-Time der Verbindung dynamisch an. Wenn ein TCP-Empfänger ein fehlerfreies Segment vom Sender erhält, schickt er eine Bestätigung über den erfolgreichen Empfang an den Sender. Der Empfänger puffert weitere Segmente, die nach einem Fehler korrekt empfangen wurden, bis der Fehler durch Übertragungswiederholung repariert ist ( go-back-n mit Pufferung). Negative ACKs (NACKs) werden nicht verschickt! Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-31 Fehlererkennung und -behebung TCP berechnet eine Prüfsumme (checksum) über das gesamte Segment. Die Berechnung erfolgt mit demselben Algorithmus wie bei UDP. Falls die Prüfsumme beim Empfänger einen Fehler signalisiert, wird das Segment nicht bestätigt. Das führt zum Ablaufen der Zeitschranke beim Sender und als Folge davon zur Übertragungswiederholung. Der Sender wiederholt das Senden nach dem go-back-n -Verfahren. Wenn Segmente außer der Reihe von IP ausgeliefert werden, stellt TCP die richtige Reihenfolge wieder her. Wenn IP-Datagramme im Netz verdoppelt werden, dann filtert TCP die Duplikate heraus. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-32

Flusskontrolle und Überlastkontrolle in TCP Flusskontrolle TCP verwendet einen Schiebefenster-Mechanismus (sliding window) zur Flusskontrolle. Die Fenstergröße wird, wie stets in TCP, in Bytes (nicht in Paketen!) ausgedrückt. Die Größe des Schiebefenster wird als Flusskontrollparameter window size vom Empfänger an den Sender geschickt. Die Größe des Fensters kann während der Verbindung geändert werden. Wenn der Empfänger beispielsweise nur noch wenig Pufferplatz hat, wird sie reduziert. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-33 Schneller Sender und langsamer Empfänger (1) sequ 1, length 1024, ack 1, win 4096 sequ 1025, length 1024, ack 1, win 4096 ack 2049, win 2048 sequ 2049, length 1024, ack 1, win 4096 sequ 3073, length 1024, ack 1, win 4096 ack 4097, win 0 ack 4097, win 4096 ftp server ftp client Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-34

Schneller Sender und langsamer Empfänger (2) Der Sender überträgt die Daten schneller, als sie der Empfänger aus dem Puffer lesen und an die höheren Schichten weiter geben kann. Der Puffer des Empfängers läuft voll, er signalisiert dies mit der Fenstergröße 0. Dies ist eine Erweiterung zum eigentlichen Sliding- Window-Mechanismus, welche es erlaubt, Pakete bezüglich der Fehlersicherung zu bestätigen, ohne dem Sender das Recht zu geben, weitere Pakete zu senden. Erst wenn der Puffer beim Empfänger wieder freien Platz hat, wird dieser freie Platz in einem weiteren ACK als Fenstergröße dem Sender mitgeteilt. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-35 Überlastkontrolle (Congestion Control) Problem: Wenn alle Sender im Netz immer so viele Pakete losschicken, wie bei ihren Empfängern in die Puffer passen, dann kann es zur Überlast (Verstopfung, congestion) im Inneren des Netzes kommen. A f 1 E C D B f 2 F f 1 + f 2 Wenn alle Verbindungen die gleiche Bandbreite haben und sowohl A als auch B mit der vollen Bandbreite der Verbindung senden, dann kommt es zu einer Überlastung im Inneren des Netzes (congestion). TCP- Verbindungen erkennen dies und regeln freiwillig die Bandbreite herunter! Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-36

Congestion Window Um Congestion zu verhindern, wird beim Sender ein zusätzlicher Parameter Congestion Window (cwnd) mitgeführt. cwnd wird wie das vom Empfänger mitgeteilte flow control window in Bytes geführt. Ein Sender darf immer nur das MINIMUM aus (cwnd, Flusskontroll- Window) an Daten senden. Es besteht keine Notwendigkeit, cnwd zwischen den Partnern zu übertragen! Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-37 Überlastkontrolle im eingeschwungenen Zustand Problem Wie stellt der Sender die richtige Größe für das Congestion Window fest? Lösung Er versucht, das Fenster schrittweise zu vergrößern, bis Verstopfung eintritt. Dann verkleinert er es wieder. Solange keine Pakete verloren gehen, wird bei jedem ACK cwnd um 1/cwnd Segmente erhöht. Pro Round-Trip-Time vergrößert sich das Congestion Window also um ca. ein Segment ( additive increase ). Da es keine spezifischen Meldepakete aus dem Inneren des Netzes für Verstopfung gibt, interpretiert TCP jeden Paketverlust der Verbindung als Anzeichen für Überlast! Es gibt zwei unterschiedliche Reaktionen auf Segmentverluste, wie nachfolgend beschrieben. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-38

Anzeichen für Überlast Triple Duplicate Acknowledgement (TDACK): Wenn ein Segment verloren geht, aber nachfolgende Segmente ankommen, erhält der Sender mehrere ACKs mit derselben Sequenznummer. Nach dem dritten Duplicate ACK (also vier ACKs insgesamt für dasselbe Segment) wird das fehlende Paket erneut übertragen, ohne dass der Timeout für das Paket abgewartet wird ( fast retransmit ). Der Sender interpretiert ein TDACK als leichte Überlast und reduziert cwnd auf die Hälfte der ursprünglichen Größe ( multiplicative decrease ). Timeout: Wenn nach einem verlorengegangenen Paket auch keine Folgepakete mehr ankommen, kommt es nicht zu einem TDACK, sondern zu einem Timeout für das verlorene Paket. Der Sender interpretiert das als schwere Überlast und reduziert cwnd auf ein Segment. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-39 Wahl des Timeout-Wertes Frage: Wie groß sollte der Timeout-Wert gewählt werden? Auf jeden Fall größer als eine Round-Trip Time (RTT) RTT kann variieren Sicherheitszuschlag in Abhängigkeit der RTT Varianz EstimatedRTT = (1-x) * EstimatedRTT + x * SampleRTT Deviation = (1-x) * Deviation + x * abs(samplertt - EstimatedRTT) Timeout = EstimatedRTT + 4 * Deviation Ein guter gewählter Timeout-Wert ist wichtig für hohen Datendurchsatz in Netzen, in denen häufig Paketverluste auftreten. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-40

Sägezahnkurve des TCP-Durchsatzes Der Algorithmus Additive Increase, Multiplicative Decrease führt dazu, dass der tatsächliche Durchsatz einer TCP-Verbindung im eingeschwungenen Zustand eine Sägezahnkurve ergibt. Aus regelungstechnischer Sicht ist das Verfahren stabil, d.h. es schwingt sich nicht auf. Beobachtung: Die Fläche unter der Kurve entspricht der TCP-Datenrate! Ein Beispiel zeigt die unten stehende Abbildung. KB 70 60 50 40 30 20 10 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 Time (seconds) Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-41 TCP Fairness Wenn sich n TCP-Ströme einen Link teilen, sollte jeder einen Durchsatz von ca. 1/n der verfügbaren Bandbreite in Anspruch nehmen. Beispiel: Zwei TCP-Ströme laufen über einen gemeinsamen Link: TCP 2 fair TCP 1 Die Datenraten tendieren gegen den Punkt der fairen Kapazitätsverteilung unter voller Ausnutzung der vorhandenen Bandbreite. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-42

Slow-Start (1) Problem: Wenn eine TCP-Verbindung neu aufgebaut wird, dauert es sehr lange, bis der Sender die optimale Bitrate erreicht, da sich mit jeder Round-Trip-Time cwnd nur um eine Paketgröße (MSS) erhöht. Lösung: Der Slow-Start-Algorithmus von Van Jacobsen cwnd wird mit der MSS des Empfängers initialisiert slow start threshold (ssthresh) wird mit 65353 initialisiert Pro Round-Trip-Time tue folgendes: Wenn keine Verluste und cwnd < ssthresh: Slow-Start-Phase: erhöhe cwnd um MSS für jedes empfangene ACK (dies ist exponentiell!) Wenn Verluste oder cwnd >= ssthresh: Ende der Slow-Start-Phase: normaler AIMD-Algorithmus setzt ein. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-43 Slow-Start (2) Ein TCP-Slow-Start findet ebenfalls nach einem Timeout statt (Anzeichen für schwere Verstopfung). Der ssthresh-wert wird halbiert, dann beginnt eine neue Slow-Start-Phase. Anmerkung Dieser Algorithmus heißt aus historischen Gründen slow start, obwohl es aus heutiger Sicht eigentlich ein Quick-Start-Algorithmus ist. Denn bevor er in TCP eingebaut wurde, begann jede neue Verbindung mit einer Fenstergröße, die dem Flusskontrollfenster des Empfängers entsprach. Dies führte häufig sofort zu Verstopfung und Paketverlusten. Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-44

Slow-Start: Beispiel für einen Verlauf Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-45 TCP-Programmierschnittstelle (API) Die Programmierung von TCP erfolgt mit dem Konzept der Sockets. Ein Socket ist die programmiertechnische Realisierung eines Ports. Der Server wartet auf einem wohl definierten Port auf Verbindungswünsche von Clients. Ein Client verbindet sich mit dem Server. Nachdem die Verbindung hergestellt ist, kann der Server für diese Verbindung einen Thread (leichtgewichtigen Prozess) anlegen, der dann die weiterhin eingehenden Datenpakete der Verbindung bearbeitet. Wenn er keinen neuen Thread anlegt, werden die Verbindungswünsche sequentiell bearbeitet (selten). Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-46

Zusammenfassung TCP Vorteile von TCP Gesicherte Datenübertragung Effiziente Datenübertragung trotz Komplexität des Protokolls (bis zu 100 MBit/s auf Standard-Maschinen experimentell nachgewiesen) Einsetzbar im LAN- und WAN-Bereich Für geringe Datenraten (z. B. interaktives Terminal) und hohe Datenraten (z. B. Dateitransfer) gut verwendbar Nachteile gegenüber UDP Höherer Ressourcenbedarf (Zwischenspeicherung, Zustandsinformationen bei Sender und Empfänger, viele Timer) Verbindungsaufbau und -abbau auch bei kurzen Datenübertragungen notwendig Multicast nicht möglich Rechnernetze Wolfgang Effelsberg 6. Die Transportschicht 6-47