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

Slides:



Advertisements
Ähnliche Präsentationen
Powerpoint-Präsentation
Advertisements

Einer der Dienste im Internet
2. Link Layer Lernziele: Verstehen wie IP prinzipiell über eine Link Layer Verbindung übertragen wird.
2 Kommunikationssysteme bieten Kommunikationsdienste an, die das Senden und Empfangen von Nachrichten erlauben (sending & receiving messages) bestehen.
C.M. Presents D.A.R. und Ein Bisschen dies und das!
Lehrstuhl für Kommunikationssysteme - Systeme II1 Systeme II – 10te Vorlesung Lehrstuhl für Kommunikationssysteme Institut für Informatik / Technische.
Lehrstuhl für Kommunikationssysteme - Systeme II1 Systeme II – 11te Vorlesung Lehrstuhl für Kommunikationssysteme Institut für Informatik / Technische.
Konfiguration eines VPN Netzwerkes
Anwendungen in Rechnernetzen Tobias Wawryniuk
Rechneraufbau & Rechnerstrukturen, Folie 14.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 14.
Aufgaben der Sicherungsschicht
Architektur von Netzwerken
Offene Systeme, Rechnernetze und das Internet
Internet und seine Dienste
OSI-Schichtenmodell Unterschiedliche Rechner brauchen eine gemeinsame Basis, um sich miteinander zu „unterhalten“. Geklärt werden muss dabei u. a. Folgendes:
Netze Vorlesung 11 Peter B. Ladkin
Einführung in die Netzwerktechnik 1 Der ARP-Prozess
5 Transmission Control Protocol (TCP)
2. Link Layer Lernziele: – Verstehen wie IP prinzipiell über eine Link Layer Verbindung übertragen wird.
1. Einführung Lernziele: Auffrischen des Wissens aus Rechnernetze
Martin MauveUniversität Mannheim1 3.6 User Datagram Protocol (UDP) RFC 768. J. Postel. User Datagram Protocol unzuverlässiges Transportprotokoll.
Rechnernetze 1 Vorlesung im SS’07
Einführung in die Technik des Internets
Internet Protocol [IP] Adressen und Adressklassen
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 4 Folie 2 Message Passing mittels Sockets (1) s.a.
Christian Schindelhauer Sommersemester Vorlesung
3 Wie funktioniert TCP/IP?
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Referent: Kiron Mirdha Betreuer: Rene Hilden Juli 2012
Grundlagen: Client-Server-Modell
Julia Grabsch Florian Hillnhütter Fabian Riebschläger
Allgemeine Technologien I Sitzung am Mailserver
Netzwerkprogrammierung
Referat von Markus Hertel
FINS Kommunikation.
Abgeleitet aus dem OSI-Referenzmodell sieben Schichten
Netzwerke.
Grundlegende Steuer- und Verwaltungsfunktionen:
Unterschiedliche Netzwerke
Meldungen über Ethernet mit FINS/UDP
Funktionsweise der 4. Schicht im OSI-Modell am Beispiel TCP und UDP.
Funktionsweise der 4. Schicht im OSI-Modell
Adressierung in Netzwerken
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Peer-to-Peer- Netzwerke Christian Schindelhauer Sommersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Systeme II Christian Schindelhauer Sommersemester 2006.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Systeme II Christian Schindelhauer Sommersemester 2006.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Peer-to-Peer- Netzwerke Christian Schindelhauer Sommersemester.
Systeme II Christian Schindelhauer Sommersemester 2007
Intrusion Detection Systems Funktionsweise, Probleme und Lösungsversuche.
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom ISO/OSI Referenzmodell.
->Prinzip ->Systeme ->Peer – to – Peer
Was wäre wenn….. SNMP (Simple Network Managment Protocol)
Agenda 1. Definition (TCP/ IP Protokollfamilie) 2.
von Prof. Thomas Deutsch
Internet-Grundtechnologien. Client / Server Client („Kunde“): fordert Information / Datei an im Internet: fordert Internetseite an, z.B.
 Sind Adresskomponenten (an der IP- Adresse angehängt, von ihr durch Doppelpunkt getrennt)  Werden in Netzwerkprotokollen eingesetzt um Datenpakete.
Ein Referat von Rahul Chanana, Sebastian Callian und Steffen Klikar.
TCP/IP.
Schutzvermerk nach DIN 34 beachten TCP / IP. Schutzvermerk nach DIN 34 beachten TCP / IP und das OSI-Referenzmodell Process / Application Host-to-Host.
Kirsten Kropmanns Allgemeine Technologien II 9. März 2009
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik 1 Algorithm. Grundlagen des Internets 13. Mai 2002 Christian Schindelhauer.
Network Address Translation (NAT)
Kornelia Bakowsk a ‌ WG13 ‌‌‌ Köln, Protokollfamilie Welche Protokolle benötige ich um eine Seite im Internet zu öffnen?
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Netzwerke Alexander Sczyrba Jan Krüger.
1. Einführung Lernziele: Auffrischen des Wissens aus Rechnernetze
ISO / OSI Referenzmodell
Netzwerke Netzwerkgrundlagen.
TCP/IP Transmission Control Protocol/Internet Protocol
 Präsentation transkript:

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

Rolle der Transportschicht im OSI-Referenzmodell Anforderungen des Anwendungsprozesses Schichten 5..7 Transport- TCP-Segmente Dienst Schicht 4 Transport-Protokoll Netzwerk- Dienst Schichten 1..3

Einführung in TCP TCP implementiert ein verbindungsorientiertes, zuverlässiges Transport- Protokoll, aufbauend auf dem IP-Dienst.

Funktionen eines Transportdienstes Verbindungsaufbau (falls verbindungsorientiert) Datentransfer normale Daten / Daten mit Priorität, Unterbrechungssignale strom- oder paketorientiert Fehlerbehandlung, Flusssteuerung Verbindungsabbruch durch den Benutzer durch den Diensterbringer, d.h. die Transportschicht Adressierung des "Benutzers" der Transportschicht, d.h. des Anwendungsprozesses Managementfunktionen Programmierschnittstelle (API)

Adressierung von Anwendungsprozessen: Beispiel TCP/IP - Portnummern AP1 AP2 AP3 37 Port- 56 1245 Nummern Internet Physikalisches 4 UDP Netz Proto=17 3 IP Router Rechner

Verbindungserstellung (socket-Schnittstelle)

Zuweisung von Portnummern Passive Seite: Server bindet sich an einen bestimmten Port (bind()) Aktive Seite: Client sendet Anfrage oder erstellt eine Verbindung zum Port des Servers (connect()). Portnummern können Anwendungsdiensten statisch zugeordnet sein: Eintrag in einer Datenbank, die den durch Server erbrachten Diensten bestimmte Ports zuordnet (/etc/services) Dynamische Zuordnung via Verzeichnisdienst, Nameserver (lokal oder verteilt) möglich.

Koordination der global zugeordneten Ports Internet Assigned Numbers Authority (IANA): Zuständig für Vergabe von Konstanten in TCP/ IP- Protokollen (port numbers, protocol numbers, ...) Bereich 0.. 1023: Für globale "well known" ports, kontrolliert von der IANA Bereich 1024 .. 65535: Frei für dynamische Allozierung durch Prozesse oder für statische Allozierung mit lokaler Bedeutung Registrierung durch IANA ist optional Aktuelle globale / statische Zuordnungen: ftp://ftp.isi.edu/in-notes/iana/assignments

Well-known port numbers: /etc/services (Auszug) # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, most entries here have two entries # even if the protocol doesn't support UDP operations. # Updated from RFC 1700, “Assigned Numbers” echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null ftp-data 20/tcp ftp 21/tcp telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver nameserver 42/tcp name # IEN 116 whois 43/tcp nicname domain 53/tcp nameserver # name-domain server domain 53/udp nameserver

Typischer Ablauf bei dynamisch zugeteilten Ports 1. Server-Prozess signalisiert Bereitschaft, eine Kommunikationsbeziehung entgegenzunehmen; erhält mit bind() seinen Port zugeteilt. 2. Server-Prozess trägt sich mit seinem Namen und dem Port in das Verzeichnis ein. 3. Client sucht im Verzeichnis nach dem Namen des Server-Prozesses und erhält dessen Port. 4. Client erstellt eine Verbindung (TCP) oder sendet ein Anfrage-Paket (UDP) zum Server-Prozess (connect()). 5. Server nimmt Verbindung an (TCP) oder sendet ein Antwortpaket (UDP).

Eigenschaften des Transmission Control Protocol (TCP) verbindungsorientiert Vollduplex-Verbindung stellt eine “byte pipe” zur Verfügung - unstrukturierter Datenstrom Sliding Window-Protokoll Folgenummern sind Bytenummern Maximale Fenstergrösse 216 Bytes Variable Grösse des Sendefensters bestimmt durch das Maximum von: Angabe des Empfängers (receiver window size) Congestion window size, abhängig von einer lokalen Schätzung der Netzbelastung -> “Slow Start” Algorithmus

Basismechanismen von TCP Segmente variable Länger; maximale Segmentgrösse bei der Verbindungserstellung festgelegt. Jedes Segment hat eine Folgenummer, die seine Position im Datenstrom in Bytes spezifiziert. Abgesendete Segmente müssen innerhalb einer bestimmten Zeit bestätigt werden (adaptiv geschätzte Round Trip Time). Bestätigungen werden verzögert gesendet (ca. 200 ms) Jedes Segment hat eine Ende-zu-Ende-Prüfsumme; fehlerhaft empfangene Segmente werden ignoriert. Der Empfänger ordnet empfangene Segmente entsprechend ihrer Folgenummer; Duplikate werden ignoriert.

TCP-Segmentformat Code Bits: URG, ACK, PSH, RST, SYN, FIN 0 4 10 16 24 31 Port des Senders Port des Empfängers Sequenznummer im Bytestrom des Senders Bestätigungsnummer (ACK in Gegenrichtung) HLEN Reserviert Code Bits Grösse des Emfängerfensters Prüfnummer (auch über Daten) Dringlichkeitszeiger Optionen (falls vorhanden) "Padding" Daten … Code Bits: URG, ACK, PSH, RST, SYN, FIN Dringlichkeitszeiger: zeigt auf das Ende der dringenden Daten im TCP-Datenfeld.

Verbindungsaufbau Aktives Öffnen einer Verbindung (SYN) Passive Seite nimmt eine Verbindung auf einer bestimmten Port-Nummer entgegen Die initialen Sequenznummern werden auf jeder Seite zufällig gewählt und bestätigt. 3-fach-Handshake (nötig wegen des unzuverlässigen Dienstes von IP): Sende SYN seq=x Empf. SYN Sende SYN seq=y, ACK x+1 Empf. SYN + ACK Sende ACK y+1 Empf. ACK

Verbindungsaufbau, zwei Fehlerszenarien altes Duplikat altes Duplikat SYN, Seq=x SYN, Seq=x SYN, Seq=y, Ack=x+1 SYN, Seq=y, Ack=x+1 altes Duplikat Data, Seq=x+1, Ack=z wird ver-worfen RST, Seq=y+1 RST, Seq=y+1 Szenario links: altes SYN Duplikat. Host rechts antwortet normal, Host links stellt fest, dass die Bestätigung des SYN nicht auf eine laufende Verbindung passt. Szenario rechts: Data-Duplikat wird aufgrund der falschen Ack-Sequenznummer Z verworfen. Müsste y+1 sein. Verbindung wird abgebrochen mit RST.

Segmente, Datenströme und Sequenznummern TCP betrachtet einen Datenstrom als Sequenz von Bytes, die für die Übertragung in TCP-Segmente eingeteilt werden. Jedes Segment wird dann in der Regel auf ein IP-Paket abgebildet. (Grösse eines Segmentes bei lokaler Übertragung gemäss physikalischem Netz, sonst 536 Bytes) TCP verwendet ein "sliding window" Protokoll, um möglichst effizient Daten zu übertragen, und Flusskontrolle zu ermöglichen. Bei einer Vollduplex-Verbindung müssen insgesamt 4 Fenster verwaltet werden. 1 2 3 4 5 6 7 8 9 10 11

Variable Fenstergrössen Die Fenstergrösse im TCP "sliding window" Protokoll kann variiert, d.h. an den "Füllstand" des Netzes bzw. des Empfängers angepasst, werden. Flusssteuerung Jedes Bestätigungspaket enthält einen "window advertisement" Wert, in dem der Empfänger angibt, für wieviele weitere Pakete er noch freie Kapazität hat (das Fenster kann also grösser oder kleiner werden). Verkehrssteuerung Jacobsen's "slow start" Algorithmus variiert die Grösse des Sendefensters, um die Senderate an die Netzbelastung anzupassen (s. Folie 18).

Abbau einer TCP-Verbindung Aktive Seite (links) schliesst Verbindung mit FIN-Flag Neue Daten werden nicht mehr übertragen, von rechts ankommende Daten werden jedoch noch bestätigt. 4-fach-Handshake; jede Seite wird separat beendet (TCP half close) Sende FIN seq=x Empf. FIN Sende ACK x+1 Applikation informieren Empf. ACK Sende FIN, ACK x+1 Empf. FIN + ACK Sende ACK y+1 Empf. ACK

Der endliche Automat von TCP anything / reset Client Der endliche Automat von TCP begin closed passive open close active open / syn syn / syn + ack listen send / syn reset syn receiv. syn / syn + ack syn sent close / timeout / reset ack syn + ack / ack estab- lished fin / ack close wait close / fin close / fin close / fin fin wait 1 fin / ack last ack ack / closing fin-ack / ack ack / ack / timeout after 2 segment lifetimes fin wait 2 fin / ack timed wait aus: D. Comer: Internetworking with TCP/IP, Volume 1, Prentice Hall, 1995, p. 220

Der endliche Automat von TCP anything / reset Server Der endliche Automat von TCP begin closed passive open close active open / syn syn / syn + ack listen send / syn reset syn receiv. syn / syn + ack syn sent close / timeout / reset ack syn + ack / ack estab- lished fin / ack close wait close / fin close / fin close / fin fin wait 1 fin / ack last ack ack / closing fin-ack / ack ack / ack / timeout after 2 segment lifetimes fin wait 2 fin / ack timed wait aus: D. Comer: Internetworking with TCP/IP, Volume 1, Prentice Hall, 1995, p. 220

Slow Start Algorithmus Linear ansteigende Fenstergrössse timeout congestion window size (in Segmenten) ssthresh Anzahl round trip times Exponentiell ansteigende Fenstergrösse

User Datagram Protocol (UDP) Prüfsummenberechnung schliesst Pseudo-Header mit ein (gilt für UDP und TCP).

Die Socket-Schnittstelle De-facto-Standard für TCP/IP Programmierschnittstelle Zugang zu TCP, UDP und (eingeschränkt) IP Unterstützung verschiedener Protokolle Protocol familiy Address familiy Abstraktion für Kommunikationsendpunkte sockets … mit verschiedenen Kommunikationseigenschaften socket types (stream socket, datagram socket) Benennung/Adressierung von Kommunikationsendpunkten name binding

Socket-Datenstrukturen für die Adressierung allgemein: family Adresse (variabel lang) für TCP/IP: AF-INET Port IP-Adresse Für UNIX-Filesystem: AF-UNIX UNIX-Pfadname

Verbindungslose Kommunikation über Sockets Server Client socket() socket() bind() bind() recvfrom() sendto() (blockiert) recvfrom() (verarbeitet Anfrage) (blockiert) sendto()

Verbindungserstellung

Verbindungen und Verbindungsendpunkte Eine TCP-Verbindung wird durch ein Paar von Adressen und Port-Nummern identifiziert (Verbindungsendpunkte): • IP-Adresse und Port-Nummer Host A • IP-Adresse und Port-Nummer Host B Jede Verbindung wird durch ein Paar von Verbindungsendpunkten eindeutig identifiziert -> mehrere Verbindung zwischen den gleichen Hosts sind dadurch gleichzeitig möglich.

Identifikation von Verbindungen Host A (Client-Maschine) Host B (Server-Maschine) Daemon (tcp, *, 23) Client 1 Server 1 (tcp, A, 1055, B, 23) (tcp, A, 1055) (tcp, B, 23) fork Client 2 Server 2 (tcp, A, 1056, B, 23) (tcp, A, 1056) (tcp, B, 23)

Weiterführende Literatur Postel, Jon, "Transmission Control Protocol - DARPA Internet Program Protocol Specification", RFC 793, Network Information Center, SRI International, Menlo Park, Calif., September 1981 W. Richard Stevens, "UNIX Network Programming", Prentice Hall, Engelwood Cliffs, NJ, 1990, ISBN 0-13-949876-1 "man 4 tcp"