Die Transportschicht: UDP und TCP

Lerne, wie die Transportschicht aus der Best-Effort-Übertragung des Internets zwischen Hosts eine Kommunikation zwischen Anwendungsprozessen macht. Sieh dir an, wie Portnummern jedes Segment dem richtigen Socket zuordnen, was UDP zu IP hinzufügt und wann eine Anwendung UDP wählen sollte. Erarbeite anschließend Schritt für Schritt ein zuverlässiges Protokoll aus Prüfsummen, Quittungen, Sequenznummern, Zeitgebern und Schiebefenstern mit Go-Back-N und Selective Repeat. Verfolge dann TCP im Detail: das Segmentformat, bytebasierte Sequenz- und Quittungsnummern, den Handshake und den Verbindungsabbau, die Schätzung der Umlaufzeit und Zeitüberschreitungen, Übertragungswiederholungen und Fast Retransmit sowie die Flusskontrolle mit dem Empfangsfenster.

MittelEinheit 3 von 8 in Kurs: Computernetzwerke – Internetprotokolle, TCP/IP und Routing

Was du lernst

  1. Beschreibe die Dienste, die die Transportschicht auf der Vermittlungsschicht aufbaut, und verfolge, wie jedes eintreffende Segment mithilfe von Portnummern und Sockets den richtigen Anwendungsprozess erreicht.
    • Beschreibe die Dienste der Transportschicht und ihre Grenzen
      Erkläre, wie die Transportschicht aus der Übertragung zwischen Hosts eine Kommunikation zwischen Prozessen macht, und vergleiche die Dienste, die TCP und UDP Anwendungen bieten.
    • Ordne Segmente anhand der Ports dem richtigen Socket zu
      Erkläre anhand von Portnummern das Multiplexen und Demultiplexen und bestimme, welcher Socket ein UDP- oder TCP-Segment empfängt.
  2. Lies den UDP-Header, berechne und überprüfe seine Prüfsumme und entscheide für eine bestimmte Anwendung, ob der minimale Dienst von UDP besser geeignet ist als TCP.
    • Lies den UDP-Header und berechne seine Prüfsumme
      Interpretiere die vier Felder des UDP-Headers und berechne die Internet-Prüfsumme mit Einerkomplementarithmetik.
    • Entscheide, wann UDP das geeignete Transportprotokoll ist
      Wäge Geschwindigkeit und Kontrolle bei UDP gegen die fehlende Zuverlässigkeit, Flusskontrolle und Überlastkontrolle ab und wähle das Transportprotokoll passend zu den Anforderungen einer Anwendung.
  3. Entwirf Schritt für Schritt ein Protokoll, das Daten über einen Kanal, der Pakete beschädigt und verliert, korrekt überträgt. Steigere anschließend seine Effizienz durch Pipelining mit Go-Back-N und Selective Repeat.
    • Behebe Bitfehler mithilfe von Quittungen und Sequenznummern
      Entwickle ein Stop-and-Wait-Protokoll für einen Kanal, der Bits beschädigt, und erkläre, warum es Prüfsummen, Quittungen, Übertragungswiederholungen und Sequenznummern braucht.
    • Behandle Paketverluste mit Zeitgebern und bestimme die Leistungsfähigkeit von Stop-and-Wait
      Ergänze einen Countdown-Zeitgeber für verlorene Pakete, verfolge das Alternating-Bit-Protokoll in Verlustszenarien und berechne, warum Stop-and-Wait eine schnelle Verbindung schlecht ausnutzt.
    • Übertrage Pakete mit Go-Back-N im Pipelining-Verfahren
      Verfolge Sender und Empfänger bei Go-Back-N mit kumulativen Quittungen und einem einzigen Zeitgeber und erkläre die Beschränkung der Fenstergröße.
    • Übertrage mit Selective Repeat nur verlorene Pakete erneut
      Verfolge Selective Repeat mit Einzelquittungen, Zeitgebern pro Paket und Pufferung beim Empfänger, erkläre die strengere Fensterbeschränkung und vergleiche das Verfahren mit Go-Back-N.
  4. Beschreibe die TCP-Verbindung und das Segmentformat, bestimme Sequenz- und Quittungsnummern in einem Bytestrom und verfolge, wie Verbindungen aufgebaut und abgebaut werden.
    • Beschreibe den Aufbau von TCP-Verbindungen und TCP-Segmenten
      Erkläre, was eine TCP-Verbindung ist, wie TCP Anwendungsdaten als Bytestrom behandelt und wozu die einzelnen Felder des TCP-Headers dienen.
    • Nummeriere Bytes mit Sequenz- und Quittungsnummern
      Bestimme die Sequenz- und Quittungsnummern von Segmenten in beiden Richtungen einer Verbindung, auch bei Ankunft außerhalb der Reihenfolge und bei Sequenznummernüberlauf.
    • Baue TCP-Verbindungen auf und ab
      Verfolge den Drei-Wege-Handshake und den Verbindungsabbau anhand von Sequenznummern und Zuständen und erkläre TIME_WAIT, TCP-Resets und SYN-Flooding.
  5. Schätze die Umlaufzeit und lege das TCP-Wiederholungszeitlimit fest, verfolge, wie TCP Verluste erkennt und behebt, und verhindere mithilfe des Empfangsfensters, dass der Sender den Puffer des Empfängers überfüllt.
    • Schätze die Umlaufzeit und lege das Wiederholungszeitlimit fest
      Berechne die geglättete TCP-Umlaufzeit, ihre Schwankung und das Wiederholungszeitlimit und erkläre, wie das Zeitlimit nach einem Verlust steigt.
    • Verfolge die Übertragungswiederholungen und Quittungen von TCP
      Verfolge Sender und Empfänger bei TCP durch verlorene, verzögerte und duplizierte Quittungen, wende die Quittungsregeln an und nutze Fast Retransmit.
    • Verhindere mit Flusskontrolle einen Überlauf des Empfangspuffers
      Berechne das Empfangsfenster, wende die Begrenzung des Senders für unquittierte Daten an und erkläre Nullfenster, Fensterskalierung und die Durchsatzgrenze durch ein Fenster.

Transportschicht einfach erklärt

5 Kapitel

1

Von Hosts zu Anwendungsprozessen

Auf einem Host können gleichzeitig ein Browser, ein Anruf und eine Dateiübertragung laufen. Jede Anwendung braucht ihre eigenen Daten, obwohl sie eine Netzwerkschnittstelle gemeinsam nutzen. Transportprotokolle bieten diesen Dienst auf Prozessebene oberhalb von IP. Verfolge ein Segment vom sendenden zum empfangenden Socket und unterscheide dann anhand von Ports und Adressen die UDP-Zustellung von den separaten Verbindungen, die ein TCP-Server verwaltet.

1.1 Was TCP und UDP zu IP hinzufügen

Eine Anwendung sendet über einen Socket, die Schnittstelle zwischen ihrem Prozess und der Transportschicht. Die Transportschicht lässt es so erscheinen, als kommunizierten Prozesse auf verschiedenen Hosts direkt miteinander. Das ist logische Kommunikation: Die Daten durchqueren weiterhin Verbindungen und Router, aber die Anwendung arbeitet über ihren lokalen Socket.

Verfolge die Daten durch die Schichten

Beim Sender übernimmt das Transportprotokoll Anwendungsdaten, teilt sie bei Bedarf in Abschnitte und ergänzt einen Transportheader. Das entstehende Segment geht an IP. IP ergänzt seinen eigenen Header und erzeugt so ein IP-Datagramm, das durch das Netz übertragen wird. Am Ziel übergibt IP das Segment an das Transportprotokoll, das den Transportheader interpretiert und die Daten an einen Socket liefert.

Die Protokolllogik läuft auf den Endhosts. Gewöhnliche Router leiten IP-Datagramme weiter; sie übernehmen keine TCP-Quittungen und Übertragungswiederholungen für die Anwendungen. Stell dir die IP-Adresse als Anschrift eines Gebäudes und den empfangenden Socket als den vorgesehenen Empfänger darin vor. Einen Brief zum Gebäude und ihn zur richtigen Person zu bringen, sind getrennte Aufgaben.

IP bietet eine Best-Effort-Übertragung zwischen Hosts. Datagramme können verloren gehen, dupliziert, in anderer Reihenfolge zugestellt oder beschädigt werden. Die Transportschicht erweitert die Übertragung auf Prozesse und kann Mechanismen ergänzen, die diese Fehler beheben.

Vergleiche die Dienste
DienstUDPTCP
KommunikationsartUnabhängige NachrichtenVerbindung mit einem Bytestrom
Zuverlässige Übertragung in der richtigen ReihenfolgeNeinJa
Flusskontrolle für den EmpfängerNeinJa
Überlastkontrolle für das NetzKein eingebauter MechanismusJa
Maximale Verzögerung oder MindestdurchsatzKeine GarantieKeine Garantie
Verschlüsselung durch das Protokoll selbstNeinNein

UDP ergänzt die IP-Übertragung um Ports und eine Fehlerprüfung. Ein Segment kann ohne vorherigen Austausch zum Verbindungsaufbau ankommen. UDP stellt ein verlorenes Segment nicht wieder her und hält ein späteres Segment nicht zurück, bis ein früheres eintrifft.

TCP richtet vor der normalen Datenübertragung einen Verbindungszustand ein. Es nummeriert Bytes, prüft auf Fehler, erhält Quittungen und überträgt fehlende Daten erneut. Die empfangende Anwendung erhält einen zuverlässigen Bytestrom in der richtigen Reihenfolge. Flusskontrolle schützt ihren Puffer; Überlastkontrolle reagiert auf die Netzlast.

Zuverlässigkeit macht das darunterliegende Netz nicht zuverlässig. Verschwindet ein IP-Datagramm, sendet TCP eine weitere Kopie der fehlenden Daten. Treffen spätere Bytes zuerst ein, kann der Empfänger sie zurückhalten, bis die Lücke gefüllt ist. Die Anwendung sieht eine korrigierte Übertragung, muss aber möglicherweise länger warten. Weder TCP noch UDP kann allein durch die Nutzung von Best-Effort-IP eine Zustellfrist versprechen oder Netzkapazität reservieren.

Wähle den Dienst am Socket

Ein Stream-Socket wählt normalerweise TCP; ein Datagramm-Socket wählt UDP. HTTP/1.1 und HTTP/2, die E-Mail-Übertragung mit SMTP und die entfernte Anmeldung mit SSH nutzen TCP. Gewöhnliche DNS-Anfragen nutzen häufig UDP. HTTP/3 nutzt QUIC über UDP: QUIC bietet zuverlässige Datenströme und Sicherheit auf Basis des minimalen UDP-Dienstes.

Eine TCP-Verbindung allein hält ein Passwort nicht geheim. TLS ergänzt Verschlüsselung und Authentifizierung oberhalb von TCP; QUIC integriert TLS in seinen Aufbau. Zuverlässigkeit beantwortet die Frage, ob Bytes korrekt und in der richtigen Reihenfolge bei der Anwendung ankommen. Vertraulichkeit beantwortet die Frage, ob ein Beobachter sie lesen kann.

Wichtige Erkenntnisse

  • IP überträgt zwischen Hosts; die Transportschicht überträgt zwischen Anwendungsprozessen.
  • TCP behebt Verluste und Reihenfolgefehler an den Endhosts.
  • UDP überträgt Nachrichten ohne eingebaute Wiederherstellung oder Flusskontrolle.
  • Weder TCP noch UDP garantiert allein eine Zustellfrist, einen Durchsatz oder Verschlüsselung.

1.2 Ports und Socketauswahl

Ein Host hat häufig viele Sockets geöffnet. Das Multiplexen sammelt ausgehende Daten von diesen Sockets und ergänzt Transportheader. Das Demultiplexen wählt für jedes eintreffende Segment den empfangenden Socket aus.

Lies die Adressinformationen

Sowohl TCP als auch UDP enthalten einen 16-Bit-Quellport und einen 16-Bit-Zielport. Die Werte reichen von 0 bis 65.535. Der Zielport identifiziert den empfangenden Dienst; der Quellport hilft dem Kommunikationspartner, seine Antwort zu adressieren. Die IANA teilt Ports in Systemports 0–1023, Benutzerports 1024–49151 und dynamische Ports 49152–65535 ein.

Server lauschen an vereinbarten Ports: SSH nutzt 22, SMTP 25, DNS 53, HTTP 80 und HTTPS üblicherweise 443. Clients erhalten vom Betriebssystem normalerweise einen vorübergehenden, ephemeren Port. Dessen konfigurierter Bereich muss nicht dem dynamischen Bereich der IANA entsprechen: Ein häufig verwendeter Linux-Standard ist 32768–60999, während Windows häufig 49152–65535 nutzt.

Bei einem eintreffenden IP-Datagramm bestimmt der Host zunächst das Transportprotokoll. Der IPv4-Protokollwert 6 bedeutet TCP und 17 bedeutet UDP; IPv6 identifiziert das Protokoll der höheren Schicht durch seine Kette von Next-Header-Feldern. TCP-Port 53 und UDP-Port 53 gehören zu unterschiedlichen Namensräumen der Transportprotokolle. Der Empfänger wählt dann anhand von Adressen und Ports einen Socket aus und stellt die Daten für die Anwendung in eine Warteschlange.

UDP: viele Clients, ein empfangender Socket

Im grundlegenden Modell eines nicht verbundenen UDP-Servers wird der empfangende Socket anhand von Ziel-IP-Adresse und Zielport ausgewählt. Verschiedene Clients können alle an denselben Socket senden.

Ein Server unter 203.0.113.53 lauscht an UDP-Port 53. Anfragen von 198.51.100.7:51000 und 192.0.2.44:62011 erreichen diesen einen Serversocket. Die erste Antwort geht von 203.0.113.53:53 an 198.51.100.7:51000. Die Anwendung erhält Quelladresse und Quellport jeder Anfrage, damit sie dem richtigen Client antworten kann. Ein verbundener UDP-Socket kann auch einschränken, von welchem Kommunikationspartner er empfängt; ein UDP-Handshake kommt nicht hinzu.

TCP: Verbindungen anhand von vier Werten unterscheiden

Ein TCP-Server hat einen lauschenden Socket und separate Verbindungssockets. Eine Verbindung wird durch das Vierertupel aus Quell-IP-Adresse, Quellport, Ziel-IP-Adresse und Zielport identifiziert.

Für einen Server unter 203.0.113.10:80 sind dies unterschiedliche Verbindungen:

  • 198.51.100.7:50312 → 203.0.113.10:80
  • 198.51.100.7:50313 → 203.0.113.10:80
  • 192.0.2.44:50312 → 203.0.113.10:80

Die ersten beiden unterscheiden sich im Quellport. Der erste und der dritte haben denselben Quellport, unterscheiden sich aber in der Quelladresse. Alle drei nutzen den Serverport 80. Ein separater Serverport pro Client ist unnötig, weil das vollständige Vierertupel ihre Verbindungssockets unterscheidet. Ein Prozess kann viele solche Sockets bearbeiten.

Wenn kein Socket passt

Ein SYN an einen geschlossenen TCP-Port erhält normalerweise einen TCP-Reset mit gesetztem RST-Flag. Ein UDP-Segment an einen Port ohne Empfänger löst normalerweise eine ICMP-Meldung „Port nicht erreichbar“ aus. Firewalls, Filter und Antwortbegrenzungen können beeinflussen, was zurückkommt. Bei einer Portprüfung ist SYN-ACK ein Beleg für einen lauschenden TCP-Dienst; RST zeigt eine Ablehnung an. Ausbleibende Antworten allein lassen nicht unterscheiden, ob gefiltert wird, ein Verlust vorliegt oder ein Host nicht verfügbar ist.

Wichtige Erkenntnisse

  • Multiplexen führt ausgehenden Socketverkehr zusammen; Demultiplexen wählt einen empfangenden Socket aus.
  • Portnummern sind 16 Bit lang und gehören zu einem Transportprotokoll.
  • Ein einfacher UDP-Server kann über einen Socket Nachrichten vieler Clients empfangen.
  • TCP unterscheidet Verbindungssockets anhand beider IP-Adressen und beider Ports.
  • Geschlossene TCP- und UDP-Ports erzeugen normalerweise unterschiedliche Antworten.
2

UDP-Nachrichten, Prüfsummen und Anwendungsentscheidungen

UDP hält den Transportdienst klein: ein kurzer Header, Zustellung an einen Socket und eine Prüfsumme. Diese Einfachheit ist nützlich, wenn eine Anwendung den Versandzeitpunkt ihrer Nachrichten kontrollieren möchte, überlässt aber die Wiederherstellung und Ratensteuerung der Anwendung oder einem Protokoll oberhalb von UDP. Lies den Header und rechne die Prüfsummenaddition mit zyklischem Übertrag durch. Beurteile eine Anwendung dann anhand ihrer Fristen und Zustellanforderungen, statt alle Echtzeitdienste gleichzusetzen.

2.1 Der UDP-Header und die Internet-Prüfsumme

UDP sendet jede Nachricht unabhängig, ohne Handshake oder gemeinsamen Verbindungszustand für Sequenznummern. Sein fester 8-Byte-Header enthält vier Felder mit je 16 Bit: Quellport, Zielport, Länge und Prüfsumme.

Zähle die richtigen Bytes

Die Länge umfasst den UDP-Header und seine Daten. Sie beträgt mindestens 8 Byte. Eine Nachricht mit 40 Byte Daten hat die UDP-Länge 48. Bei einem IPv4-Header von 20 Byte und ohne IP-Optionen ist das vollständige IP-Datagramm 68 Byte lang. Der IP-Header liegt außerhalb der UDP-Länge.

Die Prüfsumme erkennt manche Bitfehler im UDP-Header und in den Daten. Sie umfasst auch einen Pseudoheader, der aus IP-Adressinformationen, der Protokollnummer und der UDP-Länge gebildet wird. Diese Werte helfen, ein Segment zu erkennen, das mit falschen Adressinformationen zugestellt wurde. Der Pseudoheader dient als Eingabe für die Berechnung; er ist kein zusätzlich übertragener Teil des UDP-Headers.

Addiere mit zyklischem Übertrag

Behandle die Eingabe für die Berechnung als 16-Bit-Wörter. Setze das Prüfsummenfeld während der Berechnung auf null. Addiere die Wörter und führe jeden Übertrag über Bit 16 hinaus an das niederwertige Ende zurück. Das ist die Einerkomplementaddition. Kehre schließlich alle 16 Bit der so gebildeten Summe um, um die Prüfsumme zu erhalten. Ist die Byteanzahl ungerade, hänge nur für die Berechnung ein Nullbyte an.

Verwende für drei Beispielwörter die Hexadezimalschreibweise, um den Übertrag sichtbar zu machen:

  1. Addiere A35C und 69C3 zu 10D1F. Die führende 1 ist ein Übertrag außerhalb der 16 Bit.
  2. Führe ihn zurück: 0D1F + 1 = 0D20.
  3. Addiere 1234: 0D20 + 1234 = 1F54.
  4. Bilde das Komplement jedes Bits: FFFF − 1F54 = E0AB.

Die Prüfsumme ist E0AB. Den führenden Übertrag einfach wegzulassen, würde eine falsche Summe ergeben. Binär lautet die endgültige Summe 0001 1111 0101 0100 und ihr Komplement 1110 0000 1010 1011.

Prüfe beim Empfänger

Der Empfänger wiederholt die Addition mit zyklischem Übertrag über Pseudoheader und empfangenes Segment, diesmal einschließlich des Prüfsummenfeldes. Ein unverändertes Segment ergibt nur Einsen, FFFF. Hier gilt 1F54 + E0AB = FFFF. Ein Ergebnis mit einem Nullbit zeigt einen erkannten Fehler an. UDP verwirft ein Segment stillschweigend, wenn dessen mitgelieferte Prüfsumme ungleich null die Prüfung nicht besteht; es sendet keinen Ersatz und korrigiert die Daten nicht.

Nur Einsen bedeuten, dass die Prüfung bestanden wurde, nicht dass jeder mögliche Fehler ausgeschlossen ist. Einander ausgleichende Änderungen in verschiedenen Wörtern können die Summe unverändert lassen. Die Prüfsumme erkennt Fehler; sie lokalisiert die fehlerhaften Bits weder noch korrigiert sie sie.

Warum die Endhosts erneut prüfen

Eine Verbindungsprüfung schützt eine bestimmte Verbindung. Manche Verbindungen haben möglicherweise keine solche Prüfung, und auch innerhalb von Geräten zwischen Verbindungen können Daten beschädigt werden. Eine Ende-zu-Ende-Prüfung testet, was den Zielhost erreicht hat. Das veranschaulicht das Ende-zu-Ende-Prinzip: Eine Eigenschaft, die über den ganzen Pfad benötigt wird, muss an dessen Endpunkten geprüft werden.

Bei IPv4 zeigt ein UDP-Prüfsummenfeld mit dem Wert null an, dass der Sender die Prüfsumme weggelassen hat. Eine berechnete Prüfsumme mit dem Wert null wird als Folge von Einsen übertragen, um diese Unterscheidung zu erhalten. IPv6 verlangt normalerweise eine UDP-Prüfsumme, mit eng festgelegten Ausnahmen für Tunnel. TCP verwendet ebenfalls eine Internet-Prüfsumme mit Pseudoheader und schreibt seine Prüfsumme vor.

Wichtige Erkenntnisse

  • Die UDP-Länge umfasst den 8-Byte-Header und schließt den IP-Header aus.
  • Führe jeden Übertrag in die niederwertigen 16 Bit zurück und bilde dann das Komplement der Summe.
  • Ergibt die Prüfsummenaddition beim Empfänger nur Einsen, wurde die Prüfung bestanden.
  • UDP verwirft ein Segment mit einer fehlgeschlagenen Prüfsumme ungleich null, ohne es erneut zu übertragen.
  • Die Prüfsumme kann Fehler übersehen und nicht korrigieren.
  • Ein IPv4-Prüfsummenfeld mit dem Wert null bedeutet, dass die UDP-Prüfsumme weggelassen wurde.

2.2 Wähle UDP nach den Anforderungen der Anwendung

Der kleine Dienstumfang von UDP gibt einer Anwendung Kontrolle über ihre Nachrichten. Es gibt keinen Transport-Handshake vor der ersten Nachricht, keine UDP-Warteschlange für Übertragungswiederholungen und keinen UDP-Mechanismus, der spätere Daten hinter einer fehlenden früheren Nachricht zurückhält. Die Anwendung entscheidet, was sie sendet und welche Verluste relevant sind.

Stimme die Wiederherstellung auf den nutzbaren Ankunftszeitpunkt ab

Betrachte Sprachdaten, die in Abschnitten von 20 ms gesendet werden: 50 Nachrichten pro Sekunde. Ein fehlender Abschnitt soll in 60 ms abgespielt werden, doch die Erkennung des Verlusts und der Empfang einer weiteren Kopie dauern etwa 150 ms. Dieser wiederhergestellte Abschnitt käme zu spät an. Eine Sprachanwendung kann spätere Abschnitte rechtzeitig abspielen und den fehlenden Ton kaschieren, etwa indem sie die Lücke glättet.

Entscheidend ist die verbleibende Zeit bis zur Wiedergabe, nicht die Dauer von 20 ms eines Abschnitts. Kann die Wiederherstellung vor der Frist abgeschlossen werden, kann eine Übertragungswiederholung helfen. TCP muss Bytes in der richtigen Reihenfolge ausliefern, sodass ein fehlendes früheres Byte auch die Auslieferung bereits empfangener späterer Bytes verzögern kann. Dieses Warten wird innerhalb des Datenstroms häufig Head-of-Line-Blocking genannt.

Eine Dateiübertragung hat eine andere Priorität: Jedes Byte muss korrekt ankommen, und das Warten auf eine Wiederherstellung ist akzeptabel. TCP bietet diesen Dienst bereits. Bei UDP müsste die Anwendung oder ein anderes Protokoll Verluste erkennen, Ersatzdaten anfordern und die Reihenfolge wiederherstellen.

Was der kleine Header bringt

Der UDP-Header umfasst 8 Byte, der TCP-Header mindestens 20. Ein UDP-Server kann Nachrichten vieler Clients empfangen, ohne Transportverbindungen pro Client aufzubauen. Socketpuffer und Anwendungsressourcen gibt es dennoch, „verbindungslos“ bedeutet also nicht, dass der Host nichts speichert.

Zu den häufigen UDP-Einsatzgebieten gehören gewöhnliche DNS-Anfragen an Port 53, NTP-Zeitsynchronisation an 123, SNMP-Management an 161 und DHCP-Adressvergabe an 67 und 68. Für Anrufe und Spiele wird häufig UDP gewählt, damit Nachrichten rechtzeitig ankommen. Video-on-Demand nutzt häufig HTTP über TCP oder QUIC; die Regel „Video nutzt UDP“ ist daher zu allgemein.

QUIC zeigt, wie viel ein Protokoll auf Basis von UDP ergänzen kann: zuverlässige Datenströme, Überlastkontrolle und Sicherheit durch TLS 1.3. Es wurde 2021 standardisiert und nutzt häufig UDP-Port 443; HTTP/3 läuft über QUIC. UDP selbst hat diese Dienste nicht hinzugewonnen.

Halte Nachrichten klein genug

UDP erhält Nachrichtengrenzen. Ein Empfangsvorgang liest eine Nachricht, keinen aus mehreren Sendevorgängen zusammengesetzten Bytestrom. Die Anwendung muss einen ausreichend großen Lesepuffer bereitstellen; ein kleinerer Puffer kann die Nachricht abschneiden.

Bei IPv4 mit einem 20-Byte-IP-Header beträgt die theoretische maximale Nutzlast 65.535 − 20 − 8 = 65.507 Byte. Beim Senden nahe dieser Grenze kann IP-Fragmentierung nötig sein. Auf einem Pfad, der IPv4-Datagramme mit 1.500 Byte unterstützt, passen ohne IP-Optionen 1.500 − 20 − 8 = 1.472 Byte Daten ohne Fragmentierung hinein. Andere Pfade und Header können diesen Wert verringern.

Berücksichtige die fehlenden Kontrollmechanismen

UDP hat keine eingebaute Flusskontrolle, um einen langsamen Empfänger zu schützen. Füllt sich dessen Socketpuffer, können eintreffende Nachrichten verworfen werden. Außerdem fehlt eine eingebaute Überlastkontrolle. Verantwortungsvoll arbeitende UDP-Anwendungen sorgen für eine geeignete Ratensteuerung, damit sie einen gemeinsam genutzten Pfad nicht überlasten. Manche Netze filtern UDP, sodass Anwendungen möglicherweise eine Ausweichmöglichkeit brauchen.

Das Weglassen von Verbindungsaufbau und Wiederherstellung kann Verzögerungen verringern, aber UDP erhöht weder die Kapazität einer Verbindung noch verhindert es IP-Verluste. Beurteile das gesamte Anwendungsprotokoll: Die zusätzliche Arbeit oberhalb von UDP kann stärker ins Gewicht fallen als die Headergröße.

Wichtige Erkenntnisse

  • Wähle die Wiederherstellung danach, ob die wiederhergestellten Daten noch nutzbar sind.
  • UDP erhält Nachrichten, bietet aber weder Verlustbehebung noch Ordnung der Daten.
  • Anwendungen oberhalb von UDP müssen die Kapazität des Empfängers und die Netzlast berücksichtigen.
  • QUIC bietet zuverlässige, sichere Datenströme auf Basis von UDP.
3

Zuverlässigkeit schaffen und Daten unterwegs halten

Ein zuverlässiges Protokoll braucht Belege dafür, was angekommen ist, und einen Plan für den Fall, dass diese Belege fehlen. Beginne mit einem Kanal, der Bits umkehrt, und ergänze dann Paketverluste und verzögerte Rückmeldungen. Sobald die Korrektheit sichergestellt ist, berechne, wie lange ein Sender bei Stop-and-Wait untätig bleibt. Schiebefenster lassen mehrere Pakete gleichzeitig durch das Netz laufen; Go-Back-N und Selective Repeat treffen unterschiedliche Entscheidungen zu Quittungen, Pufferung und Übertragungswiederholungen.

3.1 Prüfsummen, Rückmeldungen und Duplikaterkennung

Ein Protokoll zur zuverlässigen Datenübertragung liefert der empfangenden Anwendung korrekte Daten in der richtigen Reihenfolge und ohne Duplikate, selbst wenn der darunterliegende Kanal Pakete beschädigt. Entwickle den Entwurf, indem du fragst, was auf jeder Stufe schiefgehen kann. Bei diesen Protokollen fließen Anwendungsdaten in eine Richtung und Steuerrückmeldungen zurück.

Beschreibe das Verhalten mit Zuständen

Ein endlicher Automat hält den aktuellen Zustand des Senders oder Empfängers fest. Jeder Übergang hat ein auslösendes Ereignis und auszuführende Aktionen. Ein Zustand wie „Warten auf ACK 0“ erfasst, welchen Beleg der Sender braucht, bevor er fortfahren kann. In der Darstellung endlicher Automaten steht Λ für kein Ereignis oder keine Aktion; ein eingehender gestrichelter Pfeil markiert den Anfangszustand.

Bei einem vollkommen zuverlässigen Kanal braucht Version 1.0 nur das Senden und Ausliefern. Der Sender verpackt die Daten, der Empfänger entnimmt sie, und keiner von beiden braucht eine Rückmeldung. Mit Bitfehlern ändert sich der Entwurf.

Erkenne einen Fehler und fordere eine weitere Kopie an

Version 2.0 verwendet drei Mechanismen:

  • Eine Prüfsumme ermöglicht dem Empfänger, ein Paket auf Beschädigung zu prüfen.
  • Ein ACK meldet erfolgreichen Empfang; ein NAK meldet beschädigte Daten.
  • Eine Übertragungswiederholung sendet bei Bedarf eine weitere Kopie.

Zusammen bilden sie die automatische Wiederholungsanforderung (ARQ). Der Sender sendet ein Paket und wartet auf eine Rückmeldung, bevor er das nächste sendet: Stop-and-Wait. Er behält eine Kopie des aktuellen Pakets, weil er es möglicherweise erneut senden muss.

Rückmeldepakete durchqueren jedoch denselben unzuverlässigen Kanal. Ein beschädigtes ACK lässt den Sender im Unklaren: Hat der Empfänger die Daten angenommen oder wird eine weitere Kopie benötigt? Erneutes Senden ist nur sicher, wenn der Empfänger eine Ersatzkopie von neuen Anwendungsdaten unterscheiden kann. Eine Prüfsumme allein erkennt keine Duplikate; zwei gültige Kopien haben denselben gültigen Inhalt.

Gib jedem ausstehenden Paket eine Identität

Version 2.1 ergänzt eine Sequenznummer. Wenn nur ein Paket aussteht, genügt in diesem Stop-and-Wait-Kanalmodell eine Ein-Bit-Nummer, die zwischen 0, 1, 0, 1 wechselt. Der Empfänger merkt sich, welche Nummer er erwartet. Er liefert ein gültiges Paket mit dieser Nummer einmal aus und ändert dann die erwartete Nummer. Ein Paket mit der vorherigen Nummer ist ein Duplikat: Quittiere es erneut, liefere seine Daten aber nicht noch einmal aus.

Der Sender behält die aktuelle Nummer bei Übertragungswiederholungen bei. Er wechselt erst nach dem passenden, lesbaren ACK zur anderen Nummer. Beschädigte Rückmeldungen oder ein NAK lösen in diesem Entwurf für reine Bitfehler eine Übertragungswiederholung aus.

Ersetze NAKs durch wiederholte ACKs

Version 2.2 verzichtet auf NAKs. Der Empfänger antwortet auf ein beschädigtes oder dupliziertes Paket mit einem ACK für das letzte angenommene Paket. Das ACK braucht daher eine Nummer.

Angenommen, Paket 0 enthält „A“ und kommt korrekt an. Der Empfänger liefert „A“ aus und sendet ACK 0. Paket 1 mit „B“ wird beschädigt, daher wiederholt der Empfänger ACK 0. Der Sender wartet auf ACK 1; diese Duplikatquittung signalisiert ihm, Paket 1 erneut zu senden. Die gültige Ersatzkopie wird als „B“ ausgeliefert und mit ACK 1 quittiert.

Duplizierte Daten zu verwerfen und das duplizierte Paket zu quittieren sind unterschiedliche Aktionen. Würde der Empfänger eine Ersatzkopie stillschweigend ignorieren, deren früheres ACK unlesbar war, könnte der Sender nie erfahren, dass die Zustellung erfolgreich war. Auch TCP verzichtet auf NAKs, obwohl sich seine Bytenummerierung und seine Regeln für Fast Retransmit von diesem einfachen Protokoll unterscheiden.

Wichtige Erkenntnisse

  • Eine Prüfsumme erkennt Beschädigungen, kann aber allein kein Duplikat identifizieren.
  • ARQ kombiniert Fehlererkennung, Rückmeldung des Empfängers und Übertragungswiederholung.
  • Bei Stop-and-Wait steht ein Datenpaket unquittiert aus.
  • Wechselnde Sequenznummern ermöglichen dem Empfänger, jedes Paket einmal auszuliefern.
  • Ein Duplikat wird erneut quittiert, ohne seine Daten noch einmal auszuliefern.

3.2 Zeitgeber und Effizienz von Stop-and-Wait

Eine Rückmeldung hilft nicht, wenn sie nie ankommt. Kann der Kanal ein Datenpaket oder ein ACK verlieren, braucht der Sender eine Möglichkeit, ohne empfangene Nachricht fortzufahren. Version 3.0 ergänzt das Alternating-Bit-Protokoll um einen Countdown-Zeitgeber.

Reagiere auf ausbleibende Antworten, ohne Daten doppelt auszuliefern

Der Sender startet den Zeitgeber immer, wenn er das aktuelle Paket sendet, auch bei einer Ersatzkopie. Ein passendes, unversehrtes ACK stoppt den Zeitgeber und erlaubt das nächste Paket. Ein beschädigtes ACK oder ein ACK mit der falschen Nummer wird ignoriert. Läuft der Zeitgeber zuerst ab, sendet der Sender dasselbe Paket erneut und startet den Zeitgeber neu.

Bei einem verlorenen Datenpaket hat der Empfänger nichts zu quittieren; die Zeitüberschreitung sorgt für die Ersatzkopie. Bei einem verlorenen ACK hat der Empfänger die Daten bereits ausgeliefert. Wenn die Ersatzkopie ankommt, weist die Sequenznummer sie als Duplikat aus. Der Empfänger verwirft ihre Daten und sendet das ACK erneut.

Eine vorzeitige Zeitüberschreitung tritt ein, wenn das ursprüngliche Paket oder ACK lediglich langsam war. Die Ersatzkopie verschwendet Übertragungskapazität, aber die Duplikaterkennung erhält die korrekte Zustellung. Ein sinnvolles Zeitlimit muss die erwartete Umlaufzeit und die Verarbeitung beim Empfänger berücksichtigen. Ein zu kurzes verursacht unnötige Übertragungswiederholungen; ein zu langes verzögert die Wiederherstellung nach tatsächlichem Verlust.

Unterscheide Übertragungszeit und Wartezeit

Die Paketlänge sei L Bit und die Übertragungsrate R bit/s. Der Sender braucht L/R Sekunden, um ein Paket auf die Verbindung zu übertragen. Ohne die Zeit für Übertragung und Verarbeitung des ACK dauert ein Stop-and-Wait-Zyklus RTT+L/R. Der Zeitanteil für das Senden beträgt

U=L/RRTT+L/R.

Bei Paketen mit 1.500 Byte auf einer Verbindung mit 1 Gbit/s rechne zunächst Byte in Bit um:

L=1.500×8=12.000 Bit.

Dann gilt L/R=12 μs=0,012 ms. Bei einer RTT von 40 ms gilt:

U=0,01240,012≈0,000300.

Der Sender ist etwa 0,03 % der Zeit aktiv. Der Durchsatz beträgt etwa 12.000 Bit alle 0,040012 s oder 300 kbit/s. Selbst eine sehr schnelle Verbindung überträgt wenig Nutzverkehr, weil der Sender fast den gesamten Zyklus wartet.

Übertrage die Pakete im Pipelining-Verfahren

Pipelining erlaubt mehrere unquittierte Pakete unterwegs. Passen bis zu N Pakete in das Sendefenster, beträgt die ideale Auslastung

U=min⁡(1,N(L/R)RTT+L/R).

Auf derselben Verbindung ergeben 1.000 Pakete eine Auslastung von etwa 0,30. Um sie vollständig auszulasten, braucht man mindestens 40,012/0,012≈3.334,33 Paketübertragungszeiten; runde daher auf 3.335 Pakete auf. Beim Abrunden bleibt vor dem ersten ACK ein kleines Leerlaufintervall.

Eine größere Pipeline braucht genügend Sequenznummern, um ihre Pakete zu unterscheiden, und genügend Pufferplatz, um unquittierte Daten vorzuhalten. Je nach Protokoll muss möglicherweise auch der Empfänger Daten puffern. Go-Back-N und Selective Repeat lösen diese Entwurfsfragen unterschiedlich.

Eine höhere Übertragungsrate allein verkürzt die ohnehin kurze Übertragungszeit. Bei fester Paketgröße und RTT verringert sie die Stop-and-Wait-Auslastung. Erst mehr Daten unterwegs ermöglichen dem Sender, die verfügbare Kapazität zu nutzen.

Wichtige Erkenntnisse

  • Ein Zeitgeber ermöglicht Fortschritt, wenn Daten oder Rückmeldungen verloren gehen.
  • Eine vorzeitige Zeitüberschreitung verschwendet Kapazität, doch Sequenznummern verhindern eine doppelte Auslieferung.
  • Verwende für die Paketlänge Bit, wenn die Übertragungsrate in bit/s angegeben ist.
  • Die Stop-and-Wait-Auslastung ist die Übertragungszeit geteilt durch die vollständige Zykluszeit.
  • Pipelining verbessert die Auslastung, indem es mehrere ausstehende Pakete erlaubt.
  • Runde eine benötigte Fenstergröße auf ganze Pakete auf und begrenze die Auslastung auf 1.

3.3 Go-Back-N-Fenster und kumulative ACKs

Go-Back-N (GBN) erlaubt bis zu N gesendete, aber unquittierte Pakete. Das Schiebefenster des Senders rückt vor, wenn Quittungen die Zustellung bestätigen. Der Empfänger bleibt einfach: Er nimmt nur das nächste Paket in der richtigen Reihenfolge an.

Unterscheide die Bereiche des Senders

Die Variable base bezeichnet das älteste unquittierte Paket. nextseqnum bezeichnet das nächste neu zu sendende Paket. Vor dem Sequenznummernüberlauf gelten folgende Bereiche:

  • Unterhalb von base: bereits quittiert.
  • Von base bis einschließlich nextseqnum − 1: gesendet, wartet auf Quittung.
  • Von nextseqnum bis einschließlich base + N − 1: für neue Daten verfügbar.
  • Bei oder oberhalb von base + N: gesperrt, bis das Fenster vorrückt.

Bei base = 10, nextseqnum = 13 und N=5 stehen die Pakete 10–12 aus. Die Pakete 13 und 14 können gesendet werden. Paket 15 nicht. Ein Fenster begrenzt die ausstehenden Daten, nicht die Gesamtzahl der Pakete einer Übertragung.

Kumulative Quittungen verschieben die Basis

GBN-ACK n bestätigt alle Pakete bis einschließlich n. Es setzt base auf n+1. Eine spätere kumulative Quittung kann daher frühere verlorene ACKs abdecken. Diese Nummerierung bezeichnet das zuletzt angenommene Paket; die ACK-Konvention von TCP bezeichnet das nächste erwartete Byte.

GBN unterhält einen Zeitgeber für das älteste ausstehende Paket. Das Senden des ersten ausstehenden Pakets startet ihn. Ein ACK, das die Basis verschiebt, startet ihn neu, wenn noch Daten ausstehen; die Quittung aller Daten stoppt ihn. Läuft der Zeitgeber ab, überträgt der Sender jedes gesendete, aber noch unquittierte Paket erneut. Diese Anzahl kann kleiner sein als die maximale Fenstergröße N.

Verfolge ein fehlendes Paket

Verwende ein Fenster der Größe vier und sende die Pakete 0, 1, 2 und 3. Paket 2 geht verloren. Der Empfänger liefert 0 und 1 aus und sendet ACK 0 und ACK 1. Paket 3 kommt hinter der Lücke an: Der Empfänger verwirft es und wiederholt ACK 1.

Die ersten beiden ACKs schaffen Platz für die Pakete 4 und 5. Auch sie kommen hinter dem fehlenden Paket 2 an, werden daher beide verworfen und mit ACK 1 beantwortet. Die Basis des Senders bleibt bei 2. Bei der Zeitüberschreitung überträgt er 2, 3, 4 und 5 erneut. Sie kommen nun in der richtigen Reihenfolge an und können alle ausgeliefert werden.

Die Kopien von 3, 4 und 5 waren beim ersten Mal unversehrt. GBN sendet sie erneut, weil sein Empfänger Pakete außerhalb der Reihenfolge nicht puffert. Das spart Zustandsinformationen beim Empfänger, verursacht aber nach einem Verlust zusätzlichen Verkehr.

Lass eine Sequenznummer außerhalb des Fensters

Ein k-Bit-Feld bietet 2k Paketnummern, die zyklisch wiederverwendet werden. GBN verlangt

N≤2k−1.

Bei drei Bit lauten die Nummern 0–7 und das größte Sendefenster ist sieben groß. Wären alle acht erlaubt, könnte der Empfänger 0–7 annehmen und danach wieder 0 erwarten. Gingen alle ACKs verloren, sähe ein erneut gesendetes altes Paket 0 dann wie ein neues aus. Werden nur 0–6 gesendet, erwartet der Empfänger stattdessen 7 und kann das erneut gesendete Paket 0 als alt erkennen. Fensterberechnungen nahe dem Überlauf folgen der zyklischen Reihenfolge, nicht der gewöhnlichen Zahlengröße.

Wichtige Erkenntnisse

  • GBN-ACK n bestätigt jedes Paket bis einschließlich n.
  • Der Empfänger verwirft Pakete, die hinter einer Lücke ankommen.
  • Ein Zeitgeber überwacht das älteste ausstehende Paket.
  • Bei einer Zeitüberschreitung werden die gesendeten, unquittierten Pakete erneut gesendet.
  • Das größte GBN-Fenster bei k-Bit-Nummern beträgt 2^k − 1.

3.4 Selective Repeat und Wiederverwendung von Sequenznummern

Selective Repeat (SR) speichert korrekt empfangene Pakete, auch wenn frühere fehlen. Jedes gültige Paket erhält ein eigenes ACK. Der Sender kann dann nur das Paket ersetzen, dessen Zeitgeber abläuft.

Verfolge jedes Paket einzeln

Das Fenster des Senders beginnt bei send_base, dem ältesten unquittierten Paket, und enthält N zulässige Sequenznummern. Jedes ausstehende Paket hat einen logischen Zeitgeber. Ein ACK markiert genau dieses Paket als empfangen. Ein ACK jenseits der Basis verschiebt das Fenster allein nicht: Die Basis bleibt bei der ersten Lücke. Sobald diese Lücke quittiert ist, springt die Basis über bereits quittierte nachfolgende Pakete hinweg.

Das Fenster des Empfängers beginnt bei rcv_base, dem nächsten für die Auslieferung benötigten Paket. Ein gültiges Paket innerhalb des Fensters wird quittiert. Daten außerhalb der Reihenfolge werden gepuffert. Trifft das Paket an der Basis ein, liefert der Empfänger es und jedes darauf folgende lückenlos gepufferte Paket aus und hält an der nächsten Lücke an.

Ein Paket im unmittelbar vorhergehenden Fenster ist ein altes Duplikat. Der Empfänger quittiert es erneut, ohne es auszuliefern. Diese Regel ist entscheidend, wenn das ursprüngliche ACK verloren ging: Der Sender wartet möglicherweise noch, obwohl der Empfänger bereits weitergegangen ist.

Behebe einen Verlust

Setze N=4 und lass Paket 2 verloren gehen, nachdem der Sender 0–3 gesendet hat. Der Empfänger liefert 0 und 1 aus und quittiert sie, dann puffert und quittiert er 3. Die ersten beiden ACKs erlauben dem Sender, 4 und 5 zu übertragen. Beide werden gepuffert und einzeln quittiert, aber send_base bleibt bei 2.

Wenn der Zeitgeber von Paket 2 abläuft, wird nur 2 erneut gesendet. Sobald es ankommt, kann der Empfänger 2, 3, 4 und 5 zusammen ausliefern und rcv_base auf 6 setzen. Sobald ACK 2 den Sender erreicht, rückt auch dessen Basis auf 6 vor und überspringt die Pakete 3–5, deren ACKs er bereits besitzt.

Warum das Fenster höchstens halb so groß wie der Nummernraum ist

Der Empfänger kann dem Sender voraus sein, weil ACKs verzögert werden oder verloren gehen. Neu zulässige Nummern dürfen sich nicht mit Nummern überschneiden, die möglicherweise noch als alte Pakete erneut gesendet werden.

Angenommen, bei Zwei-Bit-Nummern 0–3 und einem Fenster der Größe drei nimmt der Empfänger 0, 1 und 2 an. Sein neues Fenster ist {3, 0, 1}. Verschwinden alle ACKs, passt ein erneut gesendetes altes Paket 0 in dieses Fenster und sieht neu aus. Der Empfänger kann es nicht von einem tatsächlich neuen Paket 0 unterscheiden, das nach einem verlorenen Paket 3 gesendet wurde.

Für gleich große Sender- und Empfängerfenster lautet die sichere Schranke

N≤2k−1.

Eine Nummerierung mit drei Bit erlaubt daher SR-Fenster bis zur Größe vier, während GBN sieben erlaubt.

MerkmalGo-Back-NSelective Repeat
Bedeutung des ACKAlle Pakete bis einschließlich nNur Paket n
ZeitgeberEin Zeitgeber für das älteste PaketEin logischer Zeitgeber pro Paket
Aktion des Empfängers bei Ankunft außerhalb der ReihenfolgeVerwerfenPuffern und quittieren
Wiederherstellung bei ZeitüberschreitungAlle ausstehenden PaketeDas Paket, dessen Zeitgeber abgelaufen ist
Unterscheide eine alte Kopie nach dem Überlauf

Fensterbeschränkungen berücksichtigen die aktuellen Fenster, aber ein reales Netz kann auch eine alte Kopie unterwegs halten, bis Nummern wiederverwendet werden. Eine maximale Paketlebensdauer begrenzt, wie lange solche Kopien überleben können. TCP nennt dies die maximale Segmentlebensdauer (MSL). Bei hohen Raten kann TCP seinen 32-Bit-Sequenznummernraum schnell wiederverwenden; daher hilft das zeitstempelbasierte PAWS, veraltete Daten zurückzuweisen.

Wichtige Erkenntnisse

  • SR quittiert und überwacht jedes ausstehende Paket einzeln mit einem Zeitgeber.
  • Pakete außerhalb der Reihenfolge werden gepuffert, bis die Lücke für die Auslieferung gefüllt ist.
  • Ein späteres ACK markiert den Empfang, doch die Sendefensterbasis bleibt beim ersten unquittierten Paket.
  • Alte Duplikate müssen erneut quittiert werden.
  • Gleich große SR-Fenster dürfen höchstens die Hälfte des Sequenznummernraums belegen.
  • Stark verzögerte Kopien erfordern bei der Wiederverwendung von Nummern zusätzlichen Schutz.
4

TCP-Segmente, Bytenummern und Verbindungen

TCP verwaltet in jeder Richtung einer Verbindung einen eigenen Bytestrom. Sein Header ordnet diese Datenströme Ports zu, identifiziert ihre Bytes und trägt Quittungen und Steuersignale. Lies das Segmentformat und verfolge dann die Nummern bei Datenübertragung, Aufbau und Abbau. Wenn du die beiden Richtungen auseinanderhältst, lassen sich Quittungen im Huckepackverfahren, halbseitige Verbindungsabbauten und die zusätzlichen Sequenznummern für SYN und FIN viel leichter nachvollziehen.

4.1 Der TCP-Bytestrom und der Segmentheader

Eine TCP-Verbindung besteht aus Zustandsinformationen auf zwei Endhosts: Puffern, Bytezählern und anderen Variablen, die beim Aufbau angelegt werden. Sie ist eine Punkt-zu-Punkt-Verbindung zwischen zwei Endpunkten und eine Vollduplexverbindung, sodass beide gleichzeitig senden können. Gewöhnliche Router leiten ihre IP-Datagramme weiter, ohne den TCP-Zustand der Endpunkte zu verwalten.

Bytes haben keine Nachrichtengrenzen

TCP erhält die Reihenfolge der Bytes, aber nicht die Grenzen der Schreibvorgänge einer Anwendung. Drei Schreibvorgänge mit je 100 Byte können die Anwendung in einem einzigen Lesevorgang mit 300 Byte oder in Lesevorgängen mit 50 und 250 Byte erreichen. Eine Anwendung, die Nachrichten austauscht, muss selbst für deren Abgrenzung sorgen, etwa durch ein Längenfeld oder ein Trennzeichen. Ein kurzer Lesevorgang belegt nicht, dass eine vollständige Nachricht angekommen ist.

Schreibvorgänge der Anwendung gelangen in einen Sendepuffer. TCP wählt Abschnitte zur Übertragung aus und behält unquittierte Daten für mögliche Übertragungswiederholungen. Eingehende Daten gelangen in einen Empfangspuffer, bis die empfangende Anwendung sie liest.

Bestimme die Größe der Daten getrennt von den Headern

Die maximale Segmentgröße (MSS) begrenzt die Anwendungsdaten in einem Segment. Sie schließt TCP- und IP-Header aus. Für einen Pfad, der IP-Datagramme mit 1.500 Byte sowie IPv4-Header mit 20 Byte und TCP-Header mit 20 Byte unterstützt, gilt:

MSS=1.500−20−20=1.460 Byte.

Optionen brauchen mehr Platz, daher muss ein Sender die tatsächlichen Headerlängen berücksichtigen. Jeder Endpunkt gibt während des Handshakes die MSS bekannt, die er empfangen kann; Beschränkungen des Pfades können die sendbare Größe weiter einschränken. Ohne MSS-Option wird standardmäßig von 536 Byte Daten bei IPv4 und 1.220 bei IPv6 ausgegangen.

Lies die Headerfelder
FeldGrößeZweck
Quell- und ZielportJe 16 BitEndpunkte der Anwendungen identifizieren
Sequenznummer32 BitErstes Datenbyte identifizieren
Quittungsnummer32 BitNächstes erwartetes Byte nennen
Datenoffset4 BitHeaderlänge in 32-Bit-Wörtern angeben
Empfangsfenster16 BitKapazität des Empfängers ankündigen
Prüfsumme16 BitFehler mithilfe eines Pseudoheaders erkennen
Zeiger auf dringende Daten16 BitBei gesetztem URG dringende Daten lokalisieren

Der minimale Header umfasst fünf 32-Bit-Wörter oder 20 Byte. Ein Datenoffset von 8 bedeutet 32 Byte, einschließlich 12 Byte über den festen Header hinaus. Der maximale Offset ist 15: insgesamt 60 Byte, mit Platz für bis zu 40 Byte Optionen.

Interpretiere Flags und Optionen

SYN synchronisiert beim Öffnen die Sequenznummern. FIN schließt eine Senderichtung. RST bricht eine Verbindung ab oder lehnt sie ab. ACK zeigt an, dass das Quittungsfeld gültig ist. PSH fordert eine umgehende Weitergabe an die Anwendung an; es erzeugt keine Nachrichtengrenze. URG zeigt an, dass der Zeiger auf dringende Daten relevant ist, obwohl für neue Anwendungen empfohlen wird, diesen Mechanismus zu vermeiden. ECE und CWR tragen Signale der expliziten Überlastbenachrichtigung.

Zu den gebräuchlichen Optionen gehören MSS, Fensterskalierung, Zeitstempel und selektive Quittung (SACK). Die Skalierung erweitert den Bereich des Empfangsfensters. Zeitstempel helfen, die RTT zu messen und veraltete Segmente zurückzuweisen. SACK beschreibt empfangene Blöcke hinter einer Lücke.

Ohne Optionen fügen TCP und IPv4 zusammen 40 Byte hinzu. Ein volles Segment mit 1.460 Byte Daten belegt ein IP-Datagramm von 1.500 Byte, davon sind etwa 97,3 % Anwendungsdaten. Ein reines ACK enthält keine Daten, belegt aber trotzdem diese 40 Byte Header.

Wichtige Erkenntnisse

  • TCP bietet einen Bytestrom über eine Punkt-zu-Punkt-Vollduplexverbindung.
  • Anwendungen sorgen selbst für die Abgrenzung ihrer Nachrichten.
  • Die MSS zählt nur Anwendungsdaten; der Datenoffset zählt 32-Bit-Wörter des Headers.
  • SYN, FIN und RST haben unterschiedliche Aufgaben bei der Verbindungsverwaltung.
  • Optionen erweitern TCP, ohne die festen Headerfelder zu ändern.

4.2 Sequenznummern und das nächste erwartete Byte

TCP-Sequenznummern zählen Bytes, nicht Segmente. Die Sequenznummer eines Segments bezeichnet sein erstes Datenbyte. Seine Quittungsnummer beschreibt die Gegenrichtung: das nächste Byte, das dieser Sender zu empfangen erwartet.

Teile einen Datenstrom in Segmente

Eine Anfangssequenznummer (ISN) von 3.000 wird vom SYN verwendet. Das erste Datenbyte trägt daher die Nummer 3.001. Eine Datei mit 10.000 Byte braucht bei einer MSS von 1.460 sechs volle Datensegmente und ein kürzeres Segment:

SegmentErstes ByteDatenbytes
13.0011.460
24.4611.460
35.9211.460
47.3811.460
58.8411.460
610.3011.460
711.7611.240

Jede nächste Sequenznummer ergibt sich durch Addition der Datenlänge des vorherigen Segments. Das letzte Byte trägt die Nummer 13.000, sodass der erfolgreiche Empfang der gesamten Datei das kumulative ACK 13.001 erzeugt.

Quittiere einen lückenlosen Anfangsbereich

ACK n bestätigt alle Bytes bis einschließlich n−1. Es bestätigt nicht Byte n. Hat der Empfänger die Bytes bis 4.460, erwartet er 4.461. Ein Segment, das bei 5.921 beginnt, lässt eine Lücke. Ein Empfänger, der dieses Segment puffert, sendet weiterhin ACK 4.461, weil sein lückenloser Anfangsbereich nicht gewachsen ist.

Deshalb kann die Quittung nicht einfach die größte beobachtete Sequenznummer sein. Spätere Bytes zeigen, dass hinter der Lücke etwas angekommen ist; sie füllen die Lücke nicht. Wenn der fehlende Bereich eintrifft, kann ein kumulatives ACK über bereits gepufferte Daten hinwegspringen.

Verfolge beide Richtungen unabhängig

Angenommen, das nächste Byte eines Clients ist 1.000 und das nächste Byte eines Servers ist 5.000. Der Client sendet 200 Byte Daten mit Sequenznummer 1.000 und Quittungsnummer 5.000. Die Antwort des Servers enthält 1.200 Byte mit Sequenznummer 5.000 und Quittungsnummer 1.200. Das nächste reine ACK des Clients hat Sequenznummer 1.200 und Quittungsnummer 6.200.

Der Server hat seine eigene Sequenznummer nicht aus der Länge der Anfrage abgeleitet. Jede Richtung hat eine eigene Nummerierung. Das Mitführen eines ACK mit ausgehenden Daten heißt Huckepackverfahren. Ein reines ACK verbraucht keinen Sequenznummernraum; SYN und FIN verbrauchen jeweils eine Nummer, auch ohne Daten.

Verwalte Anfangswerte und Überlauf

Endpunkte wählen beim Öffnen einer Verbindung eine ISN. Eine Uhr und eine mit einem Schlüssel berechnete Pseudozufallsfunktion der Verbindungsadressen und Ports helfen, eine neue Verbindung von alten verzögerten Segmenten zu unterscheiden und Außenstehenden das Erraten gültiger Nummern zu erschweren. Würde jede Verbindung bei null beginnen, wären beide Schutzmaßnahmen schwächer.

Die Felder sind 32 Bit lang, daher läuft die Nummerierung modulo 232 über, nach etwa 4,3 Milliarden Byte. Bei 1 Gbit/s dauert ein Durchlauf dieses Raums etwa 34 s, bei 10 Gbit/s etwa 3,4 s. Das zeitstempelbasierte PAWS bietet auf schnellen Pfaden eine zusätzliche Prüfung auf veraltete Segmente.

Bei gewöhnlicher Rechnung fern vom Überlauf ist das nächste Byte nach einem Datensegment dessen Sequenznummer plus dessen Datenlänge. Ist ein SYN oder FIN vorhanden, berücksichtige die zusätzliche Nummer, die dieses Steuerflag verbraucht. Wende die Rechnung getrennt auf jede Richtung an.

Wichtige Erkenntnisse

  • Die Sequenznummer eines Segments identifiziert sein erstes Byte.
  • ACK n bestätigt Bytes bis einschließlich n − 1 und nennt das nächste erwartete Byte.
  • Eine Lücke hält das kumulative ACK fest, selbst wenn spätere Daten gepuffert werden.
  • Jede Richtung hat eine unabhängige Nummerierung.
  • Daten, SYN und FIN verbrauchen Sequenznummernraum; reine ACKs nicht.
  • Sequenznummern laufen modulo 2^32 über.

4.3 Eine Verbindung öffnen, halbseitig schließen und freigeben

Beim TCP-Verbindungsaufbau können beide Endpunkte eine Anfangssequenznummer bekannt geben und erfahren, dass der Kommunikationspartner sie erhalten hat. Der spätere Abbau gibt jede Richtung getrennt frei. Dieser Austausch von Steuernachrichten nutzt denselben Sequenznummernraum wie die Daten.

Verfolge den Drei-Wege-Handshake
  1. Der Client erstellt einen Verbindungszustand, sendet SYN mit ISN 7.000 und wechselt in SYN_SENT.
  2. Der Server antwortet mit SYN-ACK, Sequenznummer 21.000 und Quittungsnummer 7.001. Während er auf die Bestätigung wartet, befindet er sich in SYN_RCVD.
  3. Der Client speichert die Nummer des Servers und sendet ACK mit Sequenznummer 7.001 und Quittungsnummer 21.001. Der Client wechselt in ESTABLISHED; der Server tut dies, wenn dieses ACK eintrifft.

Jedes SYN verbraucht eine Nummer. Das dritte Segment kann bereits Anwendungsdaten enthalten. Der gewöhnliche Handshake kostet eine Umlaufzeit, bevor der Client diese ersten Daten senden kann. Ein Austausch aus zwei Nachrichten würde dem Server nicht mitteilen, dass der Client seine ISN erhalten hat, und könnte dazu führen, dass er ein verzögertes altes SYN als neue Anfrage annimmt.

An der Socket-Schnittstelle startet connect einen aktiven Verbindungsaufbau. Ein Server lauscht auf Anfragen, und accept liefert nach dem Aufbau einen neuen Verbindungssocket zurück. Der lauschende Socket bleibt für weitere Clients verfügbar.

Schließe jede Richtung

Ein Endpunkt sendet FIN, wenn er keine weiteren Bytes mehr zu senden hat. Der Kommunikationspartner quittiert dieses FIN, indem er sein ACK um eins darüber hinaus erhöht. Der Kommunikationspartner kann seine eigenen verbleibenden Bytes noch senden: Das ist ein halbseitiger Verbindungsabbau. Sein späteres FIN schließt die andere Richtung und benötigt ebenfalls ein ACK. Der Abbau umfasst häufig vier Segmente, ein FIN und ein ACK können jedoch kombiniert werden.

Für einen Client, der zuerst schließt, ist die übliche Zustandsfolge ESTABLISHED → FIN_WAIT_1 nach dem Senden von FIN → FIN_WAIT_2, sobald dieses FIN quittiert ist → TIME_WAIT nach Empfang und Quittierung des FIN des Kommunikationspartners → CLOSED. Der Kommunikationspartner durchläuft CLOSE_WAIT, während seine Anwendung ihre Arbeit beendet, dann LAST_ACK nach dem Senden seines eigenen FIN und schließlich CLOSED beim Empfang des ACK.

Halte das letzte ACK wiederholbar

Beim üblichen aktiven Verbindungsabbau dauert TIME_WAIT die doppelte maximale Segmentlebensdauer. Verschwindet das letzte ACK, kann der andere Endpunkt sein FIN erneut senden und ein weiteres ACK erhalten. Das Warten gibt alten Segmenten außerdem Zeit zu verfallen, bevor das Vierertupel der Verbindung wiederverwendet wird. Der MSL-Wert des Standards von zwei Minuten ergibt vier Minuten; Implementierungen können andere Zeiten verwenden, ein vertrauter Linux-Wert sind 60 Sekunden.

Ein RST unterscheidet sich von FIN: Es bricht die Verbindung ab oder lehnt eine Anfrage ab. Ein SYN an einen geschlossenen Port erhält normalerweise RST. SYN-ACK zeigt einen lauschenden Dienst an; ausbleibende Antworten können durch Filterung, Verlust oder ein nicht verfügbares Ziel entstehen.

Schütze unvollständige Handshakes

Bei einem SYN-Flooding werden viele Verbindungsanfragen gesendet, ohne sie abzuschließen. Ein Server, der für jede halboffene Verbindung Ressourcen reserviert, kann seinen verfügbaren Zustandsspeicher aufbrauchen. SYN-Cookies verzögern die Reservierung dieses Zustands pro Verbindung. Der Server kodiert überprüfbare Verbindungsinformationen mithilfe eines Geheimnisses und einer zeitabhängigen Eingabe in seine gewählte ISN. Ein gültiges abschließendes ACK gibt das Cookie über seine Quittungsnummer zurück, sodass der Server es prüfen und Zustandsinformationen anlegen kann. Der Server hat weiterhin einen lauschenden Socket und gemeinsam genutzte Ressourcen; er vermeidet es, für jedes SYN eine einzelne unvollständige Verbindung zu speichern.

Wichtige Erkenntnisse

  • Der Handshake bestätigt beide Anfangssequenznummern.
  • SYN und FIN verbrauchen jeweils eine Sequenznummer.
  • Ein FIN schließt eine Richtung; der Kommunikationspartner kann weiter senden.
  • TIME_WAIT ermöglicht die Wiederholung des letzten ACK und das Verfallen alter Segmente.
  • RST bricht eine Verbindung ab oder lehnt sie ab.
  • SYN-Cookies verringern die Zustandsinformationen pro Anfrage vor Abschluss des Handshakes.
5

TCP-Wiederherstellung und das Tempo des Empfängers

Ein ACK kann verzögert werden, ein Segment kann verschwinden und die empfangende Anwendung kann aufhören zu lesen. TCP braucht für diese Ereignisse unterschiedliche Reaktionen. RTT-Schätzungen helfen bei der Wahl der Wartezeit, Duplikatquittungen können eine Lücke vor der Zeitüberschreitung aufdecken, und das Empfangsfenster meldet den verfügbaren Pufferplatz. Verfolge die ausstehenden Bytes des Senders neben den gespeicherten Bytes des Empfängers, um zu sehen, warum eine wiederhergestellte Verbindung trotzdem warten muss, bevor sie weitere Daten senden kann.

5.1 Messe die RTT und wähle ein Wiederholungszeitlimit

TCP braucht ein Wiederholungszeitlimit, das lang genug für normale Umlaufzeiten ist, aber kurz genug, um sich nach einem Verlust rasch zu erholen. Die RTT schwankt mit Änderungen von Warteschlangen und Pfaden. Daher richtet sich das Zeitlimit sowohl nach einer geglätteten Schätzung als auch nach der Größe der jüngsten Abweichungen.

Nimm einen eindeutigen Messwert

SampleRTT misst die Zeitspanne vom Senden der Daten bis zum Empfang eines ACK, das sie abdeckt. In einer einfachen Implementierung misst TCP jeweils ein geeignetes Segment. Der Karn-Algorithmus schließt erneut übertragene Daten von der gewöhnlichen RTT-Messung aus: Ein ACK könnte sich auf die ursprüngliche Kopie oder die Ersatzkopie beziehen. Ausgehandelte Zeitstempel können diese Mehrdeutigkeit beseitigen.

Der erste gültige Messwert R setzt EstimatedRTT zunächst auf R und DevRTT auf R/2. Bevor ein Messwert vorliegt, beträgt das empfohlene anfängliche Zeitlimit 1 s.

Aktualisiere die Schwankung vor dem Mittelwert

Verwende für einen neuen Messwert die vorherige EstimatedRTT, um die Abweichung zu messen:

DevRTTnew=0,75DevRTTold+0,25∣SampleRTT−EstimatedRTTold∣.

Aktualisiere dann den exponentiell gewichteten gleitenden Mittelwert:

EstimatedRTTnew=0,875EstimatedRTTold+0,125SampleRTT.

Die empfohlenen Gewichte sind β=1/4 und α=1/8. Ältere Messwerte behalten nach jeder Aktualisierung weniger Einfluss. Würde zuerst der Mittelwert aktualisiert, änderte sich die in der ersten Gleichung verwendete Abweichung.

Rechne eine Aktualisierung durch

Beginne mit EstimatedRTT = 100 ms und DevRTT = 10 ms; nimm einen Messwert von 120 ms.

  1. Absolute Abweichung: ∣120−100∣=20 ms.
  2. Neue DevRTT: 0,75(10)+0,25(20)=12,5 ms.
  3. Neue EstimatedRTT: 0,875(100)+0,125(120)=102,5 ms.
  4. Grundlegendes Zeitlimit: 102,5+4(12,5)=152,5 ms.

Die Grundregel lautet:

TimeoutInterval=EstimatedRTT+4DevRTT.

Der vollständige Standard verwendet EstimatedRTT + max(G, 4 DevRTT), wobei G die Auflösung der Uhr ist. Wenn der Sicherheitsabstand aus vier Abweichungen das Uhrintervall übersteigt, liefert die Grundregel dasselbe Ergebnis.

Der Standard empfiehlt, einen berechneten Wert unter 1 s auf 1 s anzuheben. Tatsächliche Implementierungen können eine kleinere Untergrenze verwenden; ein häufiges Linux-Minimum ist 200 ms. Die berechneten 152,5 ms sind daher ein Rohwert und nicht unbedingt der Zeitgeberwert, den ein Host einstellt. Eine optionale Obergrenze muss mindestens 60 s betragen.

Erhöhe das Zeitlimit nach einer Zeitüberschreitung

Läuft der Zeitgeber ab, sendet TCP die ältesten unquittierten Daten erneut und verdoppelt das Zeitlimit. Aus einem aktuellen Wert von 0,75 s werden 1,5 s, nach einem weiteren Ablauf 3 s. Wiederholte sofortige Versuche würden zusätzlichen Verkehr auf einem Pfad erzeugen, der bereits keine Rückmeldungen zustellt.

Ein neu eintreffendes ACK verkürzt das erhöhte Zeitlimit nicht unbedingt. TCP braucht eine gültige neue RTT-Messung, um die Schätzung neu zu berechnen. Ohne Zeitstempel verhindert die Mehrdeutigkeit bei Übertragungswiederholungen, dass ein ACK für erneut gesendete Daten als neuer Messwert verwendet wird. Sobald geeignete neue Daten gesendet und quittiert werden, kann ein frischer Messwert das berechnete Zeitlimit senken.

Wichtige Erkenntnisse

  • Der Karn-Algorithmus vermeidet mehrdeutige Messwerte von erneut übertragenen Daten.
  • Aktualisiere DevRTT mit der alten EstimatedRTT und danach EstimatedRTT.
  • Das Zeitlimit enthält einen Sicherheitsabstand für Schwankungen und unterliegt implementierungsabhängigen Schranken.
  • Eine Zeitüberschreitung verdoppelt das aktuelle Wiederholungsintervall.
  • Eine gültige neue RTT-Messung erlaubt es, ein erhöhtes Zeitlimit neu zu berechnen.

5.2 Kumulative ACKs, Zeitgeber und Fast Retransmit

TCP kombiniert eine Prüfsumme, Bytesequenznummern, kumulative ACKs und Übertragungswiederholungen, um einen zuverlässigen Datenstrom zu liefern. Der Sender muss ein ACK, das den bestätigten Bereich erweitert, von einem unterscheiden, das die aktuelle Grenze wiederholt.

Verfolge die Ereignisse des Senders

SendBase ist das erste unquittierte Byte; NextSeqNum ist die nächste ungenutzte Bytenummer. Neue Anwendungsdaten werden mit der Sequenznummer NextSeqNum gesendet, die anschließend um die Datenlänge erhöht wird. Läuft kein Zeitgeber für Übertragungswiederholungen, startet das Senden ausstehender Daten ihn.

Der empfohlene grundlegende Zeitgeberalgorithmus verwendet einen Zeitgeber für Übertragungswiederholungen für das älteste unquittierte Segment. Eine Zeitüberschreitung überträgt dieses älteste ausstehende Segment erneut, verdoppelt das Intervall und startet den Zeitgeber neu. Ein ACK größer als SendBase verschiebt die Basis und startet den Zeitgeber neu, falls Daten ausstehen. Ist alles quittiert, stoppt der Zeitgeber. Eine Duplikatquittung verschiebt die Basis nicht.

Verlorene ACKs können sich erledigen

A sendet 500 Byte beginnend bei 501. B empfängt sie und sendet ACK 1.001, das verloren geht. Bestätigt nichts anderes diese Bytes, läuft bei A das Zeitlimit ab und A sendet sie erneut. B erkennt das Duplikat, liefert keine zusätzlichen Daten aus und sendet ACK 1.001 erneut.

Angenommen, A hätte auch die nächsten 500 Byte ab 1.001 gesendet. Trifft ACK 1.501 vor der Zeitüberschreitung ein, bestätigt es beide Segmente. Der Verlust von ACK 1.001 erfordert keine Übertragungswiederholung. Ein ACK ist kumulativ, daher braucht der Sender nicht für jedes Segment ein eigenes, nicht verlorenes ACK.

Bei einer vorzeitigen Zeitüberschreitung sendet A nur das älteste Segment erneut. Bestätigen verzögerte ACKs anschließend beide ursprünglichen Segmente, muss A das zweite nicht erneut senden. Eine Zeitüberschreitung ist ein Beleg dafür, dass die Rückmeldung nicht rechtzeitig ankam, kein Beweis, dass jedes ausstehende Segment verschwunden ist.

Nutze den Zeitpunkt von ACKs, um Lücken zu melden

Bei Daten in der richtigen Reihenfolge ohne ausstehendes ACK darf der Empfänger ein ACK kurz, um weniger als 0,5 s, verzögern, um Quittungen zusammenzufassen. Er sollte mindestens jedes zweite Segment voller Größe quittieren. Ein zweites in der richtigen Reihenfolge eintreffendes Segment löst bei ausstehendem ACK ein kumulatives ACK aus. Eine Ankunft außerhalb der Reihenfolge hinter einer Lücke löst sofort eine Duplikatquittung aus; auch das vollständige oder teilweise Füllen einer Lücke löst sofort ein ACK aus.

Fülle eine Lücke vor der Zeitüberschreitung

Angenommen, A sendet fünf Segmente mit je 1.000 Byte, beginnend bei 1.001, 2.001, 3.001, 4.001 und 5.001. Das zweite geht verloren. Das ACK von B nach dem ersten lautet 2.001. Die drei späteren Ankünfte erzeugen jeweils ein weiteres ACK 2.001.

Nach drei Duplikatquittungen sendet A das bei 2.001 beginnende Segment mittels Fast Retransmit erneut, ohne die Zeitüberschreitung abzuwarten. Da die späteren Daten gepuffert sind, kann B nach dem Füllen dieser Lücke mit 6.001 quittieren. Das erste ACK 2.001 ist das ursprüngliche ACK; die nächsten drei sind Duplikate. Ein oder zwei Duplikate können durch eine gewöhnliche Änderung der Reihenfolge entstehen, weshalb auf weitere Belege gewartet wird.

TCP kombiniert Ideen beider Fensterprotokolle. Seine kumulativen ACKs und der grundlegende einzelne Zeitgeber ähneln GBN, seine Pufferung und gezielten Übertragungswiederholungen jedoch SR. Ausgehandeltes SACK meldet Byteblöcke hinter der kumulativen Grenze, die bereits vorliegen, sodass der Sender mehrere Lücken genauer identifizieren kann. TCP sendet bei fehlgeschlagener Prüfsumme kein NAK; die entstehende Lücke wird durch spätere ACKs oder eine Zeitüberschreitung sichtbar.

Wichtige Erkenntnisse

  • Ein kumulatives ACK kann ein früheres verlorenes ACK abdecken.
  • Der grundlegende Zeitgeber für Übertragungswiederholungen überwacht die ältesten unquittierten Daten.
  • Eine Zeitüberschreitung verlangt nicht, alle ausstehenden Segmente erneut zu übertragen.
  • Drei Duplikatquittungen lösen im grundlegenden Algorithmus Fast Retransmit aus.
  • SACK meldet empfangene Blöcke hinter einer Lücke, ohne die Bedeutung des kumulativen ACK zu ändern.

5.3 Empfangsfenster und Pufferplatz

Flusskontrolle verhindert, dass ein TCP-Sender den Puffer des Empfängers überfüllt. Sie reagiert darauf, wie schnell die empfangende Anwendung liest. Überlastkontrolle reagiert auf die Last im Netz; die beiden Steuerungen schützen unterschiedliche Ressourcen.

Berechne den verfügbaren Platz

RcvBuffer sei die Pufferkapazität, LastByteRcvd das letzte in der richtigen Reihenfolge gespeicherte Byte und LastByteRead das letzte von der Anwendung gelesene Byte. In diesem Modell lückenloser Daten beträgt der belegte Platz LastByteRcvd − LastByteRead. Das Empfangsfenster ist

rwnd=RcvBuffer−(LastByteRcvd−LastByteRead).

Der Empfänger kündigt den verfügbaren Platz im Fensterfeld seiner zurückgesendeten Segmente an. Der Sender hält die Anzahl seiner unquittierten Bytes innerhalb dieses Spielraums:

LastByteSent−LastByteAcked≤rwnd.

Bei RcvBuffer = 40.000 Byte, LastByteRcvd = 30.000 und LastByteRead = 18.000 beträgt die Belegung 12.000 und rwnd 28.000 Byte. ACK 30.001 mit diesem Fenster erlaubt unquittierte Bytes bis einschließlich 58.000. Hat der Sender bereits bis einschließlich 34.000 gesendet, hat er 4.000 ausstehende Bytes und darf noch 24.000 senden. Das Fenster ist ein Spielraum für alle ausstehenden Bytes, kein zusätzlicher Spielraum darüber hinaus.

Setze nach einem Nullfenster fort

Ist kein Platz mehr vorhanden, kündigt der Empfänger rwnd = 0 an und der Sender stoppt die normale Übertragung neuer Daten. Wenn die Anwendung liest, kündigt der Empfänger den neu verfügbaren Platz in einer Fensteraktualisierung an.

Diese Aktualisierung kann ein reines ACK sein, das für sich genommen nicht zuverlässig zugestellt wird. Geht es verloren, könnte der Sender weiter warten, obwohl Platz vorhanden ist. Nullfenstersonden, die häufig ein Byte enthalten, veranlassen den Empfänger, sein aktuelles Fenster zurückzumelden. Die Abstände zwischen den Testanfragen wachsen; sie sind keine normale Übertragung großer Datenmengen durch ein geschlossenes Fenster.

Setze das Fenster zum Durchsatz in Beziehung

Bei festem Fenster und fester RTT gilt für den idealen fensterbegrenzten Durchsatz:

Durchsatz≤rwndRTT.

Verwende Byte und Sekunden, um Byte/s zu erhalten. Ein Fenster von 65.535 Byte erlaubt bei einer RTT von 0,1 s etwa 655.350 Byte/s oder 5,2 Mbit/s. Eine höhere Übertragungsrate kann diese Fenstergrenze nicht beseitigen.

Um einen Pfad auszulasten, muss das Fenster sein Bandbreiten-Verzögerungs-Produkt abdecken. Bei 1 Gbit/s und 0,1 s betragen die benötigten Daten unterwegs 100 Millionen Bit oder 12,5 MB. Das ist eine notwendige Fenstergröße für diese ideale Rate, keine Garantie, sie zu erreichen.

Skaliere das Feld und vermeide winzige Aktualisierungen

Das 16-Bit-Feld allein kann ein so großes Fenster nicht darstellen. Eine in SYNs ausgehandelte Option zur Fensterskalierung multipliziert spätere Fensterwerte mit 2s, wobei s≤14 gilt. Die größte Skalierung ergibt etwas weniger als 1 GiB. Eine Verschiebung um 7 erlaubt höchstens 8.388.480 Byte; eine Verschiebung um 8 erlaubt 16.776.960 und reicht für das Beispiel mit 12,5 MB. Der Skalierungsfaktor bleibt für seine Richtung fest, während sich der angekündigte Platz ändert. Die Fensterfelder der SYNs selbst werden nicht skaliert.

Die Ankündigung nach jeweils wenigen neu freigegebenen Bytes kann das Silly-Window-Syndrom verursachen: viele winzige Segmente mit großem Header-Overhead. Um dies zu vermeiden, wartet der Empfänger auf eine brauchbare Menge freien Platzes, häufig eine MSS oder die Hälfte des Puffers, je nachdem, welcher Wert kleiner ist. Der Nagle-Algorithmus behandelt kleine Schreibvorgänge des Senders, indem er sie zurückhält, solange frühere Daten unquittiert sind, oder bis genügend Daten für ein volles Segment vorliegen.

Wichtige Erkenntnisse

  • Flusskontrolle schützt den Empfänger; Überlastkontrolle schützt das Netz.
  • Ziehe gepufferte ungelesene Daten von der Kapazität ab, um rwnd zu bestimmen.
  • Ziehe bereits ausstehende Daten von rwnd ab, bevor du weitere sendest.
  • Nullfenstersonden beheben das Problem einer verlorenen Aktualisierung zur erneuten Fensteröffnung.
  • Fenstergröße geteilt durch RTT begrenzt den idealen fensterbegrenzten Durchsatz.
  • Die Fensterskalierung legt den Multiplikator beim Aufbau fest, während sich der freie Platz weiter ändert.
  • Aktualisierungsregeln des Empfängers und der Nagle-Algorithmus behandeln unterschiedliche Ursachen winziger Segmente.

Transportschicht: Beispiele

5 Interaktive Lektionen

1

Verfolge Daten von einem Socket zum anderen

9 Schritte
Verfolge die Übertragung auf der Transportschicht, wähle empfangende Sockets aus und erkläre, wie TCP und UDP Anwendungen bedienen.
  1. 1
    EinführungEin Host, mehrere Verbindungen

    Ein Laptop kann eine Webseite anzeigen und gleichzeitig einen Anruf führen. Beide Anwendungen nutzen die IP-Übertragung gemeinsam, brauchen aber jeweils ihre eigenen eingehenden Daten.

    Verfolge eine Nachricht von einem Anwendungssocket abwärts durch die Schichten, durch das Netz und wieder aufwärts zum Zielsocket. Vergleiche dann, wie ein UDP-Server mehrere Quellen behandelt und wie ein TCP-Server bestehende Verbindungen unterscheidet.

  2. 2
    ErklärungEin Segment erstellen und auspacken

    Das sendende Transportprotokoll übernimmt Anwendungsdaten und ergänzt seinen Header; so entsteht ein Segment. IP verpackt dieses Segment in ein IP-Datagramm.

    Am Ziel bestimmt IP das Protokoll der höheren Schicht und gibt das Segment weiter. TCP oder UDP interpretiert den Transportheader und wählt einen Socket aus. Die Anwendung liest über diesen Socket; gewöhnliche Router leiten die IP-Datagramme nur entlang des Pfades weiter.

  3. 3
    AnalogieEine Adresse und ein Empfänger

    Eine Gebäudeadresse bringt einen Brief zum richtigen Gebäude. Ein Empfängername ermöglicht es einer Person im Gebäude, ihn an die richtige Person weiterzugeben. Entsprechend unterstützen IP-Adressen die Zustellung an Hosts, während Transportports bei der Auswahl eines Anwendungssockets helfen.

    Der Vergleich trennt zwei Aufgaben. Tatsächliche Transportprotokolle bieten außerdem festgelegte Dienste: TCP kann fehlende Bytes wiederherstellen, während UDP die Wiederherstellung der Software darüber überlässt.

  4. 4
    HerausforderungKann TCP eine Ankunftszeit versprechen?

    Eine Anwendung braucht jedes Byte unversehrt und außerdem eine garantierte Ankunft innerhalb von 25 ms. Erfüllt die Wahl von TCP beide Anforderungen?

    ---reveal---

    TCP bietet eine zuverlässige Zustellung von Bytes in der richtigen Reihenfolge, garantiert aber nicht die Frist von 25 ms. Die Wiederherstellung kann Verzögerung verursachen, und der Best-Effort-IP-Pfad bietet keine feste maximale Wartezeit. Eine Zustellgarantie und eine Fristgarantie sind getrennte Anforderungen.

  5. 5
    ErklärungEinen empfangenden UDP-Socket auswählen

    Ein einfacher, nicht verbundener UDP-Serversocket wird anhand seiner Ziel-IP-Adresse und seines Zielports ausgewählt. Nachrichten verschiedener Clients können alle diesen Socket erreichen.

    Angenommen, 203.0.113.20:7000 empfängt Nachrichten von 192.0.2.5:55010 und 198.51.100.9:55010. Der Quellport ist gleich, aber die Quellen unterscheiden sich. Der Server liest mit jeder Nachricht den Quellendpunkt, um die passende Antwort zu adressieren.

  6. 6
    BeispielEinen TCP-Serverport mehrfach nutzen

    Ein TCP-Server unter 203.0.113.20:443 hat zwei Clients: 192.0.2.5:55010 und 198.51.100.9:55010.

    Jede aufgebaute Verbindung hat ein eigenes Vierertupel. Beide haben dieselbe Serveradresse und denselben Serverport; ihre Quelladressen unterscheiden sie. Der lauschende Socket nimmt weitere Clients an, während die Verbindungssockets bestehende Datenströme übertragen. Für jeden Client wird kein zusätzlicher lauschender Port benötigt.

  7. 7
    HerausforderungDie Verbindungssockets zählen

    Ein Server unter 203.0.113.30:443 nimmt Verbindungen von 192.0.2.7:56000, 192.0.2.7:56001 und 198.51.100.7:56000 an. Wie viele Verbindungssockets unterscheiden diese Datenströme?

    ---reveal---

    Drei. Die ersten beiden unterscheiden sich im Quellport; der erste und der dritte unterscheiden sich in der Quelladresse. Ihr gemeinsamer Zielport führt sie nicht zusammen. Der lauschende Socket ist separat und gehört nicht zu diesen drei Verbindungssockets.

  8. 8
    HerausforderungTransportprotokoll und Empfangsendpunkt wählen

    Ein Dienst braucht separate Nachrichten ohne Verbindungsaufbau. Zwei Clients senden an seinen nicht verbundenen Socket unter 203.0.113.40:8000. Welches Transportprotokoll passt und wodurch wird dieser Serversocket ausgewählt?

    ---reveal---

    UDP passt zu dem Nachrichtendienst ohne Transport-Handshake. Die Zieladresse 203.0.113.40 und Port 8000 wählen den einfachen Serversocket aus. Die Quellendpunkte geben an, wohin Antworten gehen; sie erfordern keine separaten Verbindungen wie bei TCP.

  9. 9
    ZusammenfassungEinen Zustellungsablauf in der richtigen Reihenfolge lesen

    Bestimme bei einem eingehenden Ablauf zuerst das Transportprotokoll, dann seine Endpunktinformationen und anschließend den Dienst, den die Anwendung erhält.

    Eine UDP-Nachricht und ein TCP-Bytestrom können denselben numerischen Serverport nutzen, weil sie zu unterschiedlichen Protokollen gehören. Innerhalb von TCP unterscheiden beide Adressen und beide Ports eine Verbindung. Zuverlässigkeit, Zeitverhalten und Verschlüsselung müssen jeweils als separate Anforderungen der Anwendung geprüft werden.

2

Prüfe eine UDP-Nachricht und wähle ihren Dienst

11 Schritte
Lies UDP-Felder, führe einen Prüfsummenübertrag zurück und entscheide, ob die Verlustbehebung eine Frist der Anwendung einhalten kann.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungEin kleiner Header mit einer bestimmten Aufgabe
  2. 2
    ErklärungDie Bytes eines UDP-Segments zählen
  3. 3
    ErklärungDie Eingabe für die Prüfsumme vorbereiten
  4. 4
    BeispielDen Übertrag zurückführen, bevor es weitergeht
  5. 5
    BeispielKomplement bilden und dann prüfen
  6. 6
    HerausforderungEinen weiteren Übertrag behandeln
  7. 7
    ErklärungDie Wiederherstellung innerhalb der Frist halten
  8. 8
    KernaussageEine UDP-Anwendung kann mehr ergänzen
  9. 9
    HerausforderungWürde eine Ersatzkopie noch helfen?
  10. 10
    HerausforderungNachrichtengröße und Dienstwahl verbinden
  11. 11
    ZusammenfassungPrüfen, was jede Schicht bereitstellt
3

Entwickle eine zuverlässige Übertragung mit Schiebefenster

20 Schritte
Entwickle die Behandlung von Duplikaten, Zeitgeber und Pipelining und verfolge dann Go-Back-N und Selective Repeat bei demselben Verlust.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungFehlerfälle sichtbar machen
  2. 2
    ErklärungDarstellen, worauf jeder Endpunkt wartet
  3. 3
    AnalogieEiner Ersatzkopie dieselbe Identität geben
  4. 4
    HerausforderungEin Duplikat beantworten, ohne die Auslieferung zu wiederholen
  5. 5
    ErklärungAuf ausbleibende Antworten reagieren
  6. 6
    BeispielSenden und Warten getrennt messen
  7. 7
    BeispielDieses Warteintervall füllen
  8. 8
    HerausforderungEin Pipelining-Fenster bestimmen
  9. 9
    ErklärungDas Go-Back-N-Fenster lesen
  10. 10
    BeispielEin Paket bei Go-Back-N verlieren
  11. 11
    HerausforderungDen ausstehenden Bereich erneut übertragen
  12. 12
    KernaussageEine ungenutzte Nummer außerhalb des GBN-Fensters lassen
  13. 13
    ErklärungSelective Repeat speichert spätere Ankünfte
  14. 14
    BeispielDenselben Verlust mit einer Ersatzkopie beheben
  15. 15
    HerausforderungDie SR-Basis nach einem späten ACK verschieben
  16. 16
    BeispielDie Überschneidung alter und neuer Nummern aufzeigen
  17. 17
    TippFenster vor der Wiederverwendung von Nummern trennen
  18. 18
    HerausforderungZwischen Fensterverfahren wählen
  19. 19
    VerbindungKopien behandeln, die einen vollständigen Zyklus überdauern
  20. 20
    ZusammenfassungDen Zustand verfolgen, bevor erneut gesendet wird
4

Verfolge TCP vom SYN bis zum FIN

16 Schritte
Lies den Header, nummeriere beide Byteströme und arbeite Verbindungsaufbau und -abbau durch.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungZwei Byteströme auseinanderhalten
  2. 2
    ErklärungEinen Datenstrom statt einer Folge von Nachrichten lesen
  3. 3
    BeispielZuerst die Headergröße, dann die Nutzlastgröße bestimmen
  4. 4
    HerausforderungDie tatsächlichen Header berücksichtigen
  5. 5
    ErklärungDas erste Datenbyte benennen
  6. 6
    BeispielDurch unterschiedlich große Segmente voranschreiten
  7. 7
    BeispielEine Quittung im Huckepackverfahren senden
  8. 8
    HerausforderungEin ACK an einer Lücke festhalten
  9. 9
    BeispielBeide Anfangsnummern bestätigen
  10. 10
    HerausforderungDie letzten Handshake-Felder prüfen
  11. 11
    ErklärungJeweils eine Richtung schließen
  12. 12
    KernaussageDort warten, wo das letzte ACK wiederholt werden kann
  13. 13
    VerbindungEine Verbindungsanfrage ablehnen oder abwehren
  14. 14
    HerausforderungDaten und Verbindungsabbau zusammen quittieren
  15. 15
    TippDie Wiederverwendung von Nummern erkennen
  16. 16
    ZusammenfassungJede verbrauchte Nummer berücksichtigen
5

Behebe TCP-Verluste, ohne den Empfänger zu überfordern

18 Schritte
Aktualisiere einen Zeitgeber, identifiziere fehlende Bytes, berechne verfügbaren Empfangsplatz und erkläre die erneute Fensteröffnung.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungBestimmen, was den Fortschritt aufhält
  2. 2
    ErklärungEine brauchbare RTT-Messung wählen
  3. 3
    BeispielZuerst die Abweichung aktualisieren
  4. 4
    BeispielDen Mittelwert aktualisieren und Schranken anwenden
  5. 5
    HerausforderungMit einem zweiten Messwert fortfahren
  6. 6
    TippDas Zeitlimit erhöhen, ohne einen Messwert zu erfinden
  7. 7
    BeispielEin späteres ACK ein verlorenes abdecken lassen
  8. 8
    ErklärungEine Lücke mit wiederholten ACKs melden
  9. 9
    HerausforderungEine Lücke füllen und über gepufferte Bytes vorrücken
  10. 10
    KernaussageDen grundlegenden Zeitgeber für die älteste Lücke nutzen
  11. 11
    ErklärungZuerst die ungelesenen Bytes zählen
  12. 12
    BeispielBereits ausstehende Daten abziehen
  13. 13
    HerausforderungDen nächsten Sendespielraum berechnen
  14. 14
    VerbindungEine verlorene Aktualisierung zur erneuten Fensteröffnung ausgleichen
  15. 15
    BeispielEin Fenster passend zum Pfad dimensionieren
  16. 16
    TippSkalierung und winzige Aktualisierungen auseinanderhalten
  17. 17
    HerausforderungDaten wiederherstellen, aber auf Platz warten
  18. 18
    ZusammenfassungJede Reaktion der passenden Information zuordnen

Transportschicht: Übungsaufgaben

50 Übungsfragen in 5 Sets

Set 1: Schiebefenster und Verlustbehebung10 Übungsfragen

Frage 1 von 10

Was bestätigt ACK 12 bei Go-Back-N?
  1. Nur Paket 12
  2. Alle Pakete bis einschließlich 12
  3. Alle Pakete vor 12
  4. Nur Pakete nach 12
Antwort zeigenAntwort ausblenden
Antwort: B
Go-Back-N verwendet kumulative ACKs, die das letzte in der richtigen Reihenfolge empfangene Paket nennen. ACK 12 bestätigt Pakete bis einschließlich 12 und erlaubt dem Sender, die Basis auf 13 zu setzen. Wer es nur als Bestätigung von Paket 12 versteht, verwechselt Go-Back-N mit den Einzelquittungen von Selective Repeat.

Frage 2 von 10

Ein Go-Back-N-Sender hat die Fenstergröße 6, base 20 und nextseqnum 24. Es tritt kein Überlauf auf. Welche neuen Pakete kann er vor einem weiteren ACK senden?
  1. 24 bis 29
  2. 20 und 21
  3. 24 und 25
  4. 25 und 26
Antwort zeigenAntwort ausblenden
Antwort: C
Das zulässige Fenster ist 20–25. Die Pakete 20–23 stehen bereits aus, sodass 24 und 25 für neue Daten verfügbar bleiben. Ein neuer Spielraum von sechs Paketen ab 24 würde die vier Pakete übergehen, die das aktuelle Fenster noch belegen.

Frage 3 von 10

Ein Go-Back-N-Sender verwendet ein Fenster der Größe 5 und sendet die Pakete 10–14; Paket 12 geht verloren. ACKs für 10 und 11 treffen ein, sodass er 15 und 16 sendet. Alle späteren Daten treffen vor Ablauf des Zeitgebers für Paket 12 ein. Was wird bei dieser Zeitüberschreitung erneut übertragen?
  1. 12, 13, 14, 15 und 16
  2. Nur 12
  3. Nur 12, 13 und 14
  4. 10, 11, 12, 13 und 14
Antwort zeigenAntwort ausblenden
Antwort: A
Der Empfänger hat die Pakete 13–16 verworfen, weil Paket 12 fehlte. Daher hat keines dieser späteren Pakete das kumulative ACK vorgerückt. Die Sendefensterbasis bleibt bei 12 und der ausstehende Bereich ist 12–16. Würde nur die ursprünglich gesendete Gruppe erneut gesendet, fehlten die neu gesendeten Pakete, die ebenfalls unquittiert sind.

Frage 4 von 10

Ein Selective-Repeat-Sender hat die Basis 30 und die Pakete 30–33 stehen aus. ACK 31, 32 und 33 treffen ein, ACK 30 jedoch nicht. Wo steht die Sendefensterbasis?
  1. 31
  2. 33
  3. 34
  4. 30
Antwort zeigenAntwort ausblenden
Antwort: D
Selective Repeat erfasst die Pakete 31–33 als quittiert, lässt die Basis aber beim ältesten unquittierten Paket 30. Deren ACKs bestätigen Paket 30 nicht kumulativ. Würde die Basis auf 34 verschoben, könnte der Sender Daten vergessen, deren Zustellung noch unbestätigt ist.

Frage 5 von 10

Ein SR-Empfänger hat die Fenstergröße 4. Er nimmt die Pakete 8–11 an und setzt seine Basis auf 12. ACK 9 geht verloren, sodass Paket 9 erneut übertragen wird. Welche Antwort ermöglicht dem Sender, korrekt fortzufahren?
  1. Paket 9 ignorieren, weil es außerhalb des aktuellen Fensters liegt.
  2. ACK 11 senden, weil alle vier Pakete empfangen wurden.
  3. ACK 9 senden, ohne Paket 9 erneut auszuliefern.
  4. Paket 9 puffern, bis die Sequenznummern überlaufen.
Antwort zeigenAntwort ausblenden
Antwort: C
Paket 9 ist ein altes Duplikat im unmittelbar vorhergehenden Empfangsfenster. Seine erneute Quittierung gibt dem Sender die verlorene Einzelbestätigung, ohne Anwendungsdaten doppelt auszuliefern. ACK 11 kann ACK 9 bei SR nicht ersetzen, weil die Quittungen nicht kumulativ sind.

Frage 6 von 10

Ein Protokollentwickler benötigt bei Selective Repeat gleich große Sender- und Empfängerfenster mit je 10 Paketen. Wie groß muss das Sequenznummernfeld mindestens sein?
  1. 3 Bit
  2. 5 Bit
  3. 4 Bit
  4. 6 Bit
Antwort zeigenAntwort ausblenden
Antwort: B
Selective Repeat braucht mindestens doppelt so viele verschiedene Sequenznummern wie die Fenstergröße. Fenster mit zehn Paketen benötigen mindestens 20 Nummern: 4 Bit bieten nur 16, 5 Bit dagegen 32. Die Anwendung der Go-Back-N-Schranke würde trotz der Überschneidung alter und neuer SR-Fenster fälschlich 4 Bit erlauben.

Frage 7 von 10

Eine Pipeline sendet Pakete mit 1.250 Byte über eine Verbindung mit 10 Mbit/s und 9 ms RTT. Vernachlässige Übertragung und Verarbeitung des ACK. Was ist die kleinste Fenstergröße, die den Sender ununterbrochen beschäftigt halten kann?
  1. 9 Pakete
  2. 11 Pakete
  3. 90 Pakete
  4. 10 Pakete
Antwort zeigenAntwort ausblenden
Antwort: D
Jedes Paket enthält 10.000 Bit und seine Übertragung dauert 1 ms. Der Sende- und Rückmeldezyklus beträgt 9 + 1 = 10 ms, sodass zehn Paketübertragungszeiten ihn ausfüllen. Wer nur die RTT verwendet, erhält neun und lässt die Übertragungszeit des ersten Pakets aus dem Zyklus weg.

Frage 8 von 10

Welcher Mechanismus ermöglicht einem Stop-and-Wait-Empfänger, ein Ersatzpaket von neuen Daten zu unterscheiden?
  1. Eine Sequenznummer
  2. Ein längeres Zeitlimit
  3. Eine höhere Übertragungsrate
  4. Eine Prüfsumme allein
Antwort zeigenAntwort ausblenden
Antwort: A
Der Empfänger erkennt anhand der Sequenznummer des Pakets, ob seine Daten bereits angenommen wurden. Eine Prüfsummenprüfung kann sowohl beim Original als auch bei der Ersatzkopie erfolgreich sein, weil beide Kopien unversehrt sein können. Sie prüft auf Beschädigungen, nicht darauf, ob die Anwendung diese Daten bereits erhalten hat.

Frage 9 von 10

Zwei Stop-and-Wait-Pfade verwenden dieselben Paketgrößen und RTTs. Die Übertragungsrate der zweiten Verbindung ist doppelt so hoch. Wie verändern sich Auslastung und Nutzdatendurchsatz, wenn Verluste und ACK-Übertragung vernachlässigt werden?
  1. Beide verdoppeln sich.
  2. Die Auslastung sinkt; der Durchsatz steigt auf weniger als das Doppelte.
  3. Die Auslastung bleibt gleich; der Durchsatz verdoppelt sich.
  4. Die Auslastung steigt; der Durchsatz bleibt gleich.
Antwort zeigenAntwort ausblenden
Antwort: B
Die Verdopplung der Rate halbiert die Übertragungszeit, während die RTT unverändert bleibt. Daher sinkt der Zeitanteil des Zyklus, der für das Senden verwendet wird. Der Zyklus wird kürzer, sodass der Durchsatz steigt, aber die unveränderte RTT verhindert eine Verdopplung. Verbindungskapazität und der genutzte Anteil dieser Kapazität sind unterschiedliche Größen.

Frage 10 von 10

TCP sendet drei aufeinanderfolgende Segmente. Das ACK für das erste geht verloren, aber ein späteres ACK, das alle drei abdeckt, trifft vor der Zeitüberschreitung ein. Welche Daten müssen wegen dieses verlorenen ACK erneut gesendet werden?
  1. Nur das erste Segment
  2. Nur das letzte Segment
  3. Keines der drei Segmente
  4. Alle drei Segmente
Antwort zeigenAntwort ausblenden
Antwort: C
Das spätere kumulative ACK bestätigt jedes Byte vor seiner Quittungsnummer, einschließlich der Bytes, die vom verlorenen ACK abgedeckt wurden. Sind alle drei Segmente vor der Zeitüberschreitung bestätigt, ist keine Übertragungswiederholung nötig. Würde für jedes Segment ein eigenes, nicht verlorenes ACK verlangt, würden TCP-Rückmeldungen wie Einzelquittungen bei SR behandelt.
Set 2: Transportdienste und Nachrichtenzustellung10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Welcher TCP-Dienst ermöglicht einer empfangenden Anwendung, Dateibytes in ihrer ursprünglichen Reihenfolge zu erhalten?
  1. Eine garantierte maximale Netzverzögerung
  2. Ein zuverlässiger Bytestrom in der richtigen Reihenfolge
  3. Eine Nachricht pro Schreibvorgang der Anwendung
  4. Eine eingebaute verschlüsselte Verbindung
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Zwei TCP-Clients verwenden den Quellport 54000, um sich mit derselben Serveradresse und demselben Port zu verbinden. Ihre Quell-IP-Adressen unterscheiden sich. Wie unterscheidet der Server ihren Datenverkehr?
  1. Er weist einem Client einen neuen lauschenden Port zu.
  2. Er führt beide Clients in einem Bytestrom zusammen.
  3. Er wählt Sockets allein anhand der Zielports aus.
  4. Er wählt anhand der Vierertupel verschiedene Verbindungssockets aus.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine UDP-Antwort geht von 203.0.113.8:123 an 192.0.2.18:57320. Was ist ihr Zielport?
  1. 57320
  2. 123
  3. 17
  4. 192
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Eine UDP-Nachricht enthält 72 Byte Daten. Welcher Wert gehört in ihr Längenfeld?
  1. 72 Byte
  2. 92 Byte
  3. 80 Byte
  4. 100 Byte
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine Positionsaktualisierung in einem Spiel wird in 35 ms ungültig. Die Wiederherstellung einer verlorenen Kopie würde 90 ms dauern, und eine neuere Position liegt bereits vor. Warum könnte die Anwendung auf diese Wiederherstellung verzichten?
  1. Die Ersatzkopie käme nach ihrer nutzbaren Frist an.
  2. UDP garantiert, dass die neuere Position genau ist.
  3. Das Netz muss die verlorene Aktualisierung bereits zugestellt haben.
  4. Ein UDP-Header verhindert das Senden alter Positionen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Ein Stop-and-Wait-Empfänger hat Paket 0 ausgeliefert und erwartet nun Paket 1. Ein weiteres unversehrtes Paket 0 trifft ein. Was sollte er tun?
  1. Es erneut ausliefern und ACK 0 senden.
  2. Seine Daten verwerfen und ACK 1 senden.
  3. Seine Daten verwerfen und keine Rückmeldung senden.
  4. Seine Daten verwerfen und ACK 0 senden.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein Stop-and-Wait-Protokoll für reine Bitfehler hat Prüfsummen und ACK/NAK-Rückmeldungen, aber keine Sequenznummern. Warum ist erneutes Senden nach einer beschädigten Rückmeldung unsicher?
  1. Die Ersatzkopie kann keine gültige Prüfsumme tragen.
  2. Der Empfänger könnte ein bereits angenommenes Paket zweimal ausliefern.
  3. Der Sender muss für jeden erneuten Versuch seinen Quellport ändern.
  4. Der Rückmeldekanal kann keine nützlichen Informationen übertragen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein Stop-and-Wait-Sender verwendet Pakete mit 1.000 Byte auf einer Verbindung mit 8 Mbit/s und 19 ms RTT. Vernachlässige Übertragung und Verarbeitung des ACK. Wie hoch ist seine Auslastung?
  1. 0,005
  2. 0,95
  3. 0,05
  4. 0,50
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ein TCP-Datenoffsetfeld enthält 9. Wie lang ist der TCP-Header?
  1. 36 Byte
  2. 9 Byte
  3. 29 Byte
  4. 72 Byte
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Sender des Alternating-Bit-Protokolls sendet Paket 1. Dessen ACK wird über das Zeitlimit hinaus verzögert, sodass eine Ersatzkopie gesendet wird. Das ursprüngliche ACK trifft dann ein, bevor die Ersatzkopie den Empfänger erreicht. Der Sender sendet das neue Paket 0. Was liefert der Empfänger von der Ersatzkopie 1 und dem neuen Paket 0 aus, wenn die Reihenfolge der Datenpakete nicht verändert wird?
  1. Beide Pakete, weil jedes unversehrt ankam.
  2. Keines der Pakete, weil beim Sender das Zeitlimit ablief.
  3. Nur Paket 1, weil dessen ACK zuerst ankam.
  4. Nur Paket 0, nachdem er Duplikat 1 verworfen hat.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 3: TCP-Bytes und Verbindungszustand10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Ein Programm schreibt 60 Byte und dann 90 Byte in einen TCP-Socket. Was kann ein einzelner Lesevorgang beim Empfänger zurückgeben?
  1. Nur 60 Byte bis zu einem zweiten Lesevorgang
  2. Genau eine Nachricht mit 150 Byte und einer Grenzmarkierung
  3. Nur 90 Byte, weil der spätere Schreibvorgang den ersten ersetzt
  4. Alle 150 Byte ohne Markierung der Schreibgrenze
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Ein TCP-Segment beginnt bei Byte 8401 und enthält 640 Byte Daten, ohne SYN oder FIN. Welches ACK bestätigt dieses gesamte Segment, wenn alle früheren Bytes angekommen sind?
  1. 9040
  2. 9041
  3. 8402
  4. 640
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Ein Empfänger erwartet Byte 12001. Er puffert 400 Byte ab 12401, empfängt dann 250 Byte ab 12001 und anschließend 150 Byte ab 12251. Welches ACK folgt jeweils auf die letzten beiden Ankünfte?
  1. 12251, dann 12801
  2. 12401, dann 12801
  3. 12251, dann 12401
  4. 12801, dann 12801
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Das nächste Byte eines Clients ist 3001 und das nächste Byte eines Servers ist 9101. Der Client sendet 180 Byte; der Server empfängt sie und sendet 420 Byte, wobei keine früheren Serverdaten ausstehen. Welche Sequenz- und Quittungsnummer stehen in diesem Serversegment?
  1. Sequenznummer 3281; ACK 9521
  2. Sequenznummer 9521; ACK 3181
  3. Sequenznummer 9101; ACK 3181
  4. Sequenznummer 3181; ACK 9101
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Ein Client sendet SYN mit der Sequenznummer 4600. Der Server antwortet mit SYN-ACK und der Sequenznummer 17000. Welche Quittungsnummer gehört in das abschließende Handshake-ACK des Clients?
  1. 17000
  2. 17001
  3. 4601
  4. 17002
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

A hat Daten bis einschließlich Byte 7199 gesendet und sendet dann FIN. B quittiert dieses FIN und hat noch 300 ungesendete Anwendungsbytes. Wie verhält sich B als Nächstes korrekt?
  1. B sendet seine Daten und kann danach sein eigenes FIN senden; sein ACK ist 7201.
  2. B muss seine ungesendeten Daten verwerfen; sein ACK ist 7201.
  3. B sendet seine Daten erst nach einem neuen Handshake; sein ACK ist 7200.
  4. B schließt beide Richtungen sofort; sein ACK ist 7200.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

A schließt zuerst und erreicht nach Empfang des FIN von B den Zustand TIME_WAIT. Das letzte ACK von A geht verloren. B überträgt sein FIN erneut. Warum ist es jetzt nützlich, den Verbindungszustand von A beizubehalten?
  1. A kann dadurch die Senderichtung von B erneut öffnen.
  2. A kann dadurch fehlende Daten von B erneut senden.
  3. A kann dadurch das FIN erneut quittieren.
  4. A kann dadurch die nächste Sequenznummer von B festlegen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein TCP-Sender hat ein ACK 4401 erhalten, gefolgt von drei weiteren ACKs 4401, die durch später hinter einer Lücke eintreffende Daten ausgelöst wurden. Welches Segment sendet das grundlegende Fast Retransmit erneut?
  1. Das Segment, das bei Byte 4400 endet
  2. Das zuletzt gesendete Segment
  3. Jedes Segment nach Byte 4401
  4. Das Segment, das bei Byte 4401 beginnt
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ein Empfänger hat eine Kapazität von 24000 Byte und enthält 6500 ungelesene Bytes. Der Sender hat unter der aktuellen Ankündigung bereits 5500 Byte ausstehen. Wie viele zusätzliche Bytes passen hinein?
  1. 17500 Byte
  2. 12000 Byte
  3. 18500 Byte
  4. 6500 Byte
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

TCP sendet Segmente ab 2001, 2501 und 3001 mit jeweils 500 Byte. Alle Daten kommen an, aber jedes ACK wird über das Zeitlimit hinaus verzögert. Der Sender sendet 2001 erneut; dann trifft ACK 3501 ein, bevor der neue Zeitgeber abläuft. Was bleibt erneut zu übertragen?
  1. Nichts; ACK 3501 bestätigt alle drei Datensegmente.
  2. Nur 2501; 2001 war die einzige gesendete Ersatzkopie.
  3. 2501 und 3001; jedes braucht ein eigenes Zeitgeberereignis.
  4. Alle drei; ein ACK nach Zeitüberschreitung kann ursprüngliche Daten nicht bestätigen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 4: TCP-Zeitüberschreitungen, Lücken und Empfangsplatz10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Ein Zeitgeber für Übertragungswiederholungen ist auf 1,2 s eingestellt. Welches Intervall folgt nach einer Zeitüberschreitung bei exponentiellem Backoff?
  1. 0,6 s
  2. 1,2 s
  3. 2,4 s
  4. 4,8 s
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

EstimatedRTT beträgt 200 ms und DevRTT 20 ms. Ein neuer Messwert beträgt 240 ms. Welches vorläufige Zeitlimit ergibt sich mit den empfohlenen Gewichten und der empfohlenen Reihenfolge der Aktualisierung bei vernachlässigbarer Uhrauflösung?
  1. 305 ms
  2. 300 ms
  3. 285 ms
  4. 320 ms
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

EstimatedRTT beträgt 240 ms und DevRTT 20 ms. Ein Sender ohne Zeitstempel hat sein Zeitlimit durch Backoff auf 2 s erhöht. Ein ACK für erneut übertragene Daten trifft 150 ms nach dem erneuten Versuch ein. Später liefern zuvor nicht erneut übertragene Daten einen gültigen Messwert von 320 ms. Welches vorläufige Zeitlimit sollte bei vernachlässigbarer Uhrauflösung aus diesen Ereignissen berechnet werden?
  1. 390 ms
  2. 444 ms
  3. 350 ms
  4. 2000 ms
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Ein Empfänger erhält ein unversehrtes TCP-Segment hinter einem fehlenden Bytebereich. Was sollte sein sofortiges ACK melden?
  1. Das Ende des neu eingetroffenen Segments
  2. Das erste noch fehlende Byte des lückenlosen Datenstroms
  3. Die Länge des Segments außerhalb der Reihenfolge
  4. Das erste Byte nach allen vom Kommunikationspartner gesendeten Daten
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Ein Empfänger erwartet Byte 6001. Er puffert drei aufeinanderfolgende Segmente mit je 800 Byte ab 6801, 7601 und 8401 und sendet sofort Duplikatquittungen. Dann trifft ein Ersatzsegment mit 800 Byte ab 6001 ein. Welches kumulative ACK folgt?
  1. 6801
  2. 8401
  3. 9201
  4. 6001
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Bei einem TCP-Sender stehen Segmente ab 10501, 11001, 11501 und 12001 aus. Seine aktuelle kumulative ACK-Grenze ist 10501. Er erhält zweimal ACK 10501, dann einmal ACK 11001 und danach noch dreimal ACK 11001. Kein Zeitgeber läuft ab. Welches Segment sendet das grundlegende Fast Retransmit erneut?
  1. Das Segment ab 10501
  2. Das Segment ab 11501
  3. Das Segment ab 12001
  4. Das Segment ab 11001
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Nachdem ein Empfänger ein Nullfenster angekündigt hat, liest seine Anwendung Daten. Die Fensteraktualisierung zur erneuten Öffnung geht verloren. Wodurch kann der Sender den verfügbaren Platz erfahren?
  1. Durch eine automatische Wiederholung jedes reinen ACK
  2. Durch einen neuen Drei-Wege-Handshake auf demselben Datenstrom
  3. Durch ein festes Zeitlimit, das das Fenster auf sein Maximum zurücksetzt
  4. Durch eine Nullfenstersonde und die Antwort mit dem aktuellen Fenster des Empfängers
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein Pfad hat eine RTT von 80 ms und kann 200 Mbit/s übertragen. Ein Empfänger kann bis zu 65535 × 2^s Byte ankündigen. Was ist ohne Berücksichtigung anderer Beschränkungen die kleinste Skalierungsverschiebung, die genügend Daten unterwegs erlaubt, um den Pfad auszulasten?
  1. 4
  2. 5
  3. 6
  4. 7
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ein Empfänger kündigt ACK 51001 und rwnd 18000 an, während der Sender bis einschließlich Byte 57000 gesendet hat. Der Sender überträgt dann weitere 8000 Byte und erhält ACK 59001 mit rwnd 12000. Wie viele zusätzliche Bytes darf er nun unter der neuen Ankündigung senden?
  1. 4000 Byte
  2. 12000 Byte
  3. 6000 Byte
  4. 10000 Byte
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Dienst nutzt UDP, braucht aber eine vollständige Zustellung in der richtigen Reihenfolge und sendet erheblichen Datenverkehr über einen gemeinsam genutzten Pfad. Was muss der Dienst oder ein Protokoll oberhalb von UDP bereitstellen?
  1. Wiederherstellung, Einhaltung der Reihenfolge und geeignete Überlastkontrolle
  2. Nur ein größeres Prüfsummenfeld und einen längeren IP-Header
  3. Nur einen größeren Empfangspuffer und dauerhafte Quellports
  4. Die Annahme, dass jeder Verlust auf dem gemeinsamen Pfad harmlos ist
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 5: Vollständige Transportabläufe untersuchen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Eine mitgelieferte UDP-Prüfsumme ungleich null besteht beim Empfänger die Prüfung nicht. Was macht UDP mit dem Segment?
  1. Es korrigiert die Bits und liefert es dann aus.
  2. Es verwirft das Segment stillschweigend.
  3. Es fordert mit einem UDP-NAK erneutes Senden an.
  4. Es liefert zwei Kopien zum Vergleich aus.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Zwei 16-Bit-Eingabewörter für die Prüfsumme sind FFFE und 0002. Wie lautet ihre Internet-Prüfsumme?
  1. FFFF
  2. 0000
  3. FFFE
  4. 0001
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Ein Selective-Repeat-Protokoll mit gleich großen Fenstern verwendet die Nummern 0–7 und die Fenstergröße 5. Der Empfänger nimmt 0–4 an, aber jedes ACK geht verloren. Welche alten Paketnummern würden bei einer erneuten Übertragung in das neue Fenster des Empfängers passen?
  1. 0 und 1
  2. 3 und 4
  3. 5 und 6
  4. 0 bis 4
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Ein Go-Back-N-Sender hat Nummern mit vier Bit und braucht mindestens 16 Pakete gleichzeitig unterwegs, um einen Pfad auszulasten. Was ist die kleinste Änderung, die diese Pipeline sicher unterstützt, ohne den Protokolltyp zu wechseln?
  1. Vier Bit beibehalten und alle 16 Nummern nutzen.
  2. Vier Bit beibehalten und nur den Empfangspuffer vergrößern.
  3. Vier Bit beibehalten und kumulative Quittungen durch Einzelquittungen ersetzen.
  4. Nummern mit fünf Bit und ein Fenster von mindestens 16 verwenden.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Ein Pfad erlaubt IPv4-Datagramme mit 1400 Byte. Der IP-Header umfasst 20 Byte und der TCP-Datenoffset ist 8. Wie viele Datenbytes passen hinein, ohne diese Grenze zu überschreiten?
  1. 1360 Byte
  2. 1348 Byte
  3. 1372 Byte
  4. 1380 Byte
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Nach einem Handshake mit der Client-ISN 15000 sendet der Client 2300 Byte, aufgeteilt in 1000, 1000 und 300 Byte, und dann FIN. Alles kommt in der richtigen Reihenfolge an. Welches ACK bestätigt das FIN?
  1. 17300
  2. 17301
  3. 17302
  4. 18002
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

EstimatedRTT beträgt 400 ms und DevRTT 60 ms. Ein gültiger neuer Messwert beträgt nach einem früheren Backoff 240 ms. Welches Zeitlimit ergibt sich aus dieser neuen Messung bei vernachlässigbarer Uhrauflösung und einem Minimum von 1 s?
  1. 560 ms
  2. 640 ms
  3. 1120 ms
  4. 1000 ms
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein Empfänger kündigt ACK 8001 mit rwnd 9000 an. Der Sender hat bis einschließlich 11000 gesendet. Die Anwendung liest dann 2000 Byte, aber keine aktualisierte Ankündigung erreicht den Sender. Wie viele neue Bytes darf der Sender unter dem ihm bekannten Fenster senden?
  1. 6000 Byte
  2. 8000 Byte
  3. 9000 Byte
  4. 11000 Byte
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ein Server verwendet SYN-Cookies während einer Flut unvollständiger Handshakes. Welches Ereignis erlaubt ihm normalerweise, Zustandsinformationen für die neue Verbindung anzulegen?
  1. Der Empfang eines beliebigen SYN an den lauschenden Port
  2. Das Senden des ersten SYN-ACK an einen scheinbaren Client
  3. Die Validierung des Cookies aus dem abschließenden ACK
  4. Das Warten einer maximalen Segmentlebensdauer nach dem SYN
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Empfänger erwartet Byte 16001. Von vier Segmenten mit je 600 Byte ab 16001, 16601, 17201 und 17801 gehen das erste und das dritte verloren. Das zweite und das vierte kommen an und werden gepuffert; nur zwei Duplikatquittungen erreichen den Sender. Bei der Zeitüberschreitung wird das erste erneut übertragen und kommt an. Welches ACK folgt und welche Lücke bleibt?
  1. ACK 18401; keine Lücke bleibt.
  2. ACK 17201; die Lücke ab 17201 bleibt.
  3. ACK 16601; beide späteren Segmente müssen erneut gesendet werden.
  4. ACK 17801; die Lücke ab 17801 bleibt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe

Schlüsselbegriffe

75 Schlüsselbegriffe, jeweils mit Definition

A

Alternating-Bit-Protokoll
Das Alternating-Bit-Protokoll verwendet die Sequenznummern 0 und 1 zusammen mit Stop-and-Wait, Quittungen und einem Zeitgeber, um Fehler und Verluste zu behandeln.
Nach einem verlorenen ACK ermöglicht eine wiederholte Paketnummer dem Empfänger, die doppelte Auslieferung derselben Daten zu vermeiden.
Anfangssequenznummer
Eine Anfangssequenznummer ist die von einem Endpunkt gewählte TCP-Startnummer, die sein SYN vor Beginn der Anwendungsdaten trägt.
Wenn SYN die Nummer 27000 verwendet, verwendet das erste Anwendungsbyte normalerweise die Sequenznummer 27001.
Automatische Wiederholungsanforderung
Die automatische Wiederholungsanforderung ist ein Verfahren zur Wiederherstellung bei zuverlässiger Übertragung, das Fehlererkennung, Rückmeldung des Empfängers und erneute Übertragungen kombiniert.
Nachdem ein NAK eine Beschädigung gemeldet hat, verwendet der Sender seine gespeicherte Paketkopie für eine erneute Übertragung.

B

Bandbreiten-Verzögerungs-Produkt
Das Bandbreiten-Verzögerungs-Produkt ist die Verbindungs- oder Pfadrate multipliziert mit der Umlaufzeit und schätzt die Datenmenge unterwegs, die zur Aufrechterhaltung dieser Rate nötig ist.
Ein Pfad mit 100 Mbit/s und 0,1 s RTT braucht etwa 10 Millionen Bit oder 1,25 MB unterwegs, um ausgelastet zu bleiben.
Best-Effort-Übertragung
Eine Best-Effort-Übertragung versucht, Daten zu übertragen, ohne ihre Ankunft, Reihenfolge, Unversehrtheit, Verzögerung oder einen Mindestdurchsatz zu garantieren.
TCP kann ein verlorenes Segment wiederherstellen, obwohl der zugrunde liegende IP-Dienst weiterhin nach dem Best-Effort-Prinzip arbeitet.
Bytestrom
Ein Bytestrom ist eine geordnete Folge von Bytes ohne eingebaute Anwendungsnachrichtengrenzen, wie TCP sie an seinen Empfänger ausliefert.
Ein Lesevorgang kann Bytes aus mehreren früheren Schreibvorgängen zurückgeben, sodass die Anwendung ihre eigene Nachrichtenabgrenzung prüft.

D

Datenoffset
Der TCP-Datenoffset gibt die gesamte TCP-Headerlänge in 32-Bit-Wörtern an und zeigt, wo die Anwendungsnutzlast beginnt.
Ein Datenoffset von 6 ergibt einen Header mit 24 Byte, der vier Byte über den festen TCP-Header hinaus enthält.
Demultiplexen
Beim Demultiplexen wird für ein eintreffendes Transportsegment anhand des Protokolls und der Endpunktinformationen der empfangende Anwendungssocket ausgewählt.
Der Host gibt eine DNS-Antwort an den anfragenden Socket weiter, statt sie in den Datenstrom eines Browsers einzufügen.
DevRTT
DevRTT ist ein geglättetes Maß dafür, wie weit aktuelle RTT-Messwerte von der vorherigen Schätzung abweichen; es dient zur Festlegung des Sicherheitsabstands für das Zeitlimit.
Eine schwankende Pfadverzögerung erhöht den Sicherheitsabstand für die Abweichung, selbst wenn sich die durchschnittliche RTT des Pfades nur geringfügig ändert.
Drei-Wege-Handshake
Der Drei-Wege-Handshake ist der SYN-, SYN-ACK- und ACK-Austausch von TCP, der den Zustand der Endpunkte aufbaut und beide Anfangssequenznummern bestätigt.
Das abschließende ACK bestätigt das SYN des Servers und kann zugleich die ersten Anwendungsdaten des Clients tragen.
Duplikatquittung
Eine Duplikatquittung wiederholt eine bestehende kumulative Quittung, ohne neue Bytes zu bestätigen, häufig weil spätere Daten hinter einer Lücke angekommen sind.
Drei entsprechende Duplikatquittungen können den Ersatz eines fehlenden Segments auslösen, bevor dessen Zeitgeber abläuft.

E

Einzelquittung
Eine Einzelquittung bestätigt ein bestimmtes Paket, ohne zugleich alle früheren Pakete in der Reihenfolge zu bestätigen.
Der Empfang von SR-ACK 22 teilt dem Sender nicht mit, ob Paket 21 angekommen ist oder noch ersetzt werden muss.
Empfangsfenster
Ein Empfangsfenster bei Selective Repeat ist der Bereich von Sequenznummern, die aktuell für neue Daten zulässig sind, beginnend an der Basis für die Auslieferung.
Ein Paket hinter einer Lücke kann angenommen werden, wenn seine Nummer innerhalb des aktuellen SR-Empfangsfensters liegt.
Empfangsfenster
Das Empfangsfenster ist die vom Empfänger angekündigte Kapazität für ausstehende TCP-Daten; es ändert sich, wenn Daten eintreffen und die Anwendung gespeicherte Daten liest.
Beträgt das angekündigte Fenster 10000 Byte und stehen bereits 4000 aus, passen nur noch 6000 hinein.
Ende-zu-Ende-Prinzip
Nach dem Ende-zu-Ende-Prinzip werden Prüfungen einer benötigten Eigenschaft des gesamten Pfades an den Endpunkten vorgenommen, die überprüfen können, ob diese Eigenschaft erfüllt ist.
Eine Transportprüfsumme prüft die empfangenen Daten auch dann, wenn einzelne Verbindungen eigene Fehlerprüfungen haben.
Endlicher Automat
Ein endlicher Automat beschreibt ein System durch einen aktuellen Zustand und ereignisgesteuerte Übergänge, die die auszuführenden Aktionen festlegen.
Ein Sender, der auf ACK 1 wartet, behandelt ein passendes ACK anders als eine Rückmeldung mit der falschen Nummer.
Ephemerer Port
Ein ephemerer Port ist ein vorübergehend genutzter lokaler Port, der üblicherweise vom Betriebssystem für die Netzwerkkommunikation eines Clients ausgewählt wird.
Die Anfrage des Clients verwendet den vorübergehenden Quellport 55120, und die Antwort verwendet diesen Wert als Zielport.
EstimatedRTT
EstimatedRTT ist die geglättete TCP-Schätzung der Umlaufzeit, die durch Gewichtung der alten Schätzung und jeder neuen gültigen Messung aktualisiert wird.
Mit dem Gewicht 1/8 für einen neuen Messwert verändert ein verzögertes ACK die Schätzung weniger, als wenn es sie vollständig ersetzen würde.
Exponentielles Backoff
Exponentielles Backoff verdoppelt nach Ablauf das aktuelle Wiederholungszeitlimit und vergrößert so die Wartezeit zwischen wiederholten fehlgeschlagenen Versuchen.
Aufeinanderfolgende Zeitüberschreitungen können ein Warteintervall von 1 s auf 2 s und dann auf 4 s erhöhen.

F

Fast Retransmit
Fast Retransmit sendet das bei TCP als fehlend vermutete Segment im grundlegenden Algorithmus nach drei Duplikatquittungen erneut, ohne auf eine Zeitüberschreitung zu warten.
Spätere Segmente, die hinter einer Lücke ankommen, liefern Rückmeldungen, mit denen der Sender früher handeln kann als beim Ablauf seines Zeitgebers.
Fensterskalierung
Die Fensterskalierung multipliziert spätere TCP-Fensterfelder mit einer beim Aufbau ausgehandelten Zweierpotenz und erlaubt Empfangsfenster über 65535 Byte.
Eine Skalierungsverschiebung um 3 interpretiert einen späteren Feldwert von 12000 als angekündigtes Fenster von 96000 Byte.
Flusskontrolle
Flusskontrolle begrenzt die ausstehenden Daten eines Senders entsprechend dem verfügbaren Pufferplatz des Empfängers und schützt so eine langsam lesende Anwendung.
Ein Empfänger mit vollem Puffer kann ein Nullfenster ankündigen, selbst wenn der Netzwerkpfad freie Kapazität hat.

G

Go-Back-N
Go-Back-N ist ein Pipelining-Protokoll zur zuverlässigen Übertragung mit kumulativen ACKs, einem Zeitgeber für das älteste Paket und einem Empfänger, der nur Pakete in der richtigen Reihenfolge annimmt.
Ein fehlendes Paket führt dazu, dass später außerhalb der Reihenfolge eintreffende Pakete verworfen und nach einer Zeitüberschreitung erneut gesendet werden.

H

Halbseitiger Verbindungsabbau
Ein halbseitiger Verbindungsabbau beendet eine TCP-Senderichtung mit FIN, während in der anderen Richtung der Verbindung weiter Daten fließen können.
Ein Client kann das Senden einer Anfrage beenden und dennoch die verbleibenden Antwortbytes des Servers weiter empfangen.
Head-of-Line-Blocking
Head-of-Line-Blocking in einem TCP-Datenstrom tritt auf, wenn fehlende frühere Bytes die Auslieferung späterer, bereits angekommener Bytes verzögern.
Ein Empfänger kann spätere Audiodaten zurückhalten, während TCP auf Ersatzbytes aus einem früheren Segment wartet.
Huckepackverfahren
Beim Huckepackverfahren werden Quittungsinformationen für empfangene Daten in einem TCP-Segment mitgeführt, das zugleich Daten in der Gegenrichtung sendet.
Die Antwort eines Servers kann die Anfrage quittieren und zugleich seine eigenen unabhängig nummerierten Bytes enthalten.

I

Internet-Prüfsumme
Die Internet-Prüfsumme ist das bitweise Komplement einer Einerkomplementsumme von 16-Bit-Wörtern nach zyklischem Übertrag und dient zur Erkennung von Übertragungsfehlern.
Ein empfangender Host bezieht die Prüfsumme in die Summe mit zyklischem Übertrag ein und prüft, ob das Ergebnis nur aus Einsen besteht.

K

Kapselung
Bei der Kapselung wird die Dateneinheit einer Schicht in die Einheit einer anderen Schicht verpackt und um einen neuen Header mit den Übertragungsinformationen dieser Schicht ergänzt.
IP kapselt ein Transportsegment, indem es den IP-Header ergänzt, der für die Zustellung an den Zielhost verwendet wird.
Karn-Algorithmus
Der Karn-Algorithmus schließt mehrdeutige RTT-Messungen aus erneut übertragenen Daten aus, sofern nicht Informationen wie Zeitstempel die Übertragung identifizieren.
Ein ACK nach einem erneuten Versuch könnte sich auf die ursprüngliche Kopie beziehen, sodass sein Ankunftszeitpunkt allein keinen neuen Messwert liefert.
Kumulative Quittung
Eine kumulative Quittung bestätigt einen vollständigen lückenlosen Anfangsbereich empfangener Daten, sodass ein ACK mehrere frühere Übertragungen abdecken kann.
Ein späteres kumulatives ACK kann den Verlust eines vorherigen ACK folgenlos machen, wenn es vor der Zeitüberschreitung eintrifft.

L

Logische Kommunikation
Logische Kommunikation ermöglicht gleichrangigen Prozessen die Interaktion, als wären sie direkt verbunden, während tiefere Schichten ihre Daten über ein Netz übertragen.
Zwei Anwendungen auf verschiedenen Hosts nutzen Sockets, ohne jeden Router und jede Verbindung auf dem Pfad zwischen ihnen zu verwalten.

M

Maximale Segmentgröße
Die maximale Segmentgröße ist die größte für TCP-Segmente angekündigte Nutzlast an Anwendungsdaten ohne Transport- und Netzwerkheader.
Ein IPv4-Datagramm mit 1500 Byte und zwei Headern mit je 20 Byte lässt 1460 Byte für Anwendungsdaten.
Maximale Segmentlebensdauer
Die maximale Segmentlebensdauer ist eine obere Lebensdauer, mit der abgeschätzt wird, wie lange ein TCP-Segment vor seinem Verfall im Netz bleiben kann.
TIME_WAIT verwendet das Doppelte der MSL, damit alter Verbindungsverkehr verfallen und das letzte ACK wiederholt werden kann.
Multiplexen
Beim Multiplexen werden ausgehende Daten mehrerer Anwendungssockets gesammelt und um Transportinformationen ergänzt, sodass sich der Datenverkehr das Netz teilen kann.
Ein Host sendet Browser- und E-Mail-Verkehr über dieselbe Schnittstelle mit unterschiedlichen Portinformationen.

N

Nachrichtengrenze
Eine Nachrichtengrenze trennt eine Anwendungsnachricht von einer anderen; UDP erhält diese Grenzen, während TCP einen Bytestrom ohne eingebaute Nachrichtenabgrenzung überträgt.
Zwei UDP-Sendevorgänge erzeugen zwei Nachrichten, sodass der Empfänger sie nicht zu einer einzigen UDP-Nachricht zusammenfasst.
Nagle-Algorithmus
Der Nagle-Algorithmus fasst kleine Schreibvorgänge des Senders zusammen, solange frühere Daten unquittiert sind oder bis genügend gepufferte Daten ein volles Segment bilden können.
Eine Folge von Schreibvorgängen mit je einem Byte kann gesammelt werden, statt für jeden ein separates Segment mit hohem Headeranteil zu senden.
Negative Quittung
Eine negative Quittung ist eine Rückmeldung, dass Daten nicht korrekt empfangen wurden und eine erneute Übertragung benötigt wird.
Ein Stop-and-Wait-Entwurf, der nur Bitfehler behandelt, sendet ein NAK, nachdem seine Prüfsumme ein beschädigtes Paket erkannt hat.
Nullfenstersonde
Eine Nullfenstersonde ist eine kleine Übertragung des Senders, die das aktuelle Fenster des Empfängers abfragt, während das gewöhnliche Senden neuer Daten pausiert.
Durch eine Sonde kann ein Sender wieder verfügbaren Platz erkennen, falls die frühere Fensteraktualisierung des Empfängers verloren ging.

P

PAWS
PAWS verwendet TCP-Zeitstempel, um veraltete Segmente zurückzuweisen, wenn wiederverwendete Bytenummern allein aktuell erscheinen könnten.
Eine schnelle Verbindung kann ihre 32-Bit-Bytenummern durchlaufen, bevor eine alte verzögerte Kopie verschwunden ist.
Pipelining
Pipelining erlaubt, dass mehrere Datenpakete gleichzeitig unquittiert bleiben, und nutzt die Verbindung, während frühere Pakete auf Rückmeldung warten.
Ein Sender kann ein zweites Paket abschicken, bevor das ACK des ersten Pakets seine Umlaufzeit abgeschlossen hat.
Portnummer
Eine Portnummer ist eine 16 Bit lange Transportkennung, die bei der Auswahl eines Anwendungsendpunkts auf einem Host hilft; TCP und UDP haben getrennte Portnummernräume.
Ein DNS-Dienst kann Anfragen an UDP-Port 53 empfangen und zugleich an Port 53 auf TCP-Verbindungen lauschen.
Pseudoheader
Ein Pseudoheader besteht aus IP-Adress- und Protokollinformationen, die in eine Transportprüfsumme einbezogen werden, ohne zu einem zusätzlichen Transportheader zu werden.
Die UDP-Prüfsumme umfasst neben UDP-Header und Daten auch Informationen zur Zieladressierung.
Pufferung außerhalb der Reihenfolge empfangener Daten
Bei der Pufferung außerhalb der Reihenfolge empfangener Daten werden gültige Daten hinter einer Lücke gespeichert, bis fehlende frühere Daten eintreffen und die geordnete Auslieferung fortgesetzt werden kann.
Sobald Paket 4 die Lücke füllt, können die gepufferten Pakete 5 und 6 ohne erneute Übertragung ausgeliefert werden.

Q

QUIC
QUIC ist ein sicheres Transportprotokoll auf Basis von UDP, das zuverlässige Datenströme und Überlastkontrolle bietet und HTTP/3-Verkehr überträgt.
Eine Webverbindung mit HTTP/3 erhält zuverlässige Übertragung durch QUIC, obwohl UDP selbst keine Wiederherstellung bietet.
Quittung
Eine Quittung ist eine Rückmeldung des Empfängers, die den Datenempfang bestätigt; ihre Bedeutung kann je nach Protokoll individuell oder kumulativ sein.
SR-ACK 14 bestätigt nur Paket 14, während GBN-ACK 14 auch alle vorangehenden Pakete bestätigt.
Quittungsnummer
Eine TCP-Quittungsnummer bezeichnet das nächste vom Kommunikationspartner erwartete Byte und bestätigt alle Bytes davor im lückenlosen Datenstrom.
ACK 4001 bestätigt Bytes bis einschließlich 4000, selbst wenn der Empfänger auch Daten hinter einer späteren Lücke gepuffert hat.

S

SampleRTT
SampleRTT ist ein gemessenes Intervall vom Senden von Daten bis zum Empfang eines ACK, das diese abdeckt, sofern die zeitliche Zuordnung eindeutig ist.
Ohne Zeitstempel kann ein ACK für erneut übertragene Daten nicht erkennen lassen, welche Kopie die Antwort ausgelöst hat.
Schiebefenster
Ein Schiebefenster ist ein beweglicher Bereich von Sequenznummern, der begrenzt, welche Pakete zu einem bestimmten Zeitpunkt ausstehen oder angenommen werden dürfen.
Ein GBN-ACK, das die Basis verschiebt, gibt am rechten Rand eine Position für ein weiteres neues Paket frei.
Selective Repeat
Selective Repeat ist ein Protokoll zur zuverlässigen Übertragung mit Einzelquittungen, logischen Zeitgebern pro Paket und Pufferung außerhalb der Reihenfolge beim Empfänger.
Läuft nur der Zeitgeber für Paket 7 ab, kann der Sender 7 ersetzen, ohne die erfolgreich quittierten Pakete erneut zu senden.
Selektive Quittung
Eine selektive Quittung ist eine TCP-Option, die empfangene Byteblöcke hinter einer Lücke meldet und damit die kumulative Quittungsgrenze ergänzt.
SACK kann zeigen, dass zwei spätere Blöcke bereits gepuffert sind, während ein dazwischenliegender Bytebereich noch wiederhergestellt werden muss.
Sendefensterbasis
Die Sendefensterbasis markiert die ältesten unquittierten Daten am Anfang eines Sendefensters und begrenzt, wie weit neue Übertragungen reichen dürfen.
Bei GBN verschiebt der Empfang von ACK 19 die Basis auf 20 und kann Platz für weitere Pakete schaffen.
Senderauslastung
Die Senderauslastung ist der Anteil der verstrichenen Zeit, in dem ein Sender aktiv Paketbits auf seine ausgehende Verbindung überträgt.
Eine Auslastung von 0,1 bedeutet, dass der Sender während eines Zehntels der gemessenen Zeit überträgt und den Rest wartet.
Sequenznummer
Die Sequenznummer eines TCP-Datensegments identifiziert dessen erstes Datenbyte im Datenstrom dieser Richtung; die Rechnung erfolgt modulo 2^32.
Auf ein Segment mit 700 Byte ab 2001 folgen neue Daten ab 2701, wenn kein Steuerflag dazwischenkommt.
Sequenznummernraum
Ein Sequenznummernraum ist die endliche Menge verfügbarer Paket- oder Bytekennungen, die nach Überschreiten des höchsten Werts zyklisch wiederverwendet werden.
Bei Paketnummern mit drei Bit folgt auf 6 die 7 und auf 7 der Wert 0.
Sequenznummernüberlauf
Beim Sequenznummernüberlauf wird nach dem höchsten Wert eines endlichen Sequenznummernraums wieder die niedrigste Nummer verwendet, sodass zyklische Vergleichsregeln nötig sind.
Nachdem TCP alle 2^32 Bytewerte verwendet hat, wiederholen sich die Nummern, obwohl die Verbindung weiterhin Daten übertragen kann.
Silly-Window-Syndrom
Das Silly-Window-Syndrom ist eine ineffiziente Übertragung in vielen winzigen TCP-Segmenten, die häufig durch sehr kleine Schreibvorgänge oder angekündigte Fenstervergrößerungen begünstigt wird.
Werden jeweils wenige neu freigegebene Bytes angekündigt, kann der Header-Overhead die Nutzdaten überwiegen.
Socket
Ein Socket ist eine Endpunktschnittstelle, über die ein Anwendungsprozess Daten an ein Netz sendet und aus dem Netz empfängt.
Ein TCP-Server behält einen lauschenden Socket, während angenommene Clients über Verbindungssockets kommunizieren.
Stop-and-Wait
Stop-and-Wait ist ein Übertragungsverfahren, bei dem der Sender nur ein Datenpaket ausstehen lässt und auf Bestätigung wartet, bevor er fortfährt.
Eine lange Umlaufzeit kann den Sender untätig lassen, selbst wenn seine Verbindung das Paket sehr schnell übertragen kann.
SYN-Cookie
Ein SYN-Cookie kodiert überprüfbare Verbindungsinformationen in der ISN eines Servers, sodass individueller Zustand nach einem gültigen abschließenden ACK angelegt werden kann.
Der Server prüft die zurückkehrende Quittung, bevor er Ressourcen für diese bestimmte Verbindung reserviert.
SYN-Flooding
SYN-Flooding ist ein Angriff, der viele Anfragen zum Verbindungsaufbau sendet, ohne deren Handshakes abzuschließen, und dadurch Serverressourcen verbraucht.
Eine Warteschlange unvollständiger Anfragen kann verhindern, dass ein Server Verbindungen legitimer Clients annimmt.

T

TCP
TCP ist ein verbindungsorientiertes Transportprotokoll, das einen zuverlässigen Vollduplex-Bytestrom in der richtigen Reihenfolge zwischen zwei Anwendungsendpunkten bietet.
Die Anwendung erhält einen geordneten Datenstrom, selbst wenn IP-Datagramme in anderer Reihenfolge angekommen sind.
TCP-Option
Eine TCP-Option ist eine variable Headerinformation, die den festen Header erweitert, etwa MSS, Fensterskalierung, Zeitstempel oder selektive Quittungen.
Eine Zeitstempeloption verlängert den Header und verringert dadurch den Platz für Nutzlast innerhalb eines IP-Datagramms fester Größe.
TCP-Reset
Ein TCP-Reset ist ein Segment mit gesetztem RST, das eine Verbindung ablehnt oder abrupt abbricht, statt einen geordneten FIN-Austausch abzuschließen.
Ein SYN an einen TCP-Port ohne lauschenden Socket erhält normalerweise einen Reset vom Zielhost.
TIME_WAIT
TIME_WAIT ist ein TCP-Abbauzustand, der Verbindungsinformationen vorhält, um das abschließende ACK zu wiederholen und alte Segmente verfallen zu lassen.
Geht das abschließende ACK verloren, kann der Endpunkt, der zuerst geschlossen hat, ein erneut übertragenes FIN des Kommunikationspartners noch beantworten.
Transportschicht
Die Transportschicht ermöglicht Anwendungsprozessen auf verschiedenen Hosts eine logische Kommunikation oberhalb des IP-Dienstes zwischen Hosts.
Ein Browser empfängt seine eigenen Antwortbytes über einen Socket, während eine andere Anwendung denselben Host nutzt.
Transportsegment
Ein Transportsegment ist eine Einheit der Transportschicht, die einen Transportheader und Anwendungsdaten enthält und in einem IP-Datagramm übertragen wird.
Ein TCP-Sender ergänzt einen Abschnitt von Dateibytes um einen Header, bevor er das Segment an die IP-Schicht übergibt.

U

UDP
UDP ist ein verbindungsloses Transportprotokoll, das separate Nachrichten mit portbasierter Zustellung und einem Feld für die Internet-Prüfsumme überträgt.
Ein DNS-Client kann seine erste UDP-Anfrage senden, ohne zuvor Nachrichten zum Transportverbindungsaufbau auszutauschen.

V

Verzögerte Quittung
Eine verzögerte Quittung verschiebt die Bestätigung von TCP-Daten in der richtigen Reihenfolge kurz, damit Rückmeldungen zusammengefasst werden können; dabei gelten Zeit- und Häufigkeitsgrenzen.
Ein zweites Segment voller Größe in der richtigen Reihenfolge löst ein kumulatives ACK aus, statt eine weitere lange Wartezeit zu beginnen.
Vierertupel
Das Vierertupel einer TCP-Verbindung ist die Kombination aus Quell-IP-Adresse, Quellport, Ziel-IP-Adresse und Zielport.
Zwei Verbindungen zu einem Webserver bleiben unterscheidbar, wenn ihre Clients unterschiedliche Quelladressen verwenden.
Vollduplexverbindung
Eine Vollduplexverbindung erlaubt beiden Endpunkten, gleichzeitig zu übertragen, und führt in jeder Richtung eine unabhängige Nummerierung des Datenstroms.
Ein Server kann Antwortbytes senden, während der Client auf derselben Verbindung noch weitere Daten sendet.
Vorzeitige Zeitüberschreitung
Eine vorzeitige Zeitüberschreitung tritt auf, wenn ein Sender erneut sendet, bevor die Bestätigung einer erfolgreichen ursprünglichen Übertragung Zeit hatte zurückzukehren.
Der Empfänger verwirft die Daten der unnötigen Ersatzkopie, quittiert sie aber erneut, damit der Sender fortfahren kann.

W

Wiedergabefrist
Eine Wiedergabefrist ist der Zeitpunkt, bis zu dem ein empfangener Audio- oder Videoabschnitt für seine geplante Wiedergabe verfügbar sein muss.
Ein fehlender Audioabschnitt, der nach seinem Wiedergabezeitpunkt wiederhergestellt wird, kann die bereits gehörte Lücke nicht mehr füllen.
Wiederholungszeitlimit
Ein Wiederholungszeitlimit ist ein Warteintervall, dessen Ablauf eine erneute Übertragung auslöst, wenn die erwartete Bestätigung nicht eingetroffen ist.
Ein verlorenes Datenpaket erzeugt keine Rückmeldung, aber die Zeitüberschreitung gibt dem Sender trotzdem einen Grund für einen erneuten Versuch.

Z

Zuverlässige Datenübertragung
Zuverlässige Datenübertragung liefert korrekte Anwendungsdaten in der richtigen Reihenfolge ohne Verluste oder Duplikate und nutzt dazu Wiederherstellung über einem unzuverlässigen Kanal.
Ein Ersatzpaket behebt eine fehlgeschlagene Übertragung, ohne eine zweite Kopie in den ausgelieferten Daten zu erzeugen.
Zyklischer Übertrag
Beim zyklischen Übertrag wird bei der Einerkomplementaddition jeder Übertrag über das höchstwertige Bit eines Wortes hinaus zu dessen niederwertigen Stellen zurückaddiert.
Die Addition von FFFF und 0001 ergibt vor dem Zurückführen 10000 und nach dem Addieren des Übertrags 0001.

Über diese Einheit

Von StudeliFehler melden

Erstelle deine eigenen Lernmaterialien

Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.

Jetzt starten