Read in English · Leer en español · Lire en français
Abschnitt 0.4 von 0.8 · Einsteiger · 18 Min. Lesezeit
Netzwerke, Internet und Web: IP, DNS, HTTP und das Client-Server-Modell
Videolektion
5 Min. · auf Englisch gesprochen, mit UntertitelnNur anhören (Audio)
Transkript lesen
Kaum eine moderne Software läuft für sich allein. Eine Essensliefer-App auf Ihrem Smartphone spricht mit den Servern des Unternehmens, die mit Restaurants und einem Zahlungsanbieter sprechen. Daten über das Internet zu senden ist dem Postversand sehr ähnlich. In dieser Lektion verfolgen wir die Päckchen.
Das Internet ist ein Netz aus Netzen: Millionen Netzwerke unterschiedlicher Eigentümer, die den Verkehr der anderen nach gemeinsamen Regeln, sogenannten Protokollen, befördern. Daten reisen nicht als ein durchgehender Strom. Sie werden in kleine Pakete zerlegt, jedes mit Herkunft und Ziel beschriftet. Geräte namens Router reichen die Pakete Hop für Hop weiter, wie Sortierzentren. Pakete derselben Nachricht können verschiedene Wege nehmen, und der empfangende Computer setzt sie wieder zusammen.
Jedes Gerät im Internet wird über eine IP-Adresse erreicht, kurz für Internet Protocol. Sie ist wie die Straßenadresse eines Bürogebäudes. Doch ein Computer führt viele Programme gleichzeitig aus, deshalb sagt eine Portnummer, welches Programm das Paket empfangen soll: die Zimmernummer. TCP gibt zwei Programmen eine zuverlässige Verbindung: Verlorene Pakete werden erneut gesendet, und alles kommt in der richtigen Reihenfolge an, wie bei einem Einschreiben. UDP sendet einfach Pakete, ohne Garantien, wie Postkarten. Das passt zu Videoanrufen und Spielen, wo ein verspätetes Tonfragment schlimmer ist als ein fehlendes.
Menschen merken sich Namen wie shop Punkt example. Netzwerke leiten nach Zahlen weiter. Das Domain Name System, kurz DNS, ist das Adressbuch des Internets, das das eine in das andere übersetzt. Ihr Gerät bittet einen rekursiven Resolver, meist betrieben von Ihrem Internetanbieter oder einem öffentlichen Dienst, die Laufarbeit zu erledigen. Der Resolver fragt einen Root-Server, der die Antwort nicht kennt, aber weiß, wer für die Top-Level-Domain zuständig ist. Der Top-Level-Domain-Server verweist ihn an den autoritativen Server der Domain. Und der autoritative Server antwortet mit der tatsächlichen Adresse. Der Resolver gibt sie an Ihr Gerät zurück. Antworten werden für eine vom Domaininhaber festgelegte Zeit gemerkt, also gecacht, sodass die meisten Abfragen nur wenige Millisekunden dauern.
Sobald zwei Programme einander erreichen, brauchen sie eine gemeinsame Sprache. Im Web ist das HTTP. Der Client sendet eine Anfrage mit einer Methode, einem Pfad, einigen Headern und manchmal Daten. Die Methode sagt, was zu tun ist: GET ruft etwas ab, POST übermittelt etwas Neues wie eine Bestellung, PUT ersetzt etwas, und DELETE entfernt es. Der Server schickt eine Antwort zurück, mit einem Statuscode, der sagt, wie es gelaufen ist. Codes im Zweihunderterbereich bedeuten Erfolg. Codes im Vierhunderterbereich bedeuten, dass die Anfrage falsch war, etwa vier null vier, nicht gefunden. Codes im Fünfhunderterbereich bedeuten, dass der Server versagt hat, und ein späterer Versuch kann klappen.
Einfaches HTTP kann jeder auf dem Weg lesen, etwa jemand im selben Café-WLAN. HTTPS sendet es durch einen von TLS geschaffenen geschützten Kanal, der es vertraulich hält und Manipulationen erkennt. Es beweist auch, dass Sie wirklich mit der richtigen Website sprechen, mithilfe eines Zertifikats, das wie ein Reisepass von einer Stelle signiert ist, der Ihr Gerät vertraut. Aber es beweist nicht, dass die Website ehrlich ist.
Bandbreite ist, wie viele Daten pro Sekunde fließen können: die Breite des Rohrs. Latenz ist, wie lange Daten bis zur Ankunft brauchen: die Länge des Rohrs. Nun ein Shop mit Hosting in London und ein Kunde in Sydney. Selbst Licht in Glasfasern braucht Zeit, um die Welt zu durchqueren, also dauert jeder Roundtrip etwa eine Viertelsekunde. Zuerst eine DNS-Abfrage. Dann zwei Handshakes, einer zum Verbinden und einer für die Verschlüsselung: eine halbe Sekunde. Dann die Seite selbst und die Dateien, die sie braucht: noch eine halbe Sekunde. Das ist etwa eine Sekunde, bevor etwas Nützliches erscheint, und schnelleres Breitband würde daran kaum etwas ändern. Liefert man dieselben Inhalte aus Sydney aus, dauern dieselben Schritte etwa eine zwanzigstel Sekunde. Deshalb sparen Architekten Roundtrips ein und bringen Inhalte näher an die Nutzer.
Fügen wir alles zusammen. Hier lädt ein Browser eine Produktseite. Die Zeit läuft nach unten. Zuerst fragt der Browser das DNS, wo shop Punkt example ist, und erhält eine Adresse. Dann öffnet er eine Verbindung, richtet die Verschlüsselung ein und sendet seine Anfrage für Produkt zweiundvierzig. Der Webserver fragt seine Datenbank nach dem Produkt, also ist der Server auch ein Client. Der Server antwortet mit zweihundert, okay, und der Seite. Der Browser holt die Bilder und Styles und zeichnet die Seite. Das ist das Client-Server-Modell. Clients starten Anfragen; Server halten die gemeinsamen Daten und Regeln. Und weil eine App von ihrem Nutzer verändert werden kann, darf ein Server einem Client nie blind vertrauen.
Merken Sie sich: Sobald ein System mehr als einen Computer umfasst, ist jeder Aufruf zwischen seinen Teilen langsamer und kann fehlschlagen. Der vollständige Abschnitt enthält mehr. Als Nächstes, in Abschnitt null Punkt fünf, sehen wir uns an, wo Daten gespeichert werden.
Was Sie wissen müssen
- Daten durchqueren Netzwerke in Paketen, die Router anhand der IP-Adresse des Ziels Hop für Hop weiterleiten; eine Portnummer kennzeichnet das Programm auf diesem Rechner.
- TCP bietet nach einem Handshake eine zuverlässige, geordnete Verbindung; UDP sendet einzelne Pakete ohne Garantien, aber mit weniger Verzögerung.
- DNS übersetzt Namen in IP-Adressen über eine Hierarchie aus Root-, Top-Level-Domain- und autoritativen Servern, mit starkem Caching, das über TTLs gesteuert wird.
- HTTP ist ein zustandsloses Anfrage-Antwort-Protokoll: eine Methode (GET, POST, PUT, DELETE), ein Pfad, Header und ein Body, beantwortet mit einem Statuscode (2xx, 3xx, 4xx, 5xx).
- HTTPS ist HTTP über TLS; TLS verschlüsselt den Datenverkehr, erkennt Manipulationen und nutzt von vertrauenswürdigen Stellen signierte Zertifikate, um die Identität des Servers nachzuweisen.
- Im Client-Server-Modell starten Clients Anfragen, und Server halten gemeinsame Daten und Regeln; Server dürfen Clients nie blind vertrauen.
- Latenz (Verzögerung) und Bandbreite (Kapazität) sind verschiedene Dinge; die Latenz ist durch die Lichtgeschwindigkeit begrenzt, deshalb zählen Entfernung und Roundtrips.
Netzwerke und Pakete
Kaum eine moderne Software läuft für sich allein. Eine Essensliefer-App auf Ihrem Smartphone kommuniziert mit den Servern des Unternehmens, die wiederum mit den Tablets der Restaurants, einem Zahlungsanbieter, einem Kartendienst und einem Benachrichtigungsdienst kommunizieren. Dieser Abschnitt erklärt, wie diese Kommunikation funktioniert, von unten nach oben.
Ein Netzwerk ist eine Gruppe von Computern, die so verbunden sind, dass sie Daten austauschen können, per Kabel, WLAN, Mobilfunk oder Glasfaser. Das Internet ist ein Netz aus Netzen: Millionen Netzwerke unterschiedlicher Eigentümer (Breitbandanschlüsse zu Hause, Mobilfunkbetreiber, Universitäten, Cloud-Anbieter), die vereinbart haben, den Datenverkehr der jeweils anderen nach gemeinsamen Regeln, sogenannten Protokollen, zu befördern.
Daten reisen nicht als ein durchgehender Strom. Sie werden in Pakete zerlegt: Stücke von typischerweise bis zu etwa 1500 Bytes, jedes mit Herkunft und Ziel beschriftet, wie ein Päckchen mit Absender- und Empfängeradresse. Geräte namens Router reichen Pakete von Netzwerk zu Netzwerk weiter und wählen dabei jeweils einen guten nächsten Hop, ähnlich wie Sortierzentren Päckchen in Richtung ihres Ziels weitergeben. Verschiedene Pakete derselben Nachricht können unterschiedliche Wege nehmen, in falscher Reihenfolge ankommen oder gelegentlich verloren gehen, und der empfangende Computer setzt sie wieder zusammen. Die Aufteilung in Pakete lässt Millionen Gespräche dieselben Kabel fair teilen und den Datenverkehr eine unterbrochene Verbindung umgehen.
Pakete finden ihren eigenen Weg
Adressen: IP-Adressen und Ports
Damit ein Paket ankommt, braucht das Ziel eine Adresse. Jedes Gerät im Internet wird über eine IP-Adresse erreicht (IP steht für Internet Protocol). Die ältere Version, IPv4, schreibt Adressen als vier Zahlen von 0 bis 255, etwa 192.0.2.10; sie erlaubt etwa 4,3 Milliarden Adressen, was nicht für jedes Smartphone, jeden Laptop und jeden Sensor der Welt reicht. Das neuere IPv6 verwendet viel längere Adressen in hexadezimaler Schreibweise (Basis 16, mit den Ziffern 0 bis 9 und den Buchstaben a bis f), etwa 2001:db8::1, und bietet Platz für praktisch unbegrenzt viele Geräte. Beide sind nebeneinander im Einsatz. (Die Beispieladressen in diesem Abschnitt stammen aus Bereichen, die für Dokumentationszwecke reserviert sind, und gehören daher zu keinem echten Rechner.)
Eine IP-Adresse bringt ein Paket zum richtigen Computer, aber ein Computer führt viele Programme gleichzeitig aus. Eine Portnummer von 0 bis 65535 gibt an, welches Programm es empfangen soll. Ist die IP-Adresse die Straßenadresse eines Bürogebäudes, dann ist der Port die Zimmernummer. Bekannte Dienste haben Standardports: 443 für HTTPS, 80 für einfaches HTTP, 53 für DNS, 5432 für die Datenbank PostgreSQL. Ein Serverprogramm lauscht auf einem Port und wartet auf Verbindungen; wenn Ihr Browser eine Website kontaktiert, verbindet er sich mit Port 443 unter der IP-Adresse der Website.
TCP und UDP: zwei Arten der Zustellung
Auf IP setzen zwei wichtige Transportprotokolle auf, die bestimmen, wie viel Sorgfalt auf die Zustellung verwendet wird. TCP (Transmission Control Protocol) bietet zwei Programmen einen zuverlässigen, geordneten Bytestrom. Bevor Daten fließen, bauen beide Seiten mit einem dreistufigen Handshake eine Verbindung auf. Jedes Paket ist nummeriert; der Empfänger bestätigt, was angekommen ist; Fehlendes wird erneut gesendet; alles wird dem Programm in der richtigen Reihenfolge übergeben. TCP drosselt außerdem das Tempo, wenn das Netzwerk überlastet ist. Es ist wie ein Einschreiben mit Sendungsverfolgung: verlässlich, aber mit etwas Mehraufwand.
UDP (User Datagram Protocol) sendet einfach einzelne Pakete, Datagramme genannt, ohne Handshake, ohne Bestätigungen, ohne erneutes Senden und ohne Reihenfolge. Es ist wie das Verschicken von Postkarten: billig und schnell, aber manche kommen vielleicht nicht an. Genau das ist richtig, wenn ein verspätetes Paket ohnehin nutzlos ist. In einem Videoanruf ist ein Tonfragment, das eine halbe Sekunde zu spät ankommt, schlimmer als eines, das nie ankommt; deshalb nutzen Anrufe, Livestreams und Onlinespiele UDP und kommen mit kleinen Lücken zurecht. Auch DNS-Abfragen, die aus winzigen Fragen und Antworten bestehen, nutzen traditionell UDP.
TCP und UDP im Vergleich
| TCP | UDP | |
|---|---|---|
| Verbindungsaufbau | Ja: ein Handshake, bevor Daten fließen | Keiner: einfach senden |
| Zustellung | Garantiert: Verlorene Pakete werden erneut gesendet | Best Effort: Verluste werden nicht behoben |
| Reihenfolge | Bleibt erhalten | Nicht garantiert |
| Mehraufwand und Verzögerung | Höher | Niedriger |
| Typische Einsatzzwecke | Webseiten und APIs (HTTP/1.1 und HTTP/2), E-Mail, Dateiübertragung, Datenbankverbindungen | Sprach- und Videoanrufe, Livestreaming, Onlinespiele, DNS |
DNS: das Adressbuch des Internets
Menschen merken sich Namen wie shop.example; Netzwerke leiten nach IP-Adressen weiter. Das Domain Name System (DNS) übersetzt das eine in das andere. Es ist ein weltweites, verteiltes Verzeichnis: Kein einzelner Computer kennt alle Namen. Stattdessen ist die Zuständigkeit nach den Punkten im Namen aufgeteilt, von rechts nach links gelesen. Die Root-Server wissen, wer für jede Top-Level-Domain wie .com oder .uk zuständig ist; diese Top-Level-Domain-Server wissen, welche autoritativen Nameserver für jede darunter registrierte Domain zuständig sind; und die autoritativen Server halten die eigentlichen Einträge, etwa die IP-Adresse von www.shop.example. Die Root-Zone wird von 13 benannten Server-Identitäten bedient, die 12 unabhängige Organisationen über weit mehr als tausend Serverinstanzen in aller Welt betreiben.
Ihr Gerät geht diese Kette normalerweise nicht selbst ab. Es fragt einen rekursiven Resolver, meist betrieben von Ihrem Internetanbieter oder einem öffentlichen Dienst, der die Laufarbeit erledigt und Antworten für eine vom Domaininhaber festgelegte Dauer speichert (cacht), die TTL (Time to Live). Weil Antworten auf vielen Ebenen gecacht werden, sind die meisten Abfragen in wenigen Millisekunden beantwortet, ganz ohne die Root-Server zu erreichen. Dasselbe Caching erklärt, warum eine Änderung an einem DNS-Eintrag Minuten oder Stunden brauchen kann, bis sie überall sichtbar ist.
DNS-Auflösung Schritt für Schritt (nichts im Cache)
- Den Resolver fragenIhr Gerät fragt seinen konfigurierten rekursiven Resolver: Wie lautet die IP-Adresse von
www.shop.example? - Einen Root-Server fragenDer Resolver fragt einen Root-Server, der die Antwort nicht kennt, aber mit den für die Top-Level-Domain zuständigen Servern antwortet.
- Den Top-Level-Domain-Server fragenDer Resolver fragt einen dieser Server, der mit den autoritativen Nameservern für
shop.exampleantwortet. - Den autoritativen Server fragenDer Resolver fragt den autoritativen Server, der mit dem Eintrag antwortet: zum Beispiel
203.0.113.5, gültig für 300 Sekunden. - Antworten und merkenDer Resolver gibt die Adresse an Ihr Gerät zurück, und beide behalten sie im Cache, bis die TTL abläuft, sodass die nächste Abfrage fast sofort erfolgt.
Wer beantwortet eine DNS-Frage?
HTTP: Anfragen und Antworten
Sobald ein Programm ein anderes erreichen kann, brauchen beide eine gemeinsame Sprache für ihre Anliegen. Im Web ist diese Sprache HTTP (Hypertext Transfer Protocol). Es folgt einem einfachen Muster: Der Client sendet eine Anfrage (Request); der Server schickt genau eine Antwort (Response) zurück. Jede Anfrage nennt eine Methode (was zu tun ist), einen Pfad (woran), einige Header (Zusatzinformationen als Name-Wert-Paare) und manchmal einen Body (gesendete Daten). Jede Antwort enthält einen Statuscode, Header und meist einen Body: eine Webseite, ein Bild oder Daten in einem Format wie JSON (ein einfaches Textformat für strukturierte Daten, erklärt im Abschnitt über APIs).
Die gängigsten Methoden sind GET (etwas abrufen, ohne es zu ändern), POST (etwas Neues übermitteln, etwa eine Bestellung aufgeben), PUT (etwas unter einer bekannten Adresse ersetzen, etwa eine Lieferadresse aktualisieren) und DELETE (etwas entfernen). GET, PUT und DELETE sind per Definition idempotent: Dieselbe Anfrage zweimal zu senden hat dieselbe Wirkung wie einmal, weshalb sie nach einem Netzwerkfehler gefahrlos wiederholt werden können. POST ist es nicht; deshalb kann eine unbedachte Wiederholung eine Bestellung doppelt aufgeben. Header transportieren etwa den Inhaltstyp (Content-Type: application/json), die bevorzugte Sprache des Nutzers, Cookies (kleine Datenstücke, die eine Website vom Browser speichern und bei späteren Anfragen zurücksenden lässt) und Anmeldedaten sowie Caching-Anweisungen.
HTTP ist zustandslos: Jede Anfrage wird für sich verstanden, und der Server muss sich nicht an frühere erinnern. Angemeldete Sitzungen werden darauf aufgebaut, meist indem der Client bei jeder Anfrage ein Cookie oder Token mitschickt. Die Zustandslosigkeit ist ein Grund, warum das Web so gut skaliert: Jeder von vielen identischen Servern kann jede Anfrage bearbeiten.
POST /api/orders HTTP/1.1
Host: shop.example
Content-Type: application/json
Authorization: Bearer eyJhbGciOi...
{"product_id": 42, "quantity": 2}
HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/orders/9917
{"order_id": 9917, "status": "received", "total_pence": 3000}Statuscodes nach Klassen
| Klasse | Bedeutung | Typische Beispiele |
|---|---|---|
| 2xx | Erfolg | 200 OK; 201 Created (etwas Neues wurde angelegt); 204 No Content |
| 3xx | Umleitung: woanders nachsehen | 301 Moved Permanently; 302 Found (vorübergehend verschoben); 304 Not Modified (Ihre zwischengespeicherte Kopie ist noch gültig) |
| 4xx | Client-Fehler: Die Anfrage war falsch | 400 Bad Request; 401 Unauthorized (nicht angemeldet); 403 Forbidden (angemeldet, aber nicht berechtigt); 404 Not Found; 429 Too Many Requests |
| 5xx | Server-Fehler: Die Anfrage war in Ordnung, der Server hat versagt | 500 Internal Server Error; 502 Bad Gateway; 503 Service Unavailable; 504 Gateway Timeout |
Die Trennung zwischen 4xx und 5xx ist in der Praxis wichtig. Ein 4xx sagt: „Nicht einfach wiederholen; die Anfrage korrigieren.“ Ein 5xx sagt: „Das Problem liegt bei uns“; ein späterer erneuter Versuch kann klappen, und das Betriebsteam sollte alarmiert werden, wenn die 5xx-Raten steigen.
HTTPS und TLS: Vertraulichkeit und Identität
Einfaches HTTP sendet alles als lesbaren Text, sodass jeder auf dem Weg, etwa jemand im selben Café-WLAN, es lesen oder verändern könnte. HTTPS ist HTTP, das durch einen geschützten Kanal gesendet wird, den TLS herstellt (Transport Layer Security; die aktuelle Version, TLS 1.3, wurde 2018 als RFC 8446 veröffentlicht). TLS bietet drei Dinge: Vertraulichkeit (Lauscher sehen nur verschlüsselte Daten), Integrität (Manipulationen werden erkannt) und Authentifizierung (Sie sprechen wirklich mit shop.example, nicht mit einem Betrüger).
Die Authentifizierung beruht auf Zertifikaten. Das Zertifikat einer Website ist ein digitales Dokument, das sinngemäß sagt: „Dieser öffentliche Schlüssel gehört zu shop.example“, signiert von einer Zertifizierungsstelle (CA), der Ihr Browser oder Smartphone bereits vertraut. Es funktioniert wie ein Reisepass: ausgestellt von einer Stelle, der beide Seiten vertrauen, mit dem Inhaber abgeglichen und nur bis zum Ablaufdatum gültig. Während des TLS-Handshakes legt der Server sein Zertifikat vor, der Client prüft Signatur, Namen und Daten, und beide Seiten vereinbaren frische geheime Schlüssel, um den Rest der Kommunikation zu verschlüsseln. Schlägt eine Prüfung fehl, zeigt der Browser eine Warnung.
TLS schützt Daten während der Übertragung zwischen zwei Punkten. Es schützt keine Daten, sobald sie gespeichert sind, und es beweist nicht, dass die Website ehrlich ist, nur dass sie die ist, die sie zu sein behauptet. Heute ist HTTPS für den gesamten Webverkehr die Norm, nicht nur für Zahlungen, und Zertifikate werden oft kostenlos ausgestellt und automatisch erneuert.
Das Client-Server-Modell
Die meisten Systeme in diesem Kurs folgen dem Client-Server-Modell. Ein Client (ein Browser, eine mobile App, ein anderes Programm) beginnt die Kommunikation, indem er eine Anfrage sendet. Ein Server wartet auf Anfragen und beantwortet sie. Der Server hält, was geteilt und vertrauenswürdig sein muss: den Produktkatalog, die Bestellungen aller Kunden, die Regeln für Preise und Erstattungen. Der Client kümmert sich um den Bildschirm und die Eingaben des Nutzers.
In einem Restaurant sind die Gäste die Clients und die Küche ist der Server: Die Gäste geben Bestellungen auf; die Küche verfügt über die Zutaten und das Können und bedient viele Gäste gleichzeitig. Eine Folge davon ist, dass der Server dem Client nie blind vertrauen darf. Eine Smartphone-App kann von ihrem Nutzer verändert werden; deshalb müssen Preise, Berechtigungen und Lagerbestände auf dem Server geprüft werden, wie sorgfältig die App sie auch selbst prüft.
Ein Server ist oft zugleich ein Client: Der Webserver des Shops ist ein Client seiner Datenbank und des Zahlungsanbieters. Reale Systeme sind Ketten und Geflechte solcher Beziehungen, wie das Sequenzdiagramm unten zeigt.
Latenz und Bandbreite
Zwei Größen beschreiben, wie schnell sich ein Netzwerk anfühlt, und sie werden oft verwechselt. Bandbreite ist die Datenmenge, die eine Verbindung pro Sekunde übertragen kann, etwa 100 Megabit pro Sekunde: die Breite des Rohrs. Latenz ist die Zeit, die ein Datenstück von einem Ende zum anderen braucht, meist gemessen als Round-Trip-Time (RTT) in Millisekunden: die Länge des Rohrs. Ein Autobahnvergleich hilft: Zusätzliche Fahrspuren (Bandbreite) lassen mehr Autos pro Stunde durch, verkürzen aber die Fahrt keines einzelnen Autos (Latenz).
Die Latenz hat eine Untergrenze, die die Physik setzt. Licht in Glasfasern bewegt sich mit rund 200.000 km pro Sekunde, etwa zwei Dritteln seiner Geschwindigkeit im Vakuum. London und Sydney liegen auf geradem Weg über den Globus etwa 17.000 km auseinander; selbst eine perfekte Glasfaser auf dieser Linie bräuchte also etwa 85 ms für eine Richtung und 170 ms für einen Roundtrip. Echte Kabel folgen nicht dem kürzesten Weg, und Router fügen Verzögerung hinzu, sodass gemessene Roundtrips typischerweise bei etwa 250 ms liegen. Kein Upgrade kann das beseitigen. Braucht das Laden einer Seite aus Sydney zehn aufeinanderfolgende Roundtrips zu einem Server in London, wartet der Nutzer zweieinhalb Sekunden, wie schnell sein Breitbandanschluss auch ist.
Ausgearbeitetes Beispiel
Ausgearbeitetes Beispiel: ein Server in London, ein Kunde in Sydney
Ein Shop hostet alles in London. Ein Kunde in Sydney öffnet eine Produktseite über eine neue HTTPS-Verbindung. Nehmen Sie einen Roundtrip von 250 ms an und lassen Sie die Verarbeitungszeit auf dem Server außer Acht.
| DNS-Abfrage (nicht im Cache) | Der Resolver braucht eventuell mehrere Abfragen; sagen wir 1 Roundtrip zu nahen Servern: etwa 50 ms |
|---|---|
| TCP-Handshake | 1 Roundtrip nach London: 250 ms |
| TLS-1.3-Handshake | 1 Roundtrip: 250 ms |
| Die HTML-Seite anfordern | 1 Roundtrip: 250 ms |
| CSS und Skripte anfordern, die die Seite braucht | Mindestens 1 weiterer Roundtrip: 250 ms |
| Gesamt, bevor etwas Nützliches erscheint | Etwa 1050 ms, wobei die Bandbreite fast keine Rolle spielt |
| Derselbe Kunde, Inhalte aus Sydney ausgeliefert | Roundtrip von vielleicht 10 ms: Dieselben fünf Schritte dauern rund 50 ms |
Bei kleinen Seiten dominiert die Latenz, nicht die Bandbreite. Den Breitbandanschluss des Kunden von 50 auf 500 Megabit pro Sekunde aufzurüsten würde am Ergebnis kaum etwas ändern.
Architekten verringern die Latenz, indem sie Roundtrips einsparen (Verbindungen wiederverwenden, Anfragen bündeln) und Inhalte näher an die Nutzer bringen, etwa mit Content Delivery Networks, behandelt in Server und die Cloud.
Entscheidungshilfe
Entscheidungshilfe: Liegt ein langsames Netzwerkerlebnis an der Latenz oder an der Bandbreite?
Eine grobe erste Diagnose, wenn Nutzer klagen, dass etwas über das Netzwerk langsam ist.
- Sind auch kleine Anfragen (ein kurzer API-Aufruf, eine winzige Seite) langsam?JaWahrscheinliche Ursache ist die Latenz. Prüfen Sie die Entfernung zum Server und wie viele aufeinanderfolgende Roundtrips die Seite oder App macht.NeinWeiter zur nächsten Frage.
- Sind nur große Übertragungen (Videos, große Downloads, umfangreiche Berichte) langsam?JaWahrscheinlich begrenzt die Bandbreite, auf der Verbindung des Nutzers oder der des Servers. Erwägen Sie Komprimierung, kleinere Dateien oder ein Content Delivery Network.NeinWeiter zur nächsten Frage.
- Ist die Verzögerung von jedem Standort aus gleich?JaVielleicht ist das Netzwerk gar nicht das Problem: Sehen Sie sich Serververarbeitung, Datenbankabfragen und Algorithmen an (siehe den Abschnitt über Daten und Algorithmen).NeinStandortabhängige Verzögerung deutet auf Latenz und Routing hin: Bedienen Sie Nutzer von näher an ihrem Standort aus.
Was passiert, wenn Sie eine Webadresse eingeben
All diese Teile wirken jedes Mal zusammen, wenn Sie eine Website besuchen. Hier ist der Ablauf, wenn Sie https://shop.example/products/42 eingeben und die Eingabetaste drücken, vereinfacht, aber zutreffend.
Von der Eingabetaste zur Seite
- Die Adresse zerlegenDer Browser zerlegt die URL in das Schema (
https, also Port 443 und TLS), den Hostnamen (shop.example) und den Pfad (/products/42). - Die IP-Adresse findenDer Browser prüft seinen eigenen Cache, dann den des Betriebssystems, und fragt dann den rekursiven Resolver, der wie oben beschrieben das DNS befragt und etwa
203.0.113.5zurückgibt. - Eine TCP-Verbindung öffnenBrowser und Server tauschen die drei Handshake-Nachrichten aus, um eine zuverlässige Verbindung zu Port 443 aufzubauen.
- TLS aufbauenDer Server legt sein Zertifikat vor; der Browser prüft, ob es für
shop.examplegültig und von einer vertrauenswürdigen Stelle signiert ist; beide Seiten vereinbaren Schlüssel für die Verschlüsselung. - Die HTTP-Anfrage sendenDer Browser sendet
GET /products/42mit Headern wie den akzeptierten Sprachen und etwaigen Cookies für die Website. - Der Server erledigt seine ArbeitDie Serversoftware empfängt die Anfrage und führt den Code des Shops aus, der eine Datenbank nach Produkt 42 abfragt und eine HTML-Seite erzeugt.
- Die Antwort empfangenDer Server antwortet mit
200 OK, mit dem HTML im Body und Headern wieContent-Type: text/htmlund Caching-Regeln. - Den Rest abrufenDas HTML verweist auf Stylesheets, Skripte und Bilder; der Browser fordert auch diese an, oft viele gleichzeitig über dieselbe Verbindung.
- RendernDer Browser ordnet die Seite an und zeichnet sie auf den Bildschirm; Skripte können danach weitere Anfragen stellen, etwa um Bewertungen abzurufen.
Sequenzdiagramm: eine Produktseite laden
Warum das für die Architektur wichtig ist
Sobald ein System auf mehr als einen Computer verteilt ist, wird jede Interaktion zwischen seinen Teilen zu einem Netzwerkaufruf, mit Latenz, der Möglichkeit eines Ausfalls und dem Bedarf an Sicherheit. Ein Funktionsaufruf innerhalb eines Programms dauert Nanosekunden und geht nie verloren; ein Aufruf über ein Netzwerk dauert Millisekunden, manchmal weit länger, und kehrt manchmal nie zurück. Viele der schwierigsten Probleme der Architektur folgen aus diesem Unterschied; deshalb beginnt Kapitel 6 mit den Fallacies of Distributed Computing, etwa dem Glauben, die Latenz sei null.
Die hier behandelten Protokolle tauchen auch als Bausteine wieder auf: HTTP liegt den Web-APIs im nächsten Teil dieses Kapitels und den Kommunikationsstilen in Kapitel 6 zugrunde, während TLS und Zertifikate in sichere Kommunikation und Zero Trust wiederkehren. Server nahe an den Nutzern zu platzieren ist Teil der Multi-Region- und Edge-Architektur.
Prüfen Sie Ihr Verständnis
Warum braucht ein Paket neben einer IP-Adresse auch eine Portnummer?
Die IP-Adresse bringt es zum richtigen Computer, aber dieser Computer führt viele Programme aus; der Port gibt an, welches Programm es empfangen soll, etwa der Webserver, der auf 443 lauscht.
Was teilt ein 3xx-Statuscode dem Client mit?
Dass das Angefragte woanders liegt oder unverändert ist: Zum Beispiel bedeutet 301, dass es dauerhaft verschoben wurde, und 304, dass die zwischengespeicherte Kopie des Clients noch gültig ist.
Was ist der Unterschied zwischen einer 401- und einer 503-Antwort?
401 ist ein Client-Fehler: Der Anfrage fehlen gültige Anmeldedaten. 503 ist ein Server-Fehler: Der Dienst kann die Anfrage vorübergehend nicht bearbeiten.
Warum kann kein Netzwerk-Upgrade einen Roundtrip zwischen London und Sydney auf 10 ms senken?
Licht legt in Glasfasern etwa 200.000 km pro Sekunde zurück, daher dauert der Roundtrip von rund 34.000 km mindestens etwa 170 ms.
Quellen und weiterführende Literatur
Haben Sie eine Frage zu diesem Abschnitt? ArchitectBot, der KI-Lernassistent des Kurses, antwortet zuerst aus dem Kurs.
Fragen: „Unsere Nutzer in Australien sagen, die App sei langsam, aber unsere Server stehen in Europa. Welche Möglichkeiten habe ich, und was kostet jede davon?“