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