Ich habe einige Nachforschungen über Nagles Algorithmus aus Leerlauf-Neugier durchgeführt. Ich verstehe das grundlegende Konzept dahinter (TCP-Pakete enthalten eine erhebliche Menge an Overhead, vor allem, wenn es um kleine Nutzlasten geht), aber ich bin mir nicht sicher, ob ich die Implementierung durchschaue.Unklar auf Nagles Algorithmus
Ich las this article auf Wikipedia, aber ich bin immer noch unklar, wie es funktioniert. Nehmen wir das Beispiel einer Telnet-Verbindung. Die Verbindung ist hergestellt und ich fange an zu tippen. Nehmen wir an, ich tippe drei Zeichen (zB cat
) und drücke Return. Jetzt reden wir cat\r\n
das ist immer noch nur 5 Bytes. Ich würde denken, das würde nicht gesendet werden, bis wir genug Bytes zum Senden anstehen - und doch wird es sofort gesendet (aus einer Benutzerperspektive), da cat
sofort nach Rückkehr ausgeführt wird.
Ich denke, ich habe ein grundlegendes Missverständnis hier auf, wie der Algorithmus funktioniert, speziell in Bezug auf das Bit, wo "wenn unbestätigte Daten noch in der Pipe sind, Enqueue, sonst sofort senden."
Der Artikel spricht von Telnet-Sitzungen, die jedoch ein Problem sind, also würde es sofort senden. – cloudhead