Sanduhrmodell

  1. Anwendungsschicht
  2. Transport- und Vermittlungsschicht
  3. Niedrigkommunikationsschichten

Transport und Vermittlungsschicht

Vermittlungsschicht

Logische Kommunikation zwischen Rechner

  • Kopplung von Netzwerken
  • Globle Addressierung
  • Routing
Transportschicht

Logische Kommunikation zwischen Prozessen

  • Baut auf Vermittlungsschicht auf
  • und erweitert diese

Kommunikationsarten

Verbindungsorientiert
  1. Verbindungsaufbau
  2. Kommunikation
  3. Verbindungsabbau

Virtuelle Leitung: Reservierung von Kapazitäten und Puffern bei Verbindungsaufbau. VC Nachricht findet weg, wird zur Identifizierung bei Kommunikation mitgesendet. Bei Abbau wird die Reservierung gelöscht.

Vorteil: Garantierte Datenrate, Geringe Fehleranfälligkeit, Flusskontrolle.

Nachteil: Aufwendig.

Verbindungslos
  1. Nachrichtenstrom in Pakete verpacken
  2. Spontan, ohne Reservierung Senden
  3. Einfach

Spontanes Senden: Jedes Paket wird mit Absender und Ziel versehen. "Store and Forward"-Netz, Router trifft eigene entscheidung pro Paket, Zieladresse bestimmt den Weg (mehrere möglich, unterschiedliche möglich).

Vorteil: Senden immer möglich (redundante Pfade), kein Routing-Aufwand.

Nachteil: Pakete können in falcher Reihenfolge, gar nicht oder stark verzögert Ankommen.

Paket- vs. Leitungsvermittlung

Da die Leitung nur bei Bedarf genutzt wird und die Kollisionswahrscheinlichkeit sehr gering ist, ermöglicht die Paketvermittlung eine sehr viel bessere Auslatung des Netzwerkes.

Transmission Control Protocol

Eigenschaften

  • Adressierung von Anwendungen über Ports
  • Netzunabhängig, zuverlässig, kostengünstig
  • Verbindungsorientiert
  • Nur virtuelle Verbindungen über verbindungsloses IP
    • Segmentierung in Pakete
    • Bytestrom anstelle von Nachrichtenstrom
    • Fehlerbehandlung und Flusskontrolle
Verbindungsorientierung
  • Verbindungsaufbau durch Kontrollsegmente
  • TCP täuscht Verbindungsorientierung nur vor

Three-Way-Handshake

Connectionrequest, Bestätigung des Requests, Bestätigung der Bestätigung

  1. SYN, SEQ-No=x
  2. SYN, ACK, SEQ-No=y, ACK-No=x+1
  3. ACK, ACK-No=y+1, SEQ-No=x+1
Flusskontrolle
  • Erlaubt das Senden mehrerer Segmente gleichzeitig
  • Der Empfänger puffert die angekündigten Segmente
  • (Die aktuelle Netzauslastung wird berücksichtigt)

Verwendung eines "Fensters":

  1. Sender und Empfänger vereinbaren ein "Übertragungsfenster" (= Größe des freien Bufferspeichers)
  2. Sender nummeriert die versendeten Bytes
    1. Fenstergröße = Maximal sendbar ohne quittierung
  3. Empfänger quittiert Empfang
  4. Sender rückt Fenster vor und verschickt erneut

Vorteil: Sender kann Kapazität des Netzes nutzen. Empfängerpuffer wird nicht überlastet.

Sliding Window:

  1. n-Bit Quittung = $2^n$ mögliche Nummern
  2. Bytes fortlaufend mit MOD (1) Nummern belegen
  3. Fenstergröße $1 <= W <= (1)$ definieren
  4. Maximal W Bytes dürfen gleichzeitig gesendet sein
  5. Beim Emfangen der Quittung wird das Fenster verschoben

Algorithmen zum Neusenden:

  • Go-Back-N: ab Byte $j$ wird alles wiederholt
    • Kein explizites REJECT, nur positive Quittungen
    • Verwerfe unpassende (SEQ-Nr) Pakete
    • Viele unnötige Wiederholungen, lange Timeoutzeiten
  • Selectiv Repeat/Reject: Nur Neuanforderung verlorener/beschädigter Pakete
    • Empfänger speichert Pakete mit falcher Nummer, bestätigt diese aber nicht, solange die Pakete vorher nicht da sind

TCP-Header

  • Source Port: Anwendung auf Senderseite (Port)
  • Destination Port: Anwendung auf Empfängerseite (Port)
  • Sequencenumber: Nummer des ersten enthaltenen Datenbytes
  • Acknowledgementnumber: Bestätigt zuvor empfangene Daten
  • Data Offset: Länge des Segment-Headers nicht fix, d.h. hier Beginn des Datenteils
  • Res.: Reserviert für künftige Nutzung
  • Code:
    • URG: Urgent Pointer ist gültig
    • PSH: Fordert einen Push
    • SYN: Synchronisiere Sequenznummer
    • ACK: Acknowledgmentfield ist gültig
    • RST: Verbindung zurücksetzen
    • FIN: Sender hat ende des Streams erreicht
  • Window: Größe des freien Pufferspeichers
  • Checksum: 16-Bit Längsparität
  • Urgen Pointer: Kann Teile als dringend markieren

TCP berücksichtigt auch Netzzustand (eigentlich Aufgabe von IP

Slow Start / Congestion Avoidance

Flusskontrolle: Basiert auf Rückmeldungen, Flusskontrollenster (Receiver-Window)

Staukontrolle: Bei Datenverlust wird Netzüberlastung angenommen. Basiert auf Schätzung des Netzzustandes. Überlagerungsfenster (Congestion-Window)

Congestion-Window: Start bei 1. Bei erfolgreicher Übertragung wird die größe verdoppelt (bis zu einem Schwellenwert). Maximal bis Größe des Receiver-Windows.

Sendefenster = min[ReceiverWindow, Congestion-Window]

User Datagram Protocol

  • Unzuverlässige Datenübertragung
    • Keine Fehlerbehandlung (NO ACK)
    • Fehlerhafte Pakete einfach Verworfen
  • Geringe Zuverlässigkeit, dafür schnell
  • Sehr kleiner Header (nur 8 Byte)

UDP-Header

  • Adressierung der Anwendung durch Ports
  • Message-Length
  • Checksum

Zusammenfassung

TCP

  • Zuverlässig durch Quittierung und Flusskontrolle
  • Virtuelle Verbindungsorientierung

UDP

  • Schnelle Übertragung ohne Kontrollmechanismus
  • Nur Port und Checksum angehangen

Weiterentwicklung

  • RTP (Real-Time Transmission Protocol) für Medien
  • DCCP als Kompromisslösung zwischen TCP und UDP