Angenommen, ein Büro von Personen möchte HTTP-Downloads auf maximal 40% der Bandbreite ihrer Internetverbindungsgeschwindigkeit beschränken, damit kein anderer Datenverkehr blockiert wird.
Wir sagen "es wird in Ihrer Firewall nicht unterstützt" und sie sagen die unvermeidliche Zeile "Früher konnten wir dies mit unserem Netgear / DLink / DrayTek tun".
Wenn man darüber nachdenkt, ist ein Download wie folgt:
HTTP GET request
Server sends file data as TCP packets
Client acknowledges receipt of TCP packets
Repeat until download finished.
Die Geschwindigkeit hängt davon ab, wie schnell der Server Daten an Sie sendet und wie schnell Sie diese bestätigen.
Um die Download-Geschwindigkeit zu begrenzen, haben Sie zwei Möglichkeiten:
1) Weisen Sie den Server an, Daten langsamer an Sie zu senden - und ich glaube, es gibt keine Protokollfunktion, die dies in TCP oder HTTP anfordert.
2) Bestätigen Sie Pakete langsamer, indem Sie die Upload-Geschwindigkeit begrenzen und die Upload-Geschwindigkeit verringern.
Wie machen Geräte diese Einschränkung? Gibt es einen Standardweg?
quelle
Antworten:
TCP selbst implementiert die Überlastungskontrolle.
Diese Ratenbegrenzer werfen einfach Pakete über das Limit hinaus. TCP kümmert sich darum und stellt sicher, dass alle Pakete in der richtigen Reihenfolge ankommen. Der Client bestätigt die verworfenen Pakete nicht und sie werden vom Server erneut gesendet.
Der TCP-Stack des Servers sendet die Pakete erneut und wählt auch die Senderate ein wenig zurück, da er feststellt, dass zwischen ihm und dem Client eine Überlastung besteht. Es wird wieder schneller, bis der Ratenbegrenzer wieder Pakete verwirft, und so weiter.
quelle
Die beste Beschreibung, die ich je gehört habe und die Sinn für die inhärente Drosselungsmethode von TCP machte, stammt aus einem kürzlich veröffentlichten Security Now-Podcast . Um Steve Gibson zu zitieren:
quelle
3) Ihr Router / Firewall-Gerät speichert eingehende Daten in einem QoS-Bucket und leert diesen Bucket nur mit der von Ihnen angeforderten Rate. Eingehende Daten passen sich dieser Geschwindigkeit an, da Computer im Inneren den Empfang nur mit dieser Geschwindigkeit bestätigen. Außerdem funktioniert das gelegentlich (absichtlich) verworfene Paket sehr gut, um eine Verbindung zu verlangsamen.
Wenn Sie versuchen, ein Gerät zu finden, das dies handhabt, suchen Sie in der Konfiguration / Dokumentation nach QoS (Quality of Service). Hierfür eignen sich auch Linux- (oder BSD-) Boxen.
quelle
Sie verwenden eine Firewall oder ein Gerät, das die QoS-Begrenzung (Quality of Service) unterstützt.
Sie können ein Linux-System als Office-Gateway erstellen und dazu Traffic Shaping verwenden. Es müssen nur mehrere Netzwerkkarten installiert werden, und dann zeigt jeder Computer auf ein Gateway.
Als Bonus können Sie einen Proxyserver darauf konfigurieren, um den Datenverkehr zu vereinfachen. So etwas wie Tintenfisch. Möglicherweise gibt es schlüsselfertige Routing-Appliance-Distributionen, die dies ebenfalls können.
quelle
Das HTTP-Protokoll bietet keine Möglichkeit, die verwendete Bandbreite zu begrenzen, und selbst wenn dies der Fall wäre, wäre dies eine clientseitige Einstellung, auf die Netzwerkadministratoren keine Kontrolle haben könnten.
Die Bandbreitenbegrenzung (auch als "Quality of Service" bezeichnet) wird normalerweise auf Routern / Firewalls verwaltet, die den gesamten eingehenden und ausgehenden Verkehr zu / von einem Netzwerk verarbeiten. Mit denen, die dies unterstützen, können Sie normalerweise Richtlinien konfigurieren, z. B. "Jeder einzelne Client-Computer darf höchstens 10% der gesamten verfügbaren Bandbreite nutzen" oder "SMTP-Priorität vor FTP geben, damit E-Mails auch dann fließen können, wenn jemand einen starken Download ausführt." ".
Wie genau dies erreicht wird, hängt vom verwendeten Router / der verwendeten Firewall ab. Der einfachste Weg besteht jedoch darin, Pakete einfach wegzuwerfen, die die konfigurierten Grenzwerte überschreiten. TCP stellt sicher, dass sie erneut übertragen werden, und kann schließlich den Engpass überwinden.
quelle