Ich habe diese Erklärung gefunden, wie ein CDN funktioniert. Aber eines verstehe ich nicht wirklich. Nehmen wir an , ich Setup mehrere DNS - Server an meinem Standort und sie verwenden , um die Name - Server - Domänen dns1.example.com
, dns2.example.com
und dns3.example.com
. Diese DNS-Server können je nach Standort des Besuchers (Ping, Geodatenbank, Browsersprache oder was auch immer) eine Server-IP bereitstellen. Jetzt aktualisiere ich diese Nameserver-Einstellungen für meine Domain www.example.org
in der Registrierung.
Jetzt versucht die allererste Anforderung www.example.org
mit einer abgelaufenen TTL, die Domäne aufzulösen. Es fragt:
- die lokalen .hosts / DNS, wenn TTL abgelaufen ist:
- der Internetprovider DNS, wenn TTL abgelaufen ist:
- das Root-DNS, wenn TTL abgelaufen ist:
- mein Einheimischer
dns1.example.com
Aber wenn ich es richtig verstehe, wird die neue IP zu all diesen Nameserver-Caches hinzugefügt, bis die TTL wieder abläuft. Wie ist es also möglich, abhängig von seinem Standort andere IPs an den Besucher zu senden?
In dieser Antwort sagte theandym, die Anfrage sei "weitergeleitet", aber ich glaube nicht, dass ein CDN so funktioniert, weil "weiterleiten" bedeutet, den Übertragungsweg zu verlängern, was zu einer längeren Ladezeit führt. Oder benötigt ein CDN keine TTL für die Domain?
Update1
Durch diese Frage fand ich Googles Dokument, in dem beschrieben wurde, wie die CDN-Leistung optimiert wurde. Es wurde nicht erklärt, wie das CDN im Allgemeinen funktioniert, aber es gab interessante Erklärungen wie die folgenden:
Wenn danach ein Client versucht, auf dem CDN gehosteten Inhalt abzurufen, wird der Client zu dem Knoten umgeleitet, der die geringste Latenz zu seinem Präfix aufweist. Diese Umleitung basiert jedoch auf dem Präfix, das der IP-Adresse des DNS-Nameservers entspricht, der die URL des Inhalts im Namen des Clients auflöst, der sich normalerweise zusammen mit dem Client befindet.
Dies bedeutet, dass Google zunächst die Latenz aller IP-Präfixe überprüft und eine DNS-Auflösungstabelle (?) Für alle verfügbaren Präfixe definiert. Und wenn ein Besucher die IP hat, wird die IP 198.51.100.231
des Google-Servers verwendet, die für das Präfix festgelegt ist 198.51.100.0
. Aber noch einmal: Woher weiß Googles DNS, welche IP der Besucher verwendet? Die meisten Besucher lösen die Domain von Google über ihren Internetprovider auf und dadurch erfolgt die Auflösung über diese externen DNS-Server oder nicht?
Als zusätzliches Beispiel: Wenn ich eine DNS-Auflösung für die Domain facebook.com
mit verschiedenen Online-Tools (gehostet in verschiedenen Ländern) starte, wird sie in verschiedene IPs mit verschiedenen Domains aufgelöst, wie z.
- 31.13.92.36 Rückseite: edge-star-mini-shv-01-frt3.facebook.com
- 31.13.76.68 Rückseite: edge-star-mini-shv-01-sea1.facebook.com
- 31.13.69.228 Rückseite: edge-star-mini-shv-01-iad3.facebook.com
- 157.240.2.35 Rückseite: edge-star-mini-shv-01-ort2.facebook.com
Danach dachte ich, es könnte vom Standort des vom Besucher verwendeten DNS-Servers abhängen, aber ich versuchte es mit meinem eigenen (Deutsche Telekom, Deutschland), Googles (8.8.8.8) und einem großen aus Frankreich (Orange), und alle kehrten für facebook.com
den IP 31.13.92.36
.
Antworten:
Ok, es scheint, ich kann jetzt eine grobe Antwort auf meine eigene Frage geben. Anurag Bhatia sagt, dass es zwei Methoden gibt, wie ein CDN funktioniert:
DNS
Nehmen wir an, wir haben einen Server mit der IP
1.2.3.4
in den USA und einen Cache-Server mit der IP2.3.4.5
in Deutschland. Jetzt versucht ein Besucher, die Domain aufzulösenexample.org
. Wenn er seine Netzwerkeinstellungen nicht geändert hat, verwendet er den DNS-Server seines Internetdienstanbieters (ISP). Und dieser ISP fragt jetztdns1.example.com
(der Nameserver der Domain) nach der IP. Jetzt kommt es auf den Standort des ISP an. Wenn es sich in Deutschland befindet,dns1.example.com
kehrt es zurück2.3.4.5
und wenn es sich in den USA befindet, kehrt es zurück1.2.3.4
.Diese Methode kann jedoch einen Nachteil haben: Jedes Mal, wenn ein Benutzer seine Netzwerkeinstellungen ändert und einen inkompatiblen EDNS0- DNS-Anbieter ( siehe IETF-Entwurf) verwendet (z. B. den zentralen DNS-Server eines Unternehmens)
dns1.example.com
, antwortet dieser erneut mit der IP- Adresse , die diesem DNS am nächsten liegt Standorte, aber diesmal befindet sich der Besucher höchstwahrscheinlich an einem anderen Standort, was zu einer höheren Latenz führt.EDNS0-kompatible DNS-Anbieter geben Informationen über den Benutzer an den autorisierenden DNS-Server weiter. Der autorisierende DNS-Server kann also mit der IP neben dem Standort des Benutzers antworten:
Anycast
Ich verstehe Anycast wegen BGP usw. nicht wirklich, aber ich denke, die weitere Erklärung von Anurag Bhatia gibt eine Idee, wie es funktionieren könnte:
Anycast hat auch einen Nachteil: Das Routing ist flexibel. Während sich der Zielknoten zu Beginn einer TCP-Sitzung möglicherweise in Netzwerk A befindet, kann er sich in Netzwerk B ändern. Daher wird Anycast in der Praxis nur für UDP verwendet. UDP ist ein Protokoll ohne Sitzung.
Die meisten CDNs verwenden DNS für HTTP / HTTPS-Verkehr und Anycast für DNS-Anforderungen.
quelle
EDNS0
!