Ich möchte verstehen, wie der Ablauf abläuft, wenn wir eine URL in den Browser eingeben, und wie man mit Linux-Befehlen debuggt, wenn etwas nicht funktioniert.
Antwort1
[Ich] möchte verstehen, wie der Ablauf abläuft, wenn wir eine URL in den Browser eingeben
Siehe zum Beispiel
- MeinReise einer Web-Anfrage
- Frank'sWelche detaillierten Schritte des OSI-Modells sind für die Verbindung mit einer Website erforderlich?
und wie man debuggt
Die nützlichsten Werkzeuge sind wahrscheinlich
tcpdump
.nslookup
oder seine moderneren Äquivalentehost
unddig
.wget
odercurl
. Lesen Sie die Manpages, um nützliche Optionen zu finden wie--server-response
,--debug
,--verbose
,--no-dns-cache
Sie müssen jedoch zuerst die lokale Namensauflösung verstehen, da es Namensdienste gibt, die vor DNS verwendet werden können (z. B. lokale Hostdateien und in einigen seltenen Konfigurationen auch andere Netzwerkdienste wie NBNS, YP usw.). Ich würde mit dem Lesen beginnenman resolv.conf
Antwort2
Das Linux-System wird mit einer Reihe von Systembibliotheken ausgeliefert, darunter eine Implementierung von sys/sockets.h
für C-Programme, die dieBerkeley Sockets APIUndPOSIXStandards. Die POSIX-Spezifikation enthält die Definition einesMethodeaufgerufen, getaddrinfo()
das die IP-Adresse des Hosts an ein Programm zurückgibt, das sie benötigt. Jede Programmierlaufzeit (z. B.Python,perl,php, etc.) implementiert eigene Schnittstellen, über die siegetaddrinfo()aber die meisten von ihnen verwenden tatsächlich die Methode des Kernels, um eine DNS-Anfrage tatsächlich zu verarbeiten.
Eine Sockets-Verbindung umfasst eine Reihe von Methodenaufrufen, darunter socket(), bind(), connect() usw. Siehe meine AntwortHierdavon ab, wie diese Anrufe koordiniert werden, um eine Netzwerkverbindung herzustellen.
Die Fehlerbehebung bei der DNS-Auflösung auf der Clientseite läuft nur auf Server und Cache hinaus. Der Server antwortet mit der ihm bekannten Zieladresse, aber wenn es aus irgendeinem Grund (Geolokalisierung, Blacklisting usw.) nicht die gewünschte Adresse ist, können Sie den Server zu einem Server mit der gewünschten Adresse wechseln. Wenn Sie eine Verbindung zu einem Server mit der gewünschten Adresse herstellen, aber trotzdem ein schlechtes Ergebnis erhalten, kann dies an einer zwischengespeicherten Antwort auf Ihrem Host oder Upstream an einem Router oder Caching-Proxy liegen.