Einige Webserver geben beim Zugriff über ihre IP-Adresse den Fehler zurück, dass der direkte Zugriff auf die IP-Adresse nicht zulässig ist.
Ich habe mich schon seit einiger Zeit gefragt, wie das funktioniert. Ich meine, löst der Browser die IP-Adresse nicht immer auf und stellt eine Verbindung her? Überspringt "Direkter IP-Adresszugriff" nicht einfach DNS? Woher weiß der Remote-Server überhaupt, dass Sie DNS übersprungen haben?
networking
dns
apache-http-server
ip
http
Joseph A.
quelle
quelle
Antworten:
Um Ihre Frage zu beantworten, wie es weiß , hat es damit zu tun, was Ihr Browser an den Server sendet.
Sie haben Recht, dass das System es immer in eine IP-Adresse auflöst, aber der Browser sendet die URL, auf die Sie zugreifen wollten, im HTTP-Header.
Hier ist ein Beispiel-Header, den ich online gefunden habe und der so geändert wurde, dass er aussieht, als hätten Sie Firefox unter Windows verwendet und
apple.com
in die Adressleiste eingegeben :So würde der Header aussehen, wenn Sie seine IP-Adresse verwenden:
Beide werden über einen Socket an dieselbe IP-Adresse gesendet, aber der Browser teilt dem Server mit, auf was zugegriffen wurde.
Warum? Da Webserver mit derselben IP-Adresse möglicherweise mehrere Sites hosten und für jede unterschiedliche Seiten bereitstellen. Es kann nicht unterscheiden, wer welche Seite anhand der IP-Adresse haben möchte, da alle dieselbe Seite haben - es kann sie jedoch anhand des HTTP-Headers unterscheiden.
quelle
host
Kopfzeile angezeigt. Siehe dieses Beispiel .Mit dem HTTP 1.1-Protokoll (die frühere HTTP 1.0-Version ist seit geraumer Zeit veraltet und wird daher wahrscheinlich nicht von einer neueren Version eines Browsers verwendet) wurde der
host
Header eingeführt. Für HTTP 1.1 ist dies eine erforderliche Kopfzeile, die von einem Browser ausgegeben werden muss . Der Domainname wird vom Browser in diese Zeile eingefügt, zHost: example.com
. Der Webserver weiß also, auf welche Website der Browser von dieser Leitung aus zugreifen möchte. Da ein Webserver möglicherweise Dutzende von Websites unterstützt, ist diese Zeile wichtig, um festzustellen, auf welcher Website sich die angeforderte Seite befindet. Angenommen, der Browser möchte auf die Homepage einer Site auf example.com zugreifen. Er gibt die folgende Zeile an den Server aus, wenn eine Verbindung zum Server hergestellt wird:Diese Zeile gibt an, für welchen Browser das Stammdokument abgerufen werden soll, dh "/" für die Website. Wenn Sie zugreifen wollten
/somedir/testpage.html
,GET /somedir/testpage.html
wäre in der "get" -Zeile. Der Zeile folgt die folgende Zeile:Wenn der Webserver also die Webseiten example.com, someothersite.com, yetanothersite.org usw. unterstützt, weiß er, dass er die Hauptseite für example.com zurückgeben sollte. Wenn diese Zeile nicht angezeigt wird oder kein Domain-Name in der
Host
Zeile aufgeführt ist, weiß das Programm nicht, welche Homepage der Website zurückgegeben werden soll. Daher wird möglicherweise stattdessen eine Fehlermeldung oder die Homepage einer "Standard" -Site für den Server zurückgegeben.Sie können dieselben Befehle eingeben, die ein Browser unter Verwendung des Telnet- Protokolls ausgibt , z. B.
telnet example.com 80
über eine Linux-Shell-Eingabeaufforderung oder ein Apple OS X- Terminalfenster , um eine Verbindung zum Standard-HTTP-Port 80 herzustellen. Schritte hierzu finden Sie unter Testen des Zugriffs auf eine Website mit PuTTY dazu mit PuTTY auf einem Windows-System.quelle
Dies liegt am
Host:
HTTP-Header. Dies ist sehr nützlich, um mehrere Websites unter derselben IP-Adresse zu hosten. Beispielsweise haben http://www.k7dxs.net/ und http://www.philipgrimes.com/ dieselbe IP-Adresse. Aufgrund desHost:
Headers können sie jedoch zwei verschiedene Sites anzeigen.Bei HTTPS wird, wie @Toothbrush betont hat, die TLS-Servername-Angabe verwendet, da der Host-Header Teil der verschlüsselten Anforderung ist und der Server nicht weiß, welches Zertifikat ohne diese Angabe angeboten werden soll.
Unterhaltsames Experiment: Holen Sie sich Manipulationsdaten für Firefox (für Chrome konnte ich keine Entsprechung finden) und beginnen Sie mit Manipulationen. Öffnen Sie http://slipstation.com/ und bearbeiten Sie den
Host:
Header in der Anforderung, http://www.zombo.com/ zu sein . Sie sehen eine möglicherweise vertraute Website, auf der alles möglich ist.quelle
Der Webserver kann so konfiguriert werden, dass nur Verbindungen zu einer bestimmten Domäne oder Unterdomäne akzeptiert werden. Es können mehrere Domains gehostet werden.
Was der Webserver bei Verwendung einer direkten IP-Adresse tut, ist konfigurierbar. Im Fall von Apache wird standardmäßig der vhost mit dem ersten Namen von den aktivierten Sites aufgerufen, die alphanumerisch sortiert sind.
Dies ist der relevanteste Teil der Apache-Dokumentation, den ich nach einer kurzen Suche gefunden habe:
https://httpd.apache.org/docs/current/vhosts/name-based.html
quelle