Ein Überblick über den Nagle-Algorithmus für die TCP-Netzwerkkommunikation

Inhaltsverzeichnis:

Ein Überblick über den Nagle-Algorithmus für die TCP-Netzwerkkommunikation
Ein Überblick über den Nagle-Algorithmus für die TCP-Netzwerkkommunikation
Anonim

Der Nagle-Algorithmus, benannt nach dem Ingenieur John Nagle, wurde entwickelt, um Netzwerkstaus zu reduzieren, die durch kleine Paketprobleme bei TCP-Anwendungen verursacht werden. UNIX-Implementierungen begannen mit der Verwendung des Nagle-Algorithmus in den 1980er Jahren, und er ist bis heute eine Standardfunktion von TCP.

Wie der Nagle-Algorithmus funktioniert

Der Nagle-Algorithmus verarbeitet Daten auf der Sendeseite von TCP-Anwendungen durch eine Methode namens Nagling. Es erkennt kleine Nachrichten und sammelt diese Nachrichten in größeren TCP-Paketen, bevor es Daten über die Leitung sendet. Dieses Verfahren vermeidet die Generierung unnötig vieler kleiner Pakete.

Die technische Spezifikation für den Nagle-Algorithmus wurde 1984 als RFC 896 veröffentlicht. Die Entscheidungen darüber, wie viele Daten angesammelt werden und wie lange zwischen den Sendevorgängen gewartet werden soll, sind entscheidend für seine Gesamtleistung.

Die Vorteile von Nagling

Nagling kann die Bandbreite einer Netzwerkverbindung auf Kosten von Verzögerungen oder Latenzen effizient nutzen. Ein in RFC 896 beschriebenes Beispiel veranschaulicht die potenziellen Bandbreitenvorteile und den Grund für seine Erstellung:

  • Wenn eine TCP-Anwendung, die Tastatureingaben abfängt, jedes eingegebene Zeichen an einen Empfänger übermitteln möchte, kann sie eine Reihe von Nachrichten generieren, die jeweils 1 Byte Daten enth alten.
  • Bevor diese Nachrichten über das Netzwerk gesendet werden können, muss jede mit TCP-Header-Informationen verpackt werden, wie es von TCP/IP verlangt wird. Jeder Header hat eine Größe zwischen 20 und 60 Byte.
  • Ohne zu nörgeln würde diese Beispielanwendung Netzwerknachrichten generieren, die zu 95 Prozent oder mehr aus Header-Informationen (mindestens 20 von 21 Bytes) und 5 Prozent oder weniger tatsächlichen Daten von der Tastatur des Absenders bestehen. Mit dem Nagle-Algorithmus konnten die gleichen Daten mit weniger Nachrichten übermittelt werden, was zu erheblichen Bandbreiteneinsparungen führte.

Anwendungen steuern ihre Verwendung des Nagle-Algorithmus mit der Socket-Programmieroption TCP_NODELA. Windows-, Linux- und Java-Systeme aktivieren Nagle normalerweise standardmäßig. Daher müssen Anwendungen, die für diese Umgebungen geschrieben wurden, TCP_NODELAY angeben, um den Algorithmus auszusch alten.

Image
Image

Einschränkungen

Anwendungen, die eine schnelle Netzwerkantwort erfordern, wie Videoanrufe und Online-Spiele, funktionieren möglicherweise nicht gut, wenn Nagle aktiviert ist. Die Verzögerungen, die verursacht werden, während der Algorithmus zusätzliche Zeit benötigt, um kleinere Datenblöcke zusammenzustellen, können auf einem Bildschirm oder in einem digitalen Audiostream eine merkliche Verzögerung auslösen. Solche Anwendungen deaktivieren normalerweise Nagle.

Dieser Algorithmus wurde ursprünglich zu einer Zeit entwickelt, als Computernetzwerke weniger Bandbreite unterstützten als heute. Das oben beschriebene Beispiel basierte auf den Erfahrungen von John Nagle bei Ford Aerospace in den frühen 1980er Jahren, wo nagende Kompromisse bei Fords langsamem, stark ausgelastetem Langstreckennetz sinnvoll waren. Es gibt heute immer weniger Situationen, in denen Netzwerkanwendungen von seinem Algorithmus profitieren können.

Der Nagle-Algorithmus ist nur mit TCP verwendbar. Andere Protokolle wie UDP unterstützen dies nicht.

Empfohlen: