stellen eine Kommunikation zwischen Anwendungsprozessen bereit. TCP ist ein verbindungsorientiertes Protokoll TCP bestätigt die Ankunft der Pakete

Ähnliche Dokumente
Transportprotokolle im TCP/IP- Referenzmodell

Transportprotokolle im TCP/IP- Referenzmodell

Themen. Dienste der Transportschicht. 3-Wege-Handshake. TCP-Protokoll-Header. Real-Time-Protocol

TCP. Transmission Control Protocol

Die Transportprotokolle: Transmission Control Protocol (TCP) User Datagram Protocol (UDP) Die Socket-Schnittstelle

TCP/IP-Protokollfamilie

Angewandte IT-Sicherheit Vorlesung im Herbstsemester 2006/2007 Prof. F. Freiling

Themen. Transportschicht. Internet TCP/UDP. Stefan Szalowski Rechnernetze Transportschicht

Transportschicht. Einleitung Transmission Control Protocol, RFC793. Transportschicht

Lehrveranstaltung Rechnernetze Einschub für das Labor

TCP-Verbindungen und Datenfluss

11. Foliensatz Betriebssysteme und Rechnernetze

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

Bei Aufbau der Verbindung initialisiert der Sender das Überlastfenster auf die

Praktikum zur Vorlesung Datenkommunikation. Teil I

Netzwerk-Programmierung. Netzwerke.

Internetanwendungstechnik. Transportschicht. Gero Mühl

Rechnernetze Übung 11

Rechnernetze Übung 11. Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Juni 2012

Transportschicht (Schicht 4) des Internet

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

IP-Netzwerke und Protokolle

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Grundlagen TCP/IP. C3D2 Chaostreff Dresden. Sven Klemm

Die Transportprotokolle UDP und TCP

KOMMUNIKATIONSNETZE UND - PROTOKOLLE 6. TRANSPORTSCHICHT. KNP: 6. Transport. 1 / v5. prof. dr. Werner Winzerling

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

TCP/UDP. Transport Layer

Netzwerke. Netzwerk-Programmierung. Sven Hartmeier.

Der TCP/IP Protokollstapel

Transportprotokolle. TCP - Transmission Control Protocol

Referat: Netzwerkprogrammierung in Java

Vorlesung Rechnernetze 7. Transportschicht

Verteilte Systeme - Java Networking (Sockets) -

Grundkurs Routing im Internet mit Übungen

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

Domain Name Service (DNS)

Transmission Control Protocol (TCP)

Verlässliche Verteilte Systeme 1 Angewandte IT-Robustheit und IT-Sicherheit Vorlesung im Wintersemester 2004/2005

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

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

Beispiel TCP-/IP-Datenübertragung

Modul 5: TCP-Flusskontrolle

Überblick. Daten- kommunikation

Mobilkommunikationsnetze. - Transportschicht -

6. Die Transportschicht

Dienste der Transportschicht

Vorlesung: Netzwerke (TK) WS 2011/12 Kapitel 1 Vorbereitung für Praktikum Session 03

15 Transportschicht (Schicht 4)

Vorlesung SS 2001: Sicherheit in offenen Netzen

Damit zwischen den verschiedenen Rechnern überhaupt ein Austausch möglich ist, muss man sich über das was und wie verständigen.

Rolf Wanka Sommersemester Vorlesung

Kommunikationsnetze Prof. Dr. rer. nat. habil. Seitz. Sara Schaarschmidt Eric Hänsel

UDP-, MTU- und IP- Fragmentierung

TCP/UDP PROF. DR. M. FÖLLER NORD INSTITUT EMBEDDED AND MOBILE COMPUTING

Rechnernetze I SS Universität Siegen Tel.: 0271/ , Büro: H-B Stand: 7.

Berliner Linux User Group, 16. November 2005 Wilhelm Dolle, Director Information Technology interactive Systems GmbH

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

TCP/IP Troubleshooting

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen

Charakteristische Fragestellungen der Schicht 4

TCP/IP Troubleshooting. Jochen Reinwand RRZE-Kolloquium Praxis der Datenkommunikation 5. November 2014

UDP, TCP & DNS Rough Cut

IPv4 - Internetwork Protocol

Netzwerktechnologien 3 VO

KN Das Internet

Kurzeinführung in TCP/IP. Sebastian Drexler

9. Foliensatz Computernetze

Überblick. Daten- kommunikation

Routing Tabelle ISP 1: /16 ISP /23 Netz (taucht dieser Eintrag nicht auf, kann das Netz nur über ISP 3 erreicht werden)

Computerforensik. Prof. Dr. Silke Draber Fachhochschule Bonn Rhein Sieg. Vorlesung SS Einführung in TCP/IP

1. Netzwerkprogrammierung für mobile Geräte

9. Transportprotokolle

Internetprotokoll TCP / IP

1. DAS IP INTERNET PROTOCOL Die Protokollschichten des Internet Internetadressen Das Paketformat von IP...

UDP User Datagramm Protokoll

Netzwerkarchitekturen. Überblick. Interessante Netzeigenschaften. Verteilte Systeme Prof. Dr. Stefan Fischer. Schichtenmodelle, Protokolle und Dienste

TCP Transmission Control Protocol (Flusskontrolle und Zustandsdiagramm)

TCP/IP Troubleshooting

Netzwerkprogrammierung

Rechnernetze und -Organisation Michael Hutter Karl C. Posch.

Netzwerktechnologien 3 VO

Rechnernetze und Organisation

Netzwerk-Programmierung in C

Vorwort Vorwort zur deutschen Übersetzung... 11

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

Systeme II 10. Woche Transportschicht. Christian Schindelhauer Technische Fakultät Rechnernetze und Telematik Albert-Ludwigs-Universität Freiburg

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

Internet - Grundzüge der Funktionsweise. Kira Duwe

Internetanwendungstechnik. TCP/IP- und OSI-Referenzmodell. Gero Mühl

Ethernet: MAC-D MAC-S Type Data FCS. Eigenschaften: 1. Kann nur im eigenen Netz eingesetzt werden 2. Keine Bestätigung des Empfangs

Netzwerktechnologien 3 VO

Breitband ISDN Lokale Netze Internet WS 2009/10. Martin Werner, November 09 1

Layer 4: Transport Layer

Telekommunikationsnetze 2

Router 1 Router 2 Router 3

Überblick. Daten- kommunikation

09 - Arbeitsunterlagen

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

Transkript:

Transportprotokolle im TCP/IP- Referenzmodell verbindungsorientiert verbindungslos HTTP FTP Telnet SMTP DNS SNMP TFTP Application TCP UDP Transport IGMP ICMP IP ARP RARP Internet Ethernet Token Ring Token Bus Wireless LAN Host-to-network TCP (Transmission Control Protocol): Zuverlässig, verbindungsorientiert. UDP (User Datagram Protocol): Datagramm-Prinzip, verbindungslos, ohne Flusskontrolle, reihenfolgerichtige Zustellung eines Paketstroms nicht garantiert. 260 Eigenschaften von TCP Verbindungsorientiert und zuverlässig (fehlerfrei, reihenfolgetreu, ohne Duplikate) Fehlerbehandlung, Quittierung, Flusskontrolle (Sliding-Window-Verfahren) Bytestrom, kein Nachrichtenstrom Segmentierung (max. Segmentgröße 64 KByte) "Urgent"-Nachrichten außerhalb der Flusskontrolle Stark beschränkte QoS Adressierung der Applikation über Portnummern Port-Nummer IP-Adresse Client 1 2 Anwendungsschicht Transportschicht Vermittlungsschicht Host-to-network- Schicht wartet auf mehreren Ports 262 TCP und UDP - Die Transportschicht A Telnet-Client IP-Netzwerk B Telnet- Transportprotokolle sind als Dienst für die Applikationsschicht verfügbar. Sie stellen eine Kommunikation zwischen Anwendungsprozessen bereit. TCP ist ein verbindungsorientiertes Protokoll TCP bestätigt die Ankunft der Pakete UDP ist ein verbindungsloses und schnelles Protokoll TCP als sichere Verbindung Falls der -Port unbekannt ist, ist die Nutzung eines Prozess-s (Initial- Connection-Protocol) möglich: Port-Nummer Client Transportschicht Anwendungsschicht Prozess- IP-Adresse Vermittlungsschicht Prozess- übergibt bestehende Verbindung an den angefragten Sicherungsschicht Bitübertragung Alternative: Namensserver (vergleichbar zur Telefonauskunft) liefert Port zurück 261 263

TCP als sichere Verbindung Erzeugt logische Verbindungen zwischen zwei Sockets: IP-Adresse + 16 Bit Port-Nummer (48 Bit Adressinformation) Sockets sind somit der Zugangspunkt einer Anwendung zum Netz Ein Socket kann für mehrere Verbindungen gleichzeitig genutzt werden TCP-Verbindungen sind immer Vollduplex- und Punkt-zu-Punkt-Verbindungen Datenpakete, die zwischen den beiden Kommunikationsstationen ausgetauscht werden, nennt man Segmente Segmente werden ausgetauscht, um o Verbindungsaufbau, o Vereinbarung der Fenstergröße, o Datentransfer, o Verschicken der Bestätigungen, o Verbindungsabbau zu realisieren 264 Socket-Primitive in TCP Zur Kommunikation via TCP existiert ein Satz Primitive, die ein Anwendungsprogrammierer verwenden kann, um die Kommunikation zu in initialisieren und durchzuführen. Im wesentlichen sind dies: Primitiv Bedeutung SOCKET Erstellung eines neuen Netzzugangspunkts BIND Verknüpfe eine lokale Adresse mit dem Socket LISTEN Warte auf ankommende Verbindungswünsche ACCEPT Nimm einen Verbindungswunsch an CONNECT Versuch eines Verbindungsaufbaus SEND Sende Daten über die Verbindung RECEIVE Empfange Daten auf der Verbindung CLOSE Freigabe der Verbindung 266 Socket-Programmierung in TCP -Seite Der Anwendungsprozess, der Anfragen entgegennimmt () muss zuerst laufen Der erstellt einen Socket, über den Verbindungsanfragen entgegengenommen werden (d.h. es wird ein Port bereitgestellt) Um Anfragen mehrerer Clients entgegennehmen zu können, erstellt der bei einem Verbindungswunsch einen neuen Socket für den Client Client-Seite Der Client erstellt einen Socket Der Client generiert eine Anfrage mit IP-Adresse und Port des s Wenn der Client seinen Socket erstellt, wird eine Verbindung zum hergestellt Socket-Programmierung in TCP (auf Host hostid) Client create socket, port=x, for incoming request: welcomesocket = Socket() TCP wait for incoming connection request Verbindungsaufbau connectionsocket = welcomesocket.accept() create socket, connect to hostid, port=x clientsocket = Socket() read request from connectionsocket send request using clientsocket write reply to connectionsocket close connectionsocket read reply from clientsocket close clientsocket 265 267

Beispiel: Java-Client (TCP) import java.io.*; import java.net.*; class TCPClient { Puffer für Benutzereingabe bereitstellen Erstelle Client- Socket, baue Verbindung auf Erstelle Datenstrom für den Socket public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket clientsocket = new Socket("hostname", 6789); CONNECT DataOutputStream outto = new DataOutputStream(clientSocket.getOutputStream()); 268 Beispiel: Java- (TCP) import java.io.*; import java.net.*; class TCP { Erstelle Default-Socket auf Port 6789 public static void main(string argv[]) throws Exception { String clientsentence; String capitalizedsentence; BIND Socket welcomesocket = new Socket(6789); Warte auf eingehende Verbindungswünsche while(true) { LISTEN Socket connectionsocket = welcomesocket.accept(); Verknüpfe Buffer mit dem Socket BufferedReader infromclient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 270 Beispiel: Java-Client (TCP) Erstelle Datenstrom aus dem Socket BufferedReader infrom = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = infromuser.readline(); Sende an den outto.writebytes(sentence + '\n'); SEND modifiedsentence = infrom.readline(); RECEIVE Empfange vom System.out.println("FROM SERVER: " + modifiedsentence); clientsocket.close(); 269 Beispiel: Java- (TCP) Verknüpfe ausgehenden Datenstrom mit dem Socket DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); Lesen vom Socket clientsentence = infromclient.readline(); RECEIVE capitalizedsentence = clientsentence.touppercase() + '\n'; Schreiben auf den Socket outtoclient.writebytes(capitalizedsentence); Gehe zurück, warte auf nächste Anfrage SEND 271

TCP-basierte Applikationen Routing Information Virtual Terminal World Wide Web File Transfer Electronic Mail 255 FTP telnet SMTP http BGP 20 / 21 23 25 80 179 well-known (TCP) Ports RFC 1700 Portnummer ist 16-Bit-Adresse Ports von 0 bis 255 sind für Standardanwendungen reserviert. Ports von 256 bis 65535 können von jedem Host selbst festgelegt werden 272 Der TCP-Header Source- und Destination-Port: Port-Nummer von Sender bzw. Empfänger Sequence Number/Acknowledgement Number: Segmente haben eine eigene 32 Bit Sequenz- und Bestätigungsnummer für den Fenstermechanismus zur Flusskontrolle (Sliding Window). Sequenz- und Bestätigungsnummer zählen einzelne Bytes! Die Bestätigungsnummer gibt das nächste erwartete Byte an! Sequenznummern fangen nicht notwendigerweise bei 0 an! Piggybacking, d.h. eine Quittung kann im Datenpaket mitgeschickt werden HL: Wie bei IP verfügt auch der TCP-Header über eine Angabe seiner Länge. Die Angabe erfolgt in 32-Bit-Worten. Res = Reserved. Für spätere Verwendung freigehaltene Bits. Window Size: Größe des Pufferspeichers für die Verbindung. Zusammenhang zum Fenster der Flusskontrolle: das Fenster der Flusskontrolle gibt an, wie viele Dateneinheiten gleichzeitig unbestätigt unterwegs sein dürfen die Größe des Pufferspeichers zeigt an, wie viele Dateneinheiten der Empfänger gleichzeitig speichern kann. Hierdurch wird das Fenster der Flusskontrolle angepasst. 274 Der TCP-Header 20 Byte Header zzgl. Optionen dann folgen bis zu 65.495 Datenbytes Bit Position 0 8 16 24 31 HL Res. Source Port Destination Port Sequence Number Acknowledgement Number 6 Flags Window Size Checksum Urgent Pointer Options Padding Data 273 Der TCP-Header 6 Flags: URG: URGENT. Bei Benutzung des Urgent-Pointers, z.b. bei Tastatureingaben (Ctrl-C). ACK: Bestätigungsfeld, für den Fall, dass eine Quittung mitgesendet wird. PSH: PUSH. Direkte Weiterleitung der Daten, kein Warten auf weitere Daten. RST: RESET. Rücksetzen einer Verbindung, z.b. bei einem Hostabsturz oder einer Verbindungsabweisung. ("Im allgemeinen entstehen Probleme, wenn ein Segment mit gesetztem RST-Bit empfangen wird.") SYN: auf 1 gesetzt beim Aufbau einer Verbindung FIN: auf 1 gesetzt beim Abbau einer Verbindung Urgent Pointer: gibt an, ab wo dringende Daten stehen (Byteversatz von der aktuellen Folgenummer). Options: zusätzliche Funktionen: Aushandlung von Window Scale; Verwendung von Selective Repeat statt Go-Back-n im Fehlerfall; Angabe einer Maximum Segment Size (MSS) zur Festlegung der Größe des Datenteils. 275

Der TCP-Pseudo-Header Checksum: für den Prüfsummen-Algorithmus. Dient u.a. zur Verifikation, daß das Paket an das richtige Gerät ausgeliefert worden ist. Die Prüfsumme für das Checksum-Feld wird unter Verwendung eines Pseudo- Headers berechnet. Dazu wird dem Segment durch den Sender ein Pseudo- Header vorangestellt und dann die Prüfsumme über den Pseudo-Header und den normalen Header berechnet (das Checksum-Feld ist hierbei mit 0en belegt). Die Prüfsummenberechnung erfolgt durch das 1er-Komplement der Summe aller 16- Bit-Wörter des Segments samt Pseudo-Header. Die entstehende Prüfsumme wird eingesetzt. Der Empfänger kann durch Voranstellen des Pseudo-Headers den gleichen Algorithmus ausführen und muss auf 0 kommen. Quelladresse (IP) Zieladresse (IP) 00000000 Protokoll = 6 Länge des TCP-Segments 276 1. Verbindungsaufbau Client Der wartet mittels LISTEN und ACCEPT auf eingehende Verbindungswünsche. Der Client startet unter Angabe von IP-Adresse, Portnummer und maximal akzeptabler Segment-Größe eine CONNECT-Operation. SYN, SEQ=x CONNECT sendet ein SYN. SYN, SEQ=y, ACK=x+1 Ist der Destination Port der CONNECT-Anfrage identisch zu der Port-Nummer, auf der der wartet, wird die Verbindung akzeptiert, andernfalls mit RST abgelehnt. ACK=y+1, SEQ=x+1 ungeregelter Verbindungsaufbau Client / Client / Möglicherweise versuchen zwei Rechner zur gleichen Zeit, eine Verbindung zwischen den gleichen Sockets aufzubauen. 278 Der schickt seinerseits das SYN zum Client und bestätigt zugleich den Erhalt des ersten SYN-Segments. Three-Way-Handshake Der Client schickt eine Bestätigung des SYN- Segments des s. Damit ist die Verbindung aufgebaut. 277 SYN, SEQ=x SYN, SEQ=y Verbindungen sind durch ihre Endpunkte gekennzeichnet, es wird nur eine Verbindung aufgebaut. Die Endpunkte sind eindeutig gekennzeichnet: SYN, SEQ=x, ACK=y+1 (IP-Adresse 1, Portnummer 1, IP-Adresse 2, Portnummer 2 ) 2. Datenübertragung Client Vollduplex-Betrieb Aufteilung eines Bytestroms in Segmente. Übliche Größen sind 1500, 536 oder 512 Byte; dadurch wird IP- Fragmentierung vermieden. SEQ=101, ACK=201, Data SEQ=201, ACK=102 Üblicher Quittungsmechanismus: Alle Segmente bis ACK-1 sind bestätigt. Hat der Sender vor dem Empfang eines ACKs einen Timeout, überträgt er erneut. SEQ=102, ACK=201, Data SEQ=201, ACK=110 Üblich bei fehlenden Segmenten: Go- Back-N oder Selective Repeat. 279 SYN, SEQ=y, ACK=x+1

3. Verbindungsende Client Abbau als zwei Simplex-Verbindungen Senden eines FIN-Segments Wird das FIN-Segment bestätigt, wird die Richtung 'abgeschaltet'. Die Gegenrichtung bleibt aber noch offen, hier kann noch weiter gesendet werden. FIN, SEQ=207, ACK=116 FIN, SEQ=116, ACK=208 Verwendung von Timern zum Schutz vor Paketverlust. SEQ=208, ACK=117 280 Zustände während einer TCP-Session LISTEN Zustand CLOSED SYN RVCD SYN SENT ESTABLISHED FIN WAIT 1 FIN WAIT 2 TIME WAIT CLOSING CLOSE WAIT LAST ACK Beschreibung Keine Kommunikation vorhanden/benötigt Der wartet auf einen Request Ein Request wurde empfangen und verarbeitet, warte auf das abschließende ACK des Verbindungsaufbaus Die Anwendung hat begonnen, eine Verbindung zu öffnen Verbindung aufgebaut, Datenübertragung Die Anwendung startet einen Verbindungsabbau Die andere Seite bestätigt den Verbindungsabbau Warte noch auf "verspätete" Pakete Simultaner Verbindungsabbau Die andere Seite initiiert einen Verbindungsabbau Warte noch auf verspätete Pakete 282 Die gesamte TCP-Verbindung Normaler Pfad des s ungewöhnliche Ereignisse Ereignis/Aktion-Paar Ereignis: Systemaufruf durch Benutzer, Segmentankunft, Timeout Aktion: Senden eines Steuersegments Flusssteuerung und Pufferzuweisung Die Flusssteuerung ist ähnlich zu der auf Schicht 2, nur auf Netzebene: größere Anzahl an Verbindungen Pufferung von Segmenten Neben Verlusten auch Reihefolgevertauschungen dynamische Pufferverwaltung (Anforderung von Pufferspeicher durch den Kommunikationspartner) Arbeitsweise: Sliding Window mit veränderlicher Fenstergröße: Anpassung an Pufferplatz des Empfängers und an die Netzleistung Normaler Pfad des Clients 281 283

Flusskontrolle Sliding Window Sender sendet entsprechend der Fenstergröße (Bytes) Fenster wird um n Bytes versetzt, sobald ein ACK für n Bytes eingetroffen ist Ausnahme: Dringende Daten (URGENT-Flag) werden sofort gesendet Besonderheit: die Fenstergröße kann während der Übertragungsphase geändert werden Initial window 1 2 3 4 5 6 7 8 9 10 Segment 1, 2 und 3 acknowledged Window slides 1 2 3 4 5 6 7 8 9 10 "Silly Window"-Syndrom Empfängerpuffer ist voll Anwendung liest 1 Byte Platz für noch 1 Byte Header Segment zur Fensteraktualisierung übertragen Header Neues Byte kommt an 1 Byte Empfängerpuffer ist voll Lösungsansatz von Clark: Der Empfänger muss mit der nächsten Fensteraktualisierung warten, bis der Empfängerpuffer wieder halbwegs leer ist 284 286 Sliding Window - Beispiel Anwendung schreibt 2 KB Sender Empfänger 2K SEQ = 0 Empfänger-Puffer 0 4K Leer 2K Anwendung schreibt 2 KB Sender ist blockiert ACK=2048 WIN=2048 2K SEQ = 2048 ACK=4096 WIN=0 Voll Anwendung liest 2 KB Sender kann bis zu 2 KB übertragen ACK=4096 WIN=2048 1K SEQ = 4096 2K 1K 2K 285 Ablauf einer TCP-Session Client SYN / SEQ=2999 / ACK=x / Window=2500 / MSS=1460 ACK / SEQ=3000 / ACK=2001 / Window=2500 SYN, ACK / SEQ=2000 / ACK=3000 / Window=4200 / MSS=1400 DATA 1400 Byte / SEQ=3000 / ACK=2001 / Window=2500 DATA 1400 Byte / SEQ=4400 / ACK=2001 / Window=2500 DATA 1400 Byte / SEQ=5800 / ACK=2001 / Window=2500 ACK / SEQ=2001 / ACK=4400 / Window=4200 ACK / SEQ=2001 / ACK=5800 / Window=4200 ACK / SEQ=2001 / ACK=7000 / Window=4200 DATA 1400 Byte / SEQ=7000 / ACK=2001 / Window=2500 DATA 1400 Byte / SEQ=8400 / ACK=2001 / Window=2500 ACK / SEQ=2001 / ACK=8400 / Window=4200 ACK / SEQ=2001 / ACK=9800 / Window=4200 FIN, ACK / SEQ=9800 / ACK=2001 FIN, ACK / SEQ=2001 / ACK=9801 ACK / SEQ=9801 / ACK=2002 287