<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Nagle-Algorithmus</id>
	<title>Nagle-Algorithmus - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Nagle-Algorithmus"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Nagle-Algorithmus&amp;action=history"/>
	<updated>2026-05-28T08:00:41Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Nagle-Algorithmus&amp;diff=17964&amp;oldid=prev</id>
		<title>imported&gt;Mika from outer space: /* growthexperiments-addlink-summary-summary:2|0|0 */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Nagle-Algorithmus&amp;diff=17964&amp;oldid=prev"/>
		<updated>2025-04-14T20:24:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:2|0|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Der &amp;#039;&amp;#039;&amp;#039;Nagle-Algorithmus&amp;#039;&amp;#039;&amp;#039; (auch: &amp;#039;&amp;#039;Nagles Algorithmus&amp;#039;&amp;#039;) ist ein [[Algorithmus]] zur Verbesserung der Effizienz bei der Datenübertragung des [[Transmission Control Protocol]]s (TCP). Dies wird erreicht, indem die Anzahl kleiner [[Datenpaket]]e reduziert wird. Der Algorithmus ist nach John Nagle benannt, der ihn im Jahr 1984 im [[Request for Comments|RFC]] 896 beschrieb.&amp;lt;ref name=&amp;quot;RFC896&amp;quot;&amp;gt;{{RFC-Internet |RFC=896 |Autor=John Nagle |Titel=Congestion Control in IP/TCP Internetworks |Datum=1984-01-06}}&amp;lt;/ref&amp;gt; Mit &amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;1122&amp;lt;/nowiki&amp;gt; wurde der Nagle-Algorithmus ein [[Internetstandard]] für den [[Transmission Control Protocol/Internet Protocol|TCP/IP]]-Protokollstapel.&amp;lt;ref name=&amp;quot;RFC1122&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hintergrund und Motivation ==&lt;br /&gt;
In den Anfängen der Entwicklung von [[Transmission Control Protocol/Internet Protocol|TCP/IP]]-Netzwerken waren die Datenübertragungsraten gering. John Nagle beschrieb ein potentielles Problem von TCP, das er Staukollaps nannte ({{enS|congestion collapse}}). In einem überlasteten [[Rechnernetz]] steigen die [[Paketumlaufzeit]]en, wodurch der [[Transmission Control Protocol#Retransmission Timer|Retransmission Timer]] von TCP ausgelöst werden kann, was zu einer Sendewiederholung von bereits gesendeten Paketen führt. Dadurch steigt die Last und die Paketumlaufzeit weiter, was zu weiteren Sendewiederholungen führt und den Zustand des Netzes verschlechtert.&amp;lt;ref name=&amp;quot;RFC896&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als einen der Problemfaktoren nannte Nagle zu viele kleine Datenpakete. Eine Anwendung, die ein Byte [[Nutzdaten]] über das Netz sendet, erzeugt durch den 40 Bytes langen [[Header]] von [[IPv4]] und TCP einen [[Overhead (EDV)|Overhead]] von 4000 %.&amp;lt;ref name=&amp;quot;RFC896&amp;quot; /&amp;gt; Überträgt die Anwendung viele kleine Datenpakete, wie es bei interaktiven Anwendungen üblich ist, führt dies zu einer ineffizienten Nutzung der verfügbaren Übertragungsrate.&amp;lt;ref&amp;gt;Fall und Stevens, 2011, Abschnitt 15.2, S. 592.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nagles Ziel war es, die Anzahl kleiner Datenpakete zu reduzieren, um die Übertragungseffizienz zu steigern. Sein Vorschlag war durch einen Ansatz im früheren [[TYMNET]] motiviert, bei dem der Sender die Anzahl Pakete pro Zeiteinheit limitierte, sodass mehrere kleine Pakete in einem größeren Paket konsolidiert werden konnten. Nagle schlug einen adaptiven Ansatz vor, bei dem sich die Senderate implizit aus der Paketumlaufzeit ergibt, ohne dass ein Zeitlimit implementiert werden muss.&amp;lt;ref name=&amp;quot;RFC896&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Der Nagle-Algorithmus fasst mehrere kleine [[Datenblock|Datenblöcke]] zusammen und überträgt diese konsolidiert in einem größeren Datenpaket. Dies wird erreicht, indem die zu sendenden Daten der [[Anwendungssoftware|Anwendung]] unter bestimmten Bedingungen in einem [[Puffer (Informatik)|Puffer]] zwischengespeichert werden. Der Algorithmus behandelt zu sendende Daten wie folgt:&amp;lt;ref name=&amp;quot;RFC1122&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wenn sich aktuell kein Datenpaket in Übertragung zum Kommunikationspartner befindet, sende die Daten sofort.&lt;br /&gt;
* Andernfalls, puffere die Daten bis entweder:&lt;br /&gt;
:* ein [[ACK (Signal)|ACK]]-Signal vom Kommunikationspartner empfangen wurde, das den Erhalt des zuletzt gesendeten Datenpakets bestätigt,&lt;br /&gt;
:* oder die Anzahl Bytes im Puffer der [[Maximum Segment Size]] entspricht, also die maximale mögliche Größe eines Datenpakets erreicht wurde.&lt;br /&gt;
&lt;br /&gt;
Die Funktionsweise des Nagle-Algorithmus kann anhand eines Beispiels veranschaulicht werden: Angenommen, eine Anwendung sendet mehrere kleine Datenblöcke nacheinander an einen Empfänger. Ohne den Nagle-Algorithmus würde jeder Datenblock jeweils in einem einzelnen Datenpaket ohne Verzögerung übertragen. Mit dem Nagle-Algorithmus wird das erste Paket sofort gesendet, die nachfolgenden Datenblöcke werden hingegen im Puffer zwischengespeichert. Sobald eine Empfangsbestätigung des ersten Pakets eintrifft, werden die zu dem Zeitpunkt gesammelten Datenblöcke in einem größeren Datenpaket konsolidiert über das Netzwerk gesendet.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
Durch die Zusammenfassung von Datenpaketen reduziert der Nagle-Algorithmus den Gesamt-Overhead, der durch die [[Header]] jedes Pakets entsteht, und optimiert somit die Nutzung der verfügbaren [[Datenübertragungsrate]] im Rechnernetz. Durch die verzögerte Übertragung erhöht der Nagle-Algorithmus allerdings die Übertragungszeit. Der Nagle-Algorithmus erzwingt ein [[Stop-and-Wait]]-Verhalten und stellt einen [[Trade-Off]] zwischen Übertragungsrate und Übertragungszeit dar.&amp;lt;ref&amp;gt;Fall und Stevens 2011, Abschnitt 15.4, S. 696.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Anwendungen, die eine geringe [[Verzögerung (Telekommunikation)|Latenz]] voraussetzen, stellt der Nagle-Algorithmus einen Nachteil dar. Dazu zählen beispielsweise interaktive [[Onlinespiel]]e, [[Videokonferenz]]en und andere [[Echtzeitkommunikation]], die eine geringe Latenz für ein flüssiges und interaktives [[User Experience|Nutzererlebnis]] benötigen.&amp;lt;ref name=&amp;quot;stevens-nodelay&amp;quot;&amp;gt;Fall und Stevens 2011, Abschnitt 15.4.2, S. 699 f.&amp;lt;/ref&amp;gt; Ein anderes Beispiel ist [[Terminalemulation]] per [[Telnet]] oder [[Secure Shell]], um die Reaktionszeit der Gegenseite auf Tastatureingaben oder bei Bildschirmausgaben zu verkürzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;1122&amp;lt;/nowiki&amp;gt; fordert, dass eine Anwendung den Nagle-Algorithmus bei Bedarf deaktivieren kann.&amp;lt;ref name=&amp;quot;RFC1122&amp;quot; /&amp;gt; [[Betriebssystem]]e bieten daher die Möglichkeit, den Nagle-Algorithmus pro TCP-Verbindung oder systemweit zu deaktivieren. Bei [[Socket (Software)|Sockets]] unter [[Portable Operating System Interface|POSIX]]-kompatiblen Betriebssystemen und bei [[Winsock]] unter [[Microsoft Windows|Windows]] kann der Nagle-Algorithmus mit der setsockopt-Option TCP_NODELAY deaktiviert werden.&amp;lt;ref name=&amp;quot;stevens-nodelay&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Kevin R. Fall, W. Richard Stevens&lt;br /&gt;
   |Titel=TCP/IP Illustrated&lt;br /&gt;
   |Reihe=Addison-Wesley professional computing series&lt;br /&gt;
   |Auflage=2.&lt;br /&gt;
   |Verlag=Pearson International&lt;br /&gt;
   |Datum=2011&lt;br /&gt;
   |ISBN=978-0-321-33631-6}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Andrew Tanenbaum, David Wetherall, Nick Feamster&lt;br /&gt;
   |Titel=Computer Networks&lt;br /&gt;
   |TitelErg=Global Edition.&lt;br /&gt;
   |Auflage=6.&lt;br /&gt;
   |Verlag=Pearson Education&lt;br /&gt;
   |Ort=Harlow UK&lt;br /&gt;
   |Datum=2021&lt;br /&gt;
   |ISBN=978-1-292-37406-2}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;RFC1122&amp;quot;&amp;gt;&lt;br /&gt;
{{RFC-Internet |RFC=1122 |Titel=Requirements for Internet Hosts – Communication Layers |Datum=1989-10}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Transmission Control Protocol]]&lt;br /&gt;
[[Kategorie:Internetstandard]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Mika from outer space</name></author>
	</entry>
</feed>