Kapitel 1. Grundlegendes zu Latenz und Bandbreite
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Geschwindigkeit ist ein Merkmal
Die Entstehung und das schnelle Wachstum der Branche für Web-Performance-Optimierung (WPO) in den letzten Jahren ist ein verräterisches Zeichen für die wachsende Bedeutung und Nachfrage nach Geschwindigkeit und schnelleren Nutzererlebnissen seitens der Nutzer. Dabei handelt es sich nicht einfach um ein psychologisches Bedürfnis nach Geschwindigkeit in unserer immer schneller werdenden und vernetzten Welt, sondern um eine Anforderung, die durch empirische Ergebnisse, gemessen an der Leistung vieler Online-Unternehmen, angetrieben wird:
-
Schnellere Websites führen zu einem besseren Engagement der Nutzer.
-
Schnellere Websites führen zu einer besseren Nutzerbindung.
-
Schnellere Websites führen zu höheren Umsätzen.
Einfach gesagt: Geschwindigkeit ist eine Eigenschaft. Und um sie zu erreichen, müssen wir die vielen Faktoren und grundlegenden Einschränkungen verstehen, die dabei eine Rolle spielen. In diesem Kapitel konzentrieren wir uns auf die beiden entscheidenden Komponenten, die die Leistung des gesamten Netzwerkverkehrs bestimmen: Latenz und Bandbreite(Abbildung 1-1).
- Latenz
-
Die Zeit vom Senden eines Pakets durch die Quelle bis zum Empfang durch das Ziel
- Bandbreite
-
Maximaler Durchsatz eines logischen oder physischen Kommunikationspfads
Mit einem besseren Verständnis dafür, wie Bandbreite und Latenz zusammenwirken, haben wir dann die Werkzeuge, um tiefer in die Interna und Leistungsmerkmale von TCP, UDP und allen darüber liegenden Anwendungsprotokollen einzutauchen.
Die vielen Komponenten der Latenz
Latenz ist die Zeit, die eine Nachricht oder ein Paket braucht, um vom Ausgangspunkt zum Zielort zu gelangen. Das ist eine einfache und nützliche Definition, aber sie verbirgt oft viele nützliche Informationen - jedes System enthält mehrere Quellen oder Komponenten, die zur Gesamtzeit beitragen, die eine Nachricht braucht, um zugestellt zu werden, und es ist wichtig zu verstehen, was diese Komponenten sind und was ihre Leistung bestimmt.
Schauen wir uns einige Komponenten eines typischen Routers im Internet genauer an, der für die Weiterleitung einer Nachricht zwischen dem Client und dem Server verantwortlich ist:
- Ausbreitungsverzögerung
-
Betrag der Zeit, die eine Nachricht braucht, um vom Sender zum Empfänger zu gelangen. Sie ist eine Funktion der Entfernung über die Geschwindigkeit, mit der sich das Signal ausbreitet.
- Übertragungsverzögerung
-
Betrag der Zeit, die benötigt wird, um alle Bits des Pakets in die Verbindung zu schieben, und die von der Länge des Pakets und der Datenrate der Verbindung abhängig ist.
- Verarbeitungsverzögerung
-
Betrag der Zeit, die benötigt wird, um den Paketkopf zu verarbeiten, auf Fehler auf Bitebene zu prüfen und das Ziel des Pakets zu bestimmen.
- Verzögerung in der Warteschlange
-
Anzahl der Zeit, die das Paket in der Warteschlange wartet, bis es bearbeitet werden kann.
Die Gesamtlatenzzeit zwischen dem Client und dem Server ist die Summe aller eben aufgeführten Verzögerungen. Die Ausbreitungszeit hängt von der Entfernung und dem Medium ab, durch das sich das Signal bewegt - wie wir sehen werden, liegt die Ausbreitungsgeschwindigkeit normalerweise innerhalb eines kleinen konstanten Faktors der Lichtgeschwindigkeit. Die Übertragungsverzögerung hingegen wird durch die verfügbare Datenrate der Übertragungsstrecke bestimmt und hat nichts mit der Entfernung zwischen dem Client und dem Server zu tun. Nehmen wir zum Beispiel an, wir wollen eine 10-MB-Datei über zwei Verbindungen übertragen: 1 Mbps und 100 Mbps. Es dauert 10 Sekunden, um die gesamte Datei über die 1-Mbps-Verbindung "auf den Draht" zu bringen, und nur 0,1 Sekunden über die 100-Mbps-Verbindung.
Hinweis
Datenübertragungsraten in Netzwerken werden normalerweise in Bits pro Sekunde (bps) gemessen, während Datenübertragungsraten für Nicht-Netzwerkgeräte normalerweise in Bytes pro Sekunde (Bps) angegeben werden. Dies ist eine häufige Quelle der Verwirrung, achte also genau auf die Einheiten.
Um zum Beispiel eine 10 Megabyte (MB) große Datei über eine 1Mbps-Verbindung zu übertragen, brauchen wir 80 Sekunden. 10 MB sind gleich 80 MB, weil jedes Byte aus 8 Bits besteht!
Sobald das Paket beim Router ankommt, muss der Router den Header des Pakets prüfen, um die ausgehende Route zu bestimmen, und eventuell weitere Prüfungen der Daten durchführen - auch das kostet Zeit. Ein Großteil dieser Logik wird heute in Hardware ausgeführt, sodass die Verzögerungen sehr gering sind, aber es gibt sie. Und wenn die Pakete schneller ankommen, als der Router sie verarbeiten kann, werden sie in einer Warteschlange zwischengespeichert. Die Zeit, die die Daten in der Warteschlange verbringen, wird als Warteschlangenverzögerung bezeichnet.
Jedes Paket, das das Netzwerk durchläuft, wird viele Male von jeder dieser Verzögerungen betroffen sein. Je weiter die Entfernung zwischen Quelle und Ziel ist, desto mehr Zeit benötigt es für die Übertragung. Je mehr zwischengeschaltete Router wir auf dem Weg treffen, desto höher sind die Verarbeitungs- und Übertragungsverzögerungen für jedes Paket. Und je höher die Verkehrslast auf dem Weg ist, desto höher ist die Wahrscheinlichkeit, dass unser Paket in einer Warteschlange steht und sich in einem oder mehreren Puffern verzögert.
Lichtgeschwindigkeit und Ausbreitungslatenz
Wie Einstein in seiner speziellen Relativitätstheorie dargelegt hat, ist die Lichtgeschwindigkeit die Höchstgeschwindigkeit, mit der sich Energie, Materie und Informationen bewegen können. Diese Beobachtung setzt der Ausbreitungszeit eines jeden Netzwerkpakets eine harte Grenze und einen Regulator.
Die gute Nachricht ist, dass die Lichtgeschwindigkeit hoch ist: 299.792.458 Meter pro Sekunde, oder 186.282 Meilen pro Sekunde. Allerdings - und es gibt immer ein Aber - ist das die Lichtgeschwindigkeit in einem Vakuum. Stattdessen reisen unsere Pakete durch ein Medium wie einen Kupferdraht oder ein Glasfaserkabel, wodurch das Signal verlangsamt wird(Tabelle 1-1). Dieses Verhältnis zwischen der Lichtgeschwindigkeit und der Geschwindigkeit, mit der sich das Paket in einem Material bewegt, wird als Brechungsindex des Materials bezeichnet. Je größer der Wert, desto langsamer bewegt sich das Licht in diesem Medium.
Der typische Brechungsindex einer Glasfaser, durch die die meisten unserer Pakete über weite Strecken reisen, kann zwischen 1,4 und 1,6 liegen - langsam aber sicher verbessern wir die Qualität der Materialien und können den Brechungsindex senken. Aber um es einfach zu halten, kann man als Faustregel davon ausgehen, dass die Lichtgeschwindigkeit in Glasfasern etwa 200.000.000 Meter pro Sekunde beträgt, was einem Brechungsindex von ~1,5 entspricht. Das Bemerkenswerte daran ist, dass wir uns bereits innerhalb eines kleinen konstanten Faktors der Höchstgeschwindigkeit befinden! Eine erstaunliche technische Errungenschaft, die für sich allein genommen schon erstaunlich ist.
Route | Entfernung | Zeit, Licht im Vakuum | Zeit, Licht in der Faser | Round-trip time (RTT) in Glasfaser |
---|---|---|---|---|
Von New York nach San Francisco |
4.148 km |
14 ms |
21 ms |
42 ms |
Von New York nach London |
5.585 km |
19 ms |
28 ms |
56 ms |
Von New York nach Sydney |
15.993 km |
53 ms |
80 ms |
160 ms |
Äquatorialer Umfang |
40.075 km |
133,7 ms |
200 ms |
200 ms |
Die Lichtgeschwindigkeit ist zwar schnell, aber es dauert trotzdem 160 Millisekunden, um die Strecke von New York nach Sydney zurückzulegen. Die Zahlen in Tabelle 1-1 sind auch deshalb unrealistisch optimistisch, weil sie davon ausgehen, dass das Paket über ein Glasfaserkabel entlang des Großkreises (der kürzesten Entfernung zwischen zwei Punkten auf der Erde) zwischen den Städten reist. In der Praxis ist das selten der Fall und das Paket würde einen viel längeren Weg zwischen New York und Sydney nehmen. Bei jedem Sprung auf dieser Strecke entstehen zusätzliche Verzögerungen bei der Weiterleitung, Verarbeitung, Warteschlangenbildung und Übertragung. Daher liegt die tatsächliche RTT zwischen New York und Sydney über unsere bestehenden Netze im Bereich von 200-300 Millisekunden. Alles in allem scheint das immer noch ziemlich schnell zu sein, oder?
Wir sind es nicht gewohnt, unsere alltäglichen Begegnungen in Millisekunden zu messen, aber Studien haben gezeigt, dass die meisten von uns zuverlässig von einer wahrnehmbaren "Verzögerung" berichten, sobald eine Verzögerung von mehr als 100-200 Millisekunden in das System eingeführt wird. Sobald die Schwelle von 300 Millisekunden überschritten ist, wird die Interaktion oft als "träge" empfunden, und bei der Schwelle von 1.000 Millisekunden (1 Sekunde) haben viele Nutzer/innen bereits einen mentalen Kontextwechsel vorgenommen, während sie auf die Antwort warten - siehe "Geschwindigkeit, Leistung und menschliche Wahrnehmung".
Der Punkt ist ganz einfach: Um das beste Erlebnis zu bieten und unsere Nutzerinnen und Nutzer bei der Sache zu halten, müssen unsere Anwendungen innerhalb von Hunderten von Millisekunden reagieren. Das lässt uns - und vor allem dem Netzwerk - nicht viel Spielraum für Fehler. Um erfolgreich zu sein, muss die Netzwerklatenz sorgfältig gemanagt werden und in allen Phasen der Entwicklung ein ausdrückliches Designkriterium sein.
Hinweis
Die Dienste des Content Delivery Network (CDN) bieten viele Vorteile, aber der wichtigste davon ist die einfache Feststellung, dass die Verteilung der Inhalte rund um den Globus und die Bereitstellung dieser Inhalte von einem nahegelegenen Standort aus für den Kunden eine erhebliche Verkürzung der Laufzeit aller Datenpakete ermöglicht.
Wir können zwar nicht dafür sorgen, dass die Datenpakete schneller übertragen werden, aber wir können die Entfernung verringern, indem wir unsere Server strategisch näher an den Nutzer/innen positionieren! Die Nutzung eines CDN für die Bereitstellung deiner Daten kann erhebliche Leistungsvorteile bieten.
Last-Mile-Latenz
Ironischerweise sind es oft die letzten paar Kilometer, nicht die Überquerung von Ozeanen oder Kontinenten, bei denen es zu erheblichen Latenzzeiten kommt: das berüchtigte Last-Mile-Problem. Um dein Haus oder dein Büro mit dem Internet zu verbinden, muss dein lokaler Internetanbieter die Kabel durch die ganze Nachbarschaft verlegen, das Signal bündeln und es an einen lokalen Routing-Knoten weiterleiten. Je nach Art der Verbindung, der Routing-Methode und der eingesetzten Technologie können allein diese ersten paar Sprünge Dutzende von Millisekunden dauern.
Laut den jährlichen "Measuring Broadband America"-Berichten der Federal Communications Commission (FCC) sind die Latenzzeiten für terrestrische Breitbandverbindungen (DSL, Kabel, Glasfaser) in den Vereinigten Staaten im Laufe der Zeit relativ stabil geblieben: Glasfaser hat die beste durchschnittliche Leistung (10-20 ms), gefolgt von Kabel (15-40 ms) und DSL (30-65 ms).
In der Praxis bedeutet dies eine Latenzzeit von 10-65 ms bis zum nächsten Messknoten im Kernnetz des Internetanbieters, bevor das Paket überhaupt an sein Ziel weitergeleitet wird! Der FCC-Bericht konzentriert sich auf die Vereinigten Staaten, aber die Latenz auf der letzten Meile ist für alle Internetanbieter eine Herausforderung, unabhängig von ihrer geografischen Lage. Wenn du neugierig bist, kannst du unter traceroute
viel über die Topologie und Leistung deines Internetanbieters erfahren.
Beispiel 1-1.
$> traceroute google.com traceroute to google.com (74.125.224.102), 64 hops max, 52 byte packets 1 10.1.10.1 (10.1.10.1) 7.120 ms 8.925 ms 1.199 ms 2 96.157.100.1 (96.157.100.1) 20.894 ms 32.138 ms 28.928 ms 3 x.santaclara.xxxx.com (68.85.191.29) 9.953 ms 11.359 ms 9.686 ms 4 x.oakland.xxx.com (68.86.143.98) 24.013 ms 21.423 ms 19.594 ms 5 68.86.91.205 (68.86.91.205) 16.578 ms 71.938 ms 36.496 ms 6 x.sanjose.ca.xxx.com (68.86.85.78) 17.135 ms 17.978 ms 22.870 ms 7 x.529bryant.xxx.com (68.86.87.142) 25.568 ms 22.865 ms 23.392 ms 8 66.208.228.226 (66.208.228.226) 40.582 ms 16.058 ms 15.629 ms 9 72.14.232.136 (72.14.232.136) 20.149 ms 20.210 ms 18.020 ms 10 64.233.174.109 (64.233.174.109) 63.946 ms 18.995 ms 18.150 ms 11 x.1e100.net (74.125.224.102) 18.467 ms 17.839 ms 17.958 ms
Im vorherigen Beispiel startete das Paket in Sunnyvale, wurde nach Santa Clara und Oakland weitergeleitet, kehrte nach San Jose zurück, wurde zum Rechenzentrum "529 Bryant" geroutet, von wo aus es zu Google weitergeleitet wurde und beim elften Hop an seinem Ziel ankam. Der gesamte Vorgang dauerte im Durchschnitt 18 Millisekunden. Alles in allem nicht schlecht, aber in der gleichen Zeit hätte das Paket den größten Teil der kontinentalen USA durchqueren können!
Die Latenzzeiten auf der letzten Meile können je nach ISP aufgrund der eingesetzten Technologie, der Topologie des Netzes und sogar der Tageszeit stark variieren. Wenn du als Endnutzer deine Surfgeschwindigkeit verbessern willst, solltest du die Latenzzeiten der verschiedenen Anbieter in deinem Gebiet messen und vergleichen.
Hinweis
Nicht die Bandbreite, sondern die Latenz ist der Leistungsengpass für die meisten Websites! Um zu verstehen, warum das so ist, müssen wir die Mechanismen der TCP- und HTTP-Protokolle verstehen - Themen, die wir in den folgenden Kapiteln behandeln werden. Wenn du neugierig bist, kannst du auch gleich zu "Mehr Bandbreite ist nicht so wichtig" weiterblättern .
Bandbreite in Kernnetzen
Eine Glasfaser ist ein einfaches "Lichtrohr", etwas dicker als ein menschliches Haar, das Licht zwischen den beiden Enden des Kabels überträgt. Es werden auch Metalldrähte verwendet, die jedoch höhere Signalverluste, elektromagnetische Störungen und höhere Wartungskosten mit sich bringen. Wahrscheinlich werden deine Datenpakete über beide Arten von Kabeln übertragen, aber bei längeren Strecken werden sie über eine Glasfaserverbindung übertragen.
Optische Fasern haben einen deutlichen Vorteil, wenn es um die Bandbreite geht, denn jede Faser kann durch ein Verfahren, das als Wellenlängenmultiplexing (WDM) bekannt ist, viele verschiedene Wellenlängen (Kanäle) von Licht übertragen. Daher ist die Gesamtbandbreite einer Glasfaserverbindung das Vielfache der Datenrate pro Kanal und der Anzahl der gemultiplexten Kanäle.
Anfang 2010 konnten Forscher über 400 Wellenlängen mit einer Spitzenkapazität von 171 Gbit/s pro Kanal multiplexen, was einer Gesamtbandbreite von über 70 Tbit/s für eine einzige Glasfaserverbindung entspricht! Um diesen Durchsatz zu erreichen, bräuchten wir Tausende von (elektrischen) Kupferkabelverbindungen. Es überrascht nicht, dass die meisten Langstreckenverbindungen, wie z. B. die Unterwasserdatenübertragung zwischen Kontinenten, heute über Glasfaserverbindungen erfolgen. Jedes Kabel hat mehrere Glasfaserstränge (üblich sind vier Stränge), was zu einer Bandbreitenkapazität von Hunderten von Terabit pro Sekunde für jedes Kabel führt.
Bandbreite am Netzwerkrand
Die Backbones, also die Glasfaserverbindungen, die die Kerndatenwege des Internets bilden, können Hunderte von Terabit pro Sekunde übertragen. Die verfügbare Kapazität an den Rändern des Netzes ist jedoch viel, viel geringer und variiert stark je nach eingesetzter Technologie: Einwahl, DSL, Kabel, eine Vielzahl von drahtlosen Technologien, Glasfaser bis ins Haus und sogar die Leistung des lokalen Routers. Die verfügbare Bandbreite für den Nutzer ist eine Funktion der Verbindung mit der geringsten Kapazität zwischen dem Client und dem Zielserver(Abbildung 1-1).
Akamai Technologies betreibt ein globales CDN mit Servern auf der ganzen Welt und stellt auf der Akamai-Website vierteljährlich kostenlose Berichte über die durchschnittlichen Breitbandgeschwindigkeiten zur Verfügung, die von ihren Servern gemessen werden. Tabelle 1-2 fasst die Makrotrends von Ende 2015 zusammen.
Rang | Land | Durchschnittliche Mbps | Veränderung im Vergleich zum Vorjahr |
---|---|---|---|
- |
Global |
5.1 |
14% |
1 |
Südkorea |
20.5 |
-19% |
2 |
Schweden |
17.4 |
23% |
3 |
Norwegen |
16.4 |
44% |
4 |
Schweiz |
16.2 |
12% |
5 |
Hongkong |
15.8 |
-2.7% |
... |
|
|
|
21 |
Vereinigte Staaten |
12.6 |
9.4% |
Die vorstehenden Daten schließen den Datenverkehr von Mobilfunkanbietern aus, ein Thema, auf das wir später noch einmal genauer eingehen werden. Für den Moment genügt es zu sagen, dass die mobilen Geschwindigkeiten sehr unterschiedlich und im Allgemeinen langsamer sind. Aber selbst wenn man das bedenkt, lag die durchschnittliche weltweite Breitbandbandbreite Ende 2015 bei nur 5,1 Mbit/s! Südkorea lag mit einem durchschnittlichen Datendurchsatz von 20,5 Mbit/s weltweit an der Spitze, die Vereinigten Staaten kamen mit 12,6 Mbit/s auf Platz 21.
Als Anhaltspunkt: Das Streaming eines HD-Videos ( ) kann je nach Auflösung und Codec zwischen 2 und 10 Mbit/s erfordern. Ein durchschnittlicher Nutzer in den USA kann also ein hochauflösendes Video am Netzwerkrand streamen, aber das würde auch einen Großteil seiner Verbindungskapazität verbrauchen - für einen Haushalt mit mehreren Nutzern ist das nicht sehr vielversprechend.
herauszufinden, wo der Bandbreitenengpass für einen bestimmten Nutzer liegt, ist oft eine nicht triviale, aber wichtige Aufgabe. Für Neugierige gibt es eine Reihe von Online-Diensten, wie z. B. speedtest.net von Ookla(Abbildung 1-2), die Upstream- und Downstream-Tests mit einem Server in der Nähe durchführen. Ein Test mit einem dieser Dienste ist eine gute Möglichkeit, um zu überprüfen, ob deine Verbindung die von deinem lokalen Internetanbieter beworbenen Geschwindigkeiten erreicht.
Eine Verbindung mit hoher Bandbreite zu deinem ISP ist zwar wünschenswert, aber keine Garantie für die End-to-End-Leistung. Nur weil ein Bandbreitentest hohe Datenraten verspricht, heißt das nicht, dass du dieselbe Leistung von anderen Remote-Servern erwarten kannst oder solltest. Das Netzwerk kann an jedem Zwischenknotenpunkt aufgrund von hoher Nachfrage, Hardwareausfällen, einem konzentrierten Netzwerkangriff oder einer Vielzahl anderer Gründe überlastet sein. Hohe Schwankungen bei Durchsatz und Latenz sind eine inhärente Eigenschaft unserer Datennetze - die Vorhersage, Verwaltung und Anpassung an das sich ständig ändernde "Netzwerkwetter" ist eine komplexe Aufgabe.
Höhere Bandbreite und geringere Latenzzeiten
Unsere Nachfrage nach höherer Bandbreite wächst schnell, was zum großen Teil auf die steigende Beliebtheit von Videostreaming zurückzuführen ist, das inzwischen für weit über die Hälfte des gesamten Internetverkehrs verantwortlich ist. Die gute Nachricht ist, dass es zwar nicht billig ist, aber es gibt mehrere Strategien, um die verfügbare Kapazität zu erhöhen: Wir können mehr Fasern in unsere Glasfaserverbindungen einbauen, wir können mehr Verbindungen über die überlasteten Strecken einrichten, oder wir können die WDM-Techniken verbessern, um mehr Daten über die bestehenden Verbindungen zu übertragen.
TeleGeography, ein Marktforschungs- und Beratungsunternehmen für Telekommunikation ( ), schätzt, dass wir im Jahr 2011 im Durchschnitt nur 20% der verfügbaren Kapazität der bestehenden Unterwasser-Glasfaserverbindungen nutzen. Noch wichtiger ist, dass zwischen 2007 und 2011 mehr als die Hälfte der zusätzlichen Kapazität der transpazifischen Kabel auf WDM-Upgrades zurückzuführen war: dieselben Glasfaserverbindungen, bessere Technologie an beiden Enden, um die Daten zu multiplexen. Natürlich können wir nicht erwarten, dass diese Fortschritte unbegrenzt anhalten, da jedes Medium einen Punkt erreicht, an dem die Erträge abnehmen. Solange es die Wirtschaftlichkeit des Unternehmens zulässt, gibt es jedoch keinen Grund, warum der Bandbreitendurchsatz nicht mit der Zeit erhöht werden kann - wenn alles andere fehlschlägt, können wir weitere Glasfaserverbindungen hinzufügen.
Die Verbesserung der Latenzzeit ist dagegen eine ganz andere Geschichte. Die Qualität der Glasfaserverbindungen könnte verbessert werden, um der Lichtgeschwindigkeit ein wenig näher zu kommen: bessere Materialien mit niedrigerem Brechungsindex und schnellere Router auf dem Weg. Da unsere aktuellen Geschwindigkeiten jedoch bereits bei ~2/3 der Lichtgeschwindigkeit liegen, können wir von dieser Strategie höchstens eine bescheidene Verbesserung von 30% erwarten. Leider gibt es keinen Weg, die Gesetze der Physik zu umgehen: Die Lichtgeschwindigkeit setzt der minimalen Latenzzeit eine harte Grenze.
Da wir das Licht nicht schneller machen können, können wir die Entfernung auch kürzer machen - die kürzeste Entfernung zwischen zwei Punkten auf dem Globus ist durch den Großkreisweg zwischen ihnen definiert. Aber auch das Verlegen neuer Kabel ist nicht immer möglich, weil die Gegebenheiten des Geländes, soziale und politische Gründe und natürlich die damit verbundenen Kosten dies erschweren.
Um die Leistung unserer Anwendungen zu verbessern ( ), müssen wir unsere Protokolle und unseren Netzwerkcode so gestalten und optimieren, dass die Grenzen der verfügbaren Bandbreite und der Lichtgeschwindigkeit berücksichtigt werden: Wir müssen die Roundtrips reduzieren, die Daten näher an den Client bringen und Anwendungen entwickeln, die die Latenzzeit durch Caching, Pre-Fetching und eine Reihe ähnlicher Techniken verbergen können, wie in den folgenden Kapiteln erläutert wird.
Get Leistungsstarke Browser-Vernetzung now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.