Transportschicht Flashcards
Was ist die Aufgabe der Transportschicht und ihrer Protokolle?
Worauf läuft die Transportschicht?
Welche sind die beiden Transportprotokolle des Internets?
Die Protokolle stellen logische Kommunikation zwischen Anwendungsprozessen auf verschiedenen Hosts zur Verfügung
Transportprotokolle laufen auf Endsystemen
TCP und UDP
Wofür steht UDP und TCP?
Was ist der unterschied der beiden Protokolle und wann benutzt man welches?
UDP = User Datagram Protocol
TCP =Transmission Control Protocol
Beides sind Protokolle der Transportschicht unterscheiden sich jedoch stark. UDP zielt einen Datenaustausch in echtzeit an, wobei Paketverluste in kauf genommen werden. TCP hingegen zielt ab mit Sicherheit ein Paket von A nach B zu schicken ohne Verluste auf Kosten der dauer die dafür benötigt wird.
Was bedeutet Demultiplexing beim Empfänger?
Was bedeutet Multiplexing beim Sender?
Empfangene Segmente am richtigen Socket abliefern
Daten von mehreren Sockets einsammeln, Daten mit einem Header versehen (der später für das Demultiplexing verwendet wird)
Wodurch wird der UDP-Socket identifierziert?
Was passiert wenn ein Host ein UDP-Segment empfängt?
Durch die Empfänger-IP-Adresse und die Empfänger-Portnummer.
- Lese EmpfängerPortnummer
- Das UDP-Segment wird an den UDP-Socket mit dieser Portnummer weitergeleitet
Bemerkung: IP-Datagramme mit anderer Absender-IPAdresse oder anderer Absender-Portnummer werden an denselben Socket ausgeliefert
Wodurch wird der TCP-Socket identifiziert?
Kann ein Server mehrere TCP-Sockets gleichzeitig offen haben?
Absender-IP-Addresse, Absender-Portnummer, Empfänger-IP-Adresse, Empfänger-Portnummer
-Empfänger nutzt alle vier Werte, um den richtigen TCP-Socket zu identifizieren
Ja ein Server hat für jeden Host verschiedene eigene TCP-Sockets offen
Bemerkung: Bei nichtpersistentem HTTP wird jede Anfrage über einen eigenen Socket beantwortet (dieser wird nach jeder Anfrage wieder geschlossen)
Warum gibt es UDP?
Nach welchem Prinzip versucht UDP zu arbeiten?
Was bedeutet Verbindungslos?
- Kein Verbindungsaufbau (der zu Verzögerungen führen kann)
- Einfach: kein Verbindungszustand im Sender oder Empfänger
- Kleiner Header
- Keine Überlastkontrolle: UDP kann so schnell wie von der Anwendung gewünscht senden
UDP arbeitet nach dem “Best effort” Prinzip, dennoch können Pakete verloren gehen oder in der falschen Reihenfolge ankommen.
Verbindungslos bedeutet, dass kein Handshake zum Verbindungsaufbau benötigt wird und jedes UDP-Segment unabhängig von allen anderen behandelt wird.
Woraus besteht das UDP-Datagramm und wie groß sind die jeweiligen Segmente?
Quellportnummer 16 Bit
Zielportnummer 16 BIt
Länge 16 Bit
Prüfsumme 16 Bit
Anwendungsdaten Abhängig von den Daten
Wofür wird die Prüfsumme benötigt und wie wird sie berechnet?
Ziel: Fehler im übertragenen Segment erkennen (z.B. verfälschte Bits)
Der Sender betrachtet das Segment als 16-Bit Integer Wert und addiert mit dem einer Komplement. Danach legt der Sender das invertierte Resultat im UDP-Prüfsummen Feld ab.
Der Empfänger berechnet dann die Prüfsumme und wenn alle Bits 1 sind ist sie korrekt.
Was bedeutet Verbindungsorientiert und was ist die Fluss und Überlastkontrolle?
Verbindungsorientiert: Handshaking (Austausch von Kontrollnachrichten) initialisiert den Zustand im Sender und Empfänger, bevor Daten ausgetauscht werden.
Flusskontrolle: Sender überfordert den Empfänger nicht
Überlastkontrolle: Sender überfordert das Netzwerk nicht
Woraus besteht das TCP Datagram?
Quellport, Zielport 16-Bit
Sequenznummer 32-Bit
Acknoledgement Number ACK 32 Bit
Header Länge
Flags je 1 Bit:
URG: urgent Data (meist unbenutzt)
ACK: ACK nummer gültig
PSH: Push – Daten direkt nach oben weitergeben (meist nicht benutzt)
RST, SYN, FIN: Befehle zum Verbindungsauf- und -abbau
Empfangsfenster 16 Bit
Urgent Data Pointer 16 Bit
Prüfsumme 16 Bit
Optionen 32 Bit
Daten 32 Bit
Wie funktionieren Sequenz und ACK Nummern, wofür werden sie gebraucht?
Die Anzahl des ersten Bits des Pakets ist die Sequenznummer zudem wird noch eine ACK Nummer mit verschickt. Wenn der Host das Paket mit dieser Sequenznummer erhalten hat schickt er ein Paket mit einer eigenen Sequenznummer zurück und die ACK Nummer ist die des erhaltenen Paketes. Dadurch weiß der Host der ursprünglich Daten verschickt hatte, dass sein Paket erfolgreich und in der richtigen Reihenfolge angekommen ist. Daraufhin schickt der Host ein neues Paket mit einer neuen Sequenznummer und die ACK Nummer ist jetzt die Sequenznummer des erhaltenen Paketes, somit weiß der Empfänger, dass seine Nachricht ebenfalls angekommen ist. Dieser Austausch geht bis zum Schluss weiter.
Was ist Time-out wofür braucht man Time-out und wie wird er berechnet?
Der Empfänger der Nachricht hat eine Gewisse Zeit auf diese zu antworten und erhält man keine Antwort wird die Verbindunggeschlossen oder versucht eine neue Aufzubauen. Wird diese Zeit überschritten kommt es zu einem Time-out. Dabei muss die Time-out Zeit gut gewählt sein, denn bei zu kleiner Zeit kommt es zu oft unnötig zu Time-outs und bei zu großer Zeit wird zu langsam auf Paketverlust reagiert.
EstimatedRTT = (1- α)*EstimatedRTT + α*SampleRTT
Üblicher Wert: α = 0.125
DevRTT = (1-β)*DevRTT + β*|SampleRTT-EstimatedRTT|
(üblicherweise: β = 0.25)
TimeoutInterval = EstimatedRTT + 4*DevRTT
Wie funktioniert die Flusskontrolle?
Durch das Feld Windowsize im TCP-Datagramm wird die Kapazität angegeben, die der Empfänger noch erhalten kann, wodurch der Sender seine Daten die er schickt reduziert.
Dabei hat der Empfänger einen Empfangspuffer
Empfänger: Platz im Puffer, RcvWindow
RcvWindow = RcvBuffer-[LastByteRcvd - LastByteRead]
Absender: Menge der unbestätigten Daten
LastByteSent - LastByteAcked ≤ RcvWindow

Wie funktioniert der Verbindungsaufbau bei TCP, welche flags werden dabei benutzt?
Schritt 1: Client sendet TCP-SYNSegment an den Server
Initiale Sequenznnummer (Client->Server)
keine Daten
Schritt 2: Server empfängt SYN und antwortet mit SYNACK
Server legt Puffer an
Initale Sequenznummer (Server->Client)
Schritt 3: Client empfängt SYNACK und antwortet mit einem ACK – dieses Segment darf bereits Daten beinhalten

Wie funktioniert das schließen einer TCP Verbindung?
Schritt 1: Client sendet ein TCP-FIN-Segment an den Server
Schritt 2: Server empfängt FIN, antwortet mit ACK; dann sendet er ein FIN (kann im gleichen Segment erfolgen)
Schritt 3: Client empfängt FIN und antwortet mit ACK
Beginnt einen “TimedWait”-Zustand – er antwortet auf Sendewiederholungen des Servers mit ACK
Schritt 4: Server, empfängt ACK und schließt Verbindung

Wofür ist die Überlastkontrolle gedacht?
Um das innere Netzwerk nicht zu überfordern, wenn zu viele Endsysteme zu viele Daten verschicken, wodurch Paketverlust und eine lange Verzögerung entstehen kann.
Was sind die Kosten der Überlast?
Mehr Arbeit (Übertragungswiederholungen) bei gleichem “Goodput”
Überflüssige Übertragungswiederholungen: Leitung befördert mehrere Kopien desselben Pakets
Ansätze zur Kontrolle von Überlast:
Wie funktioniert der End-zu-End Ansatz?
Wie funktioniert Netzwerkunterstützte Kontrolle?
Ende-zu-Ende:
Keine explizite Unterstützung durch das Netzwerk
Überlast wird von den Endsystemen durch Paketverlust und erhöhte Verzögerung festgestellt
Dies ist das Vorgehen im Internet (TCP)
Netzwerkunterstützt:
Router geben den Endsystemen Hinweise:
Durch ein einzelnes Bit, welches im Paketheader von den Routern gesetzt werden kann (TCP/IP ECN, ATM)
Durch Vorgabe einer expliziten Senderate
Wie erkennt der Sender Überlast?
Was sind die drei Mechanismen gegen Überlast?
Erkennen:
Verlustereignis = Timeout oder drei doppelte ACKs
TCP: Sender verringert seine Rate (CongWin) nach einem Verlustereignis
Drei Mechanismen:
Additive Increase, Multiplicative Decrease (AIMD)
Slow Start
Vorsichtiges Verhalten nach einem Timeout
Wie ist die Formel für die Rate bei der Überlastkontrolle?
Erkläre die einzelnen Parameter.
Rate = CongWin RTT Byte/s
RTT = Round trip time
CongWin = ist dynamisch, hängt von der wahrgenommenen Netzwerklast ab
Wie funktioniert Slow Start?
CWnd wird zu Beginn auf 1 gesetzt. Also darf man nur eine Dateneinheit aufeinmal schicken.
Erhält man eine Antwort wird CWnd um eins erhöht. Gilt für jede Antwort, demnach steigt CWnd exponentiell jedes mal wenn man auf seine Dateneinheiten Antworten bekommt.
Dies geht so weiter bis zum ersten Verlustereignis.

Wie funktioniert Congestion Avoidance?
Man möchte nicht durch Slowstart andauernd das CWnd auf eins zurücksetzten, sondern viel eher durchgängig so viele Daten schicken wie möglich. Dadurch nutzt man Congestion Avoidance.
Beim Beginn: CongWin = CongWin(bei letzter Überlast)/2
Normalerweise wird CongWin um 1/10 MSS/RTT erhöht
Kommen 3 doppelte ACKs –> Fast-Recovery
Tritt ein Timeout auf–> Wechsel in Slow Start und ssthresh wird auf CWnd/2 gesetzt
Wie funktioniert Additive Increase, Multiplicative Decrease?
Additative Increase: Bin ich bei dem ssthresh angekommen steige ich die zu schickenden Dateneinheiten nur noch um eine Dateneinheit jedes mal, bis es wieder zu einer Überlast kommt, dann setzt Multiplicative Decrease ein.
Multiplicative Decrease: Kommt es zur Überlast durch mehrere gleiche ACK Nummern wird der sstresh halbiert und es wird zur Fast Recovery angesetzt.
Achtung bei einem Time-out wird nicht zu Fast Recovery gesetzt, sondern es wird wieder mit Slow Start gearbeitet.
Wie funktioniert Fast Recovery?
Fast Recovery tritt auf bei mehreren doppelt gesendeten ACK Nummern.
Wird dies erkannt wird der ssthresh auf CWnd/2 gesetzt
Jede Dateneinheit für die ich keine ACK Nummer erhalten habe wird direkt wieder geschickt zusätzlich zu den weiteren Daten die ich schicke.
Funktioniert das beginnt Additative increasing. Also nach jedem erfolgreichen Datenaustausch eine Dateneinheit mehr bis es erneut zu einem Datenverlust kommt.

Wann wird von Slowstart in Congestion Avoidance und wann in Fast recovery gewechselt und andersrum?

Was ist TCP Fairness und weshalb ist TCP Fair?
Wenn K TCP-Sitzungen sich denselben Engpass mit Bandbreite R teilen, dann sollte jede eine durchschnittliche Rate von R/K erhalten.

Warum ist es fair?
Beide laufen in Congestion-Avoidance Modus
Additive Increase führt zu einer Steigung von 1 MSS, wenn der Durchsatz wächst
Multiplicative Decrease reduziert den Durchsatz proportional