1 Die Transportprotokolle: Transmission Control Protocol (TCP) User Datagram Protocol (UDP) Die...

Click here to load reader

  • date post

    06-Apr-2015
  • Category

    Documents

  • view

    124
  • download

    0

Embed Size (px)

Transcript of 1 Die Transportprotokolle: Transmission Control Protocol (TCP) User Datagram Protocol (UDP) Die...

  • Folie 1
  • 1 Die Transportprotokolle: Transmission Control Protocol (TCP) User Datagram Protocol (UDP) Die Socket-Schnittstelle
  • Folie 2
  • 2 Rolle der Transportschicht im OSI- Referenzmodell TCP-Segmente Transport- Dienst Schicht 4 Schichten 1..3 Netzwerk- Dienst Transport-Protokoll Anforderungen des Anwendungsprozesses Schichten 5..7
  • Folie 3
  • 3 Einfhrung in TCP TCP implementiert ein verbindungsorientiertes, zuverlssiges Transport- Protokoll, aufbauend auf dem IP-Dienst.
  • Folie 4
  • 4 Funktionen eines Transportdienstes Verbindungsaufbau (falls verbindungsorientiert) Datentransfer normale Daten / Daten mit Prioritt, 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)
  • Folie 5
  • 5 Adressierung von Anwendungsprozessen: Beispiel TCP/IP - Portnummern Rechner Internet Router Physikalisches Netz IP 3 4UDP Proto=17 AP1AP2AP3 37 1245 56 Port- Nummern
  • Folie 6
  • 6 Verbindungserstellung (socket-Schnittstelle)
  • Folie 7
  • 7 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 knnen 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) mglich.
  • Folie 8
  • 8 Koordination der global zugeordneten Ports Internet Assigned Numbers Authority (IANA): Zustndig fr Vergabe von Konstanten in TCP/ IP- Protokollen (port numbers, protocol numbers,...) Bereich 0.. 1023: Fr globale "well known" ports, kontrolliert von der IANA Bereich 1024.. 65535: Frei fr dynamische Allozierung durch Prozesse oder fr statische Allozierung mit lokaler Bedeutung Registrierung durch IANA ist optional Aktuelle globale / statische Zuordnungen: ftp://ftp.isi.edu/in-notes/iana/assignments ftp://ftp.isi.edu/in-notes/iana/assignments
  • Folie 9
  • 9 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 echo7/tcp echo7/udp discard9/tcpsink null discard9/udpsink null ftp-data20/tcp ftp21/tcp telnet23/tcp smtp25/tcpmail time37/tcptimserver time37/udptimserver nameserver42/tcpname# IEN 116 whois43/tcpnicname domain53/tcpnameserver# name-domain server domain53/udpnameserver
  • Folie 10
  • 10 Typischer Ablauf bei dynamisch zugeteilten Ports 1.Server-Prozess signalisiert Bereitschaft, eine Kommunikationsbeziehung entgegenzunehmen; erhlt mit bind() seinen Port zugeteilt. 2.Server-Prozess trgt sich mit seinem Namen und dem Port in das Verzeichnis ein. 3.Client sucht im Verzeichnis nach dem Namen des Server-Prozesses und erhlt 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).
  • Folie 11
  • 11 Eigenschaften des Transmission Control Protocol (TCP) verbindungsorientiert Vollduplex-Verbindung stellt eine byte pipe zur Verfgung - unstrukturierter Datenstrom Sliding Window-Protokoll Folgenummern sind Bytenummern Maximale Fenstergrsse 2 16 Bytes Variable Grsse des Sendefensters bestimmt durch das Maximum von: Angabe des Empfngers (receiver window size) Congestion window size, abhngig von einer lokalen Schtzung der Netzbelastung -> Slow Start Algorithmus
  • Folie 12
  • 12 Basismechanismen von TCP Segmente variable Lnger; maximale Segmentgrsse bei der Verbindungserstellung festgelegt. Jedes Segment hat eine Folgenummer, die seine Position im Datenstrom in Bytes spezifiziert. Abgesendete Segmente mssen innerhalb einer bestimmten Zeit besttigt werden (adaptiv geschtzte Round Trip Time). Besttigungen werden verzgert gesendet (ca. 200 ms) Jedes Segment hat eine Ende-zu-Ende-Prfsumme; fehlerhaft empfangene Segmente werden ignoriert. Der Empfnger ordnet empfangene Segmente entsprechend ihrer Folgenummer; Duplikate werden ignoriert.
  • Folie 13
  • 13 TCP-Segmentformat 0 4 10 16 24 31 Port des SendersPort des Empfngers Sequenznummer im Bytestrom des Senders Besttigungsnummer (ACK in Gegenrichtung) HLENReserviertCode BitsGrsse des Emfngerfensters Prfnummer (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.
  • Folie 14
  • 14 Verbindungsaufbau Aktives ffnen einer Verbindung (SYN) Passive Seite nimmt eine Verbindung auf einer bestimmten Port-Nummer entgegen Die initialen Sequenznummern werden auf jeder Seite zufllig gewhlt und besttigt. 3-fach-Handshake (ntig wegen des unzuverlssigen 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
  • Folie 15
  • 15 Verbindungsaufbau, zwei Fehlerszenarien altes Duplikat SYN, Seq=x RST, Seq=y+1 SYN, Seq=y, Ack=x+1 altes Duplikat SYN, Seq=x RST, Seq=y+1 SYN, Seq=y, Ack=x+1 altes Duplikat Data, Seq=x+1, Ack=z wird ver- worfen
  • Folie 16
  • 16 Segmente, Datenstrme und Sequenznummern TCP betrachtet einen Datenstrom als Sequenz von Bytes, die fr die bertragung in TCP-Segmente eingeteilt werden. Jedes Segment wird dann in der Regel auf ein IP-Paket abgebildet. (Grsse eines Segmentes bei lokaler bertragung gemss physikalischem Netz, sonst 536 Bytes) TCP verwendet ein "sliding window" Protokoll, um mglichst effizient Daten zu bertragen, und Flusskontrolle zu ermglichen. Bei einer Vollduplex-Verbindung mssen insgesamt 4 Fenster verwaltet werden. 1 2 3 4 5 6 7 8 9 10 11
  • Folie 17
  • 17 Variable Fenstergrssen Die Fenstergrsse im TCP "sliding window" Protokoll kann variiert, d.h. an den "Fllstand" des Netzes bzw. des Empfngers angepasst, werden. Flusssteuerung Jedes Besttigungspaket enthlt einen "window advertisement" Wert, in dem der Empfnger angibt, fr wieviele weitere Pakete er noch freie Kapazitt hat (das Fenster kann also grsser oder kleiner werden). Verkehrssteuerung Jacobsen's "slow start" Algorithmus variiert die Grsse des Sendefensters, um die Senderate an die Netzbelastung anzupassen (s. Folie 18).
  • Folie 18
  • 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 besttigt. 4-fach-Handshake; jede Seite wird separat beendet (TCP half close) Sende FIN seq=x Empf. ACK Empf. FIN Sende ACK x+1 Applikation informieren Empf. FIN + ACK Sende ACK y+1 Sende FIN, ACK x+1 Empf. ACK
  • Folie 19
  • 19 Der endliche Automat von TCP closed listen syn receiv. fin wait 1 fin wait 2 estab- lished closing timed wait syn sent close wait last ack timeout after 2 segment lifetimes begin anything / reset passive open close active open / syn send / syn syn / syn + ack reset syn / syn + ack ack close / fin fin / ack ack / fin / ack fin-ack / ack ack / close / timeout / reset fin / ack close / fin syn + ack / ack Client aus: D. Comer: Internetworking with TCP/IP, Volume 1, Prentice Hall, 1995, p. 220
  • Folie 20
  • 20 Der endliche Automat von TCP aus: D. Comer: Internetworking with TCP/IP, Volume 1, Prentice Hall, 1995, p. 220 closed listen syn receiv. fin wait 1 fin wait 2 estab- lished closing timed wait syn sent close wait last ack timeout after 2 segment lifetimes begin anything / reset passive open close active open / syn send / syn syn / syn + ack reset syn / syn + ack ack close / fin fin / ack ack / fin / ack fin-ack / ack ack / close / timeout / reset fin / ack close / fin syn + ack / ack Server
  • Folie 21
  • 21 Slow Start Algorithmus ssthresh Exponentiell ansteigende Fenstergrsse Linear ansteigende Fenstergrssse Anzahl round trip times congestion window size (in Segmenten) timeout
  • Folie 22
  • 22 User Datagram Protocol (UDP) Prfsummenberechnung schliesst Pseudo-Header mit ein (gilt fr UDP und TCP).
  • Folie 23
  • 23 Die Socket-Schnittstelle De-facto-Standard fr TCP/IP Programmierschnittstelle Zugang zu TCP, UDP und (eingeschrnkt) IP Untersttzung verschiedener Protokolle Protocol familiy Address familiy Abstraktion fr Kommunikationsendpunkte sockets mit verschiedenen Kommunikationseigenschaften socket types (stream socket, datagram socket) Benennung/Adressierung von Kommunikationsendpunkten name binding
  • Folie 24
  • 24 Socket-Datenstrukturen fr die Adressierung familyAdresse (variabel lang) AF-INETPort AF-UNIXUNIX-Pfadname IP-Adresse allgemein: fr TCP/IP: Fr UNIX- Filesystem:
  • Folie 25
  • 25 Verbindungslose Kommunikation ber Sockets ServerClient socket() bind() recvfrom() sendto() (blockiert) socket() bind() sendto() recvfrom() (blockiert) (verarbeitet Anfrage)
  • Folie 26
  • 26 Verbindungserstellung
  • Folie 27
  • 27 Verbindungen und Verbindungsendpunkte Eine TCP-Verbindung wird durch ein Paar von Ad