Ich habe meine Karriere mit der gesamten lokalen Anwendungsprogrammierung (C ++ - Anwendungen und so weiter) verbracht. Ich versuche jetzt jedoch, meine Füße in die Web-Welt zu graben. Ich verwende Eclipse (Mars) und Apache Tomcat 8.0.23, um zu versuchen, eine Umgebung einzurichten, in der ich mit serverseitiger Programmierung (JSP, PHP usw.) experimentieren und etwas darüber lernen kann. Ich habe alles so eingerichtet, dass beim Tippen
localhost:8080
In meinem Browser wird auf die richtige Tomcat-Seite verwiesen. Ich weiß, dass dies wahrscheinlich sehr einfach ist, aber es hat mich hier umgehauen.
Was genau ist los, wenn ich localhost eingebe?
Woher kommt die Tomcat-Seite, wenn nicht das Internet? Ich bin mir ziemlich sicher, dass die Daten von einem Server stammen, der sich dank Tomcat auf meinem PC befindet. Aber woher wusste mein Browser, wo die Informationen nur von localhost zu finden sind: 8080?
Ich nehme an, 8080 ist ein Port oder so, aber ich bin mir auch nicht sicher, und wenn es ein Port ist, bin ich mir nicht sicher, was das bedeutet.
Grundsätzlich weiß ich (glaube ich ...) über die serverseitige Webentwicklung nur, dass in der reinen HTML / CSS-Webentwicklung alle Arbeiten lokal ausgeführt werden, sobald alles heruntergeladen wurde, aber bei Servern geht ein Teil der Arbeit (innerhalb einiger Trennzeichen) an Der Server wird in einer anderen Form in das HTML eingefügt (ähnlich wie beim Senden von Daten an eine Funktion in C ++ und beim Zurückgeben anderer Daten), die dann wieder lokal auf die Seite gezogen werden.
Antworten:
Was genau passiert, wenn ich meinen Webbrowser anweise, um zu localhost: 8080 zu wechseln?
Sie veranlassen Ihren Webbrowser, Ihr Betriebssystem aufzufordern, den Hostnamen aufzulösen
localhost
. Betriebssysteme lösen normalerweise den Hostnamenlocalhost
in127.0.0.1
Ihre Loopback-Schnittstelle auf.Jeder Hostname oder jede IP-Adresse, gefolgt von einem
:
und einer Portnummer wie,:8080
weist den Browser an, anstelle des Standard-Webserver-Ports 80 eine Verbindung zu diesem TCP-Port herzustellen.So wie
http://localhost:80/
,http://localhost/
,http://127.0.0.1/:80
undhttp://127.0.0.1/
jeweils eine Verbindung mit dem gleichen Server und Port, so isthttp://localhost:8080/
undhttp://127.0.0.1:8080/
auch auf die gleiche IP - Adresse verbinden , aber auf TCP - Port 8080Zusätzlicher Hinweis: In HTTP / 1.1 gibt es einen kleinen Unterschied zwischen localhost und 127.0.0.1, obwohl der Webbrowser mit derselben IP-Adresse und demselben Port eine Verbindung zu vielen Webservern herstellt. Abhängig davon, was sich in der Adressleiste befindet, sendet Ihr Browser ein Anforderungsheaderfeld mit entweder
Host: localhost
oderHost: 127.0.0.1
darin. Wenn ein Webserver ordnungsgemäß konfiguriert ist, kann ein einzelner Webserver im Feld Host-Header des Browsers einen einzelnen IP-Adressport überwachen und verschiedene Webseiten für viele verschiedene Domänen bereitstellen, die in dieselbe IP-Adresse aufgelöst werden.Wie löst das Betriebssystem normalerweise Hostnamen wie localhost auf?
Auf Unix-Systemen oder Unix-ähnlichen Betriebssystemen wie Linux oder Freebsd lautet die Datei / etc / hosts und enthält wahrscheinlich folgende Zeilen:
Unter Windows hat
c:\windows\system32\drivers\etc\hosts
und wird die Datei normalerweise eine ähnliche Zeile haben:Zusätzlicher Hinweis: Wenn Sie möchten, können Sie Ihrer Hosts-Datei folgende Zeilen hinzufügen:
Der URL (Uniform Resource Locator)
http://developer.yourdomain.com:8080/
in der Adressleiste Ihres Browsers weist den Webbrowser an, eine TCP-Verbindung zu Port 8080 Ihrer lokalen Loopback-Adresse 127.0.0.1 herzustellen.Darüber hinaus ist gemäß rfc1700 Seite 4 jede Adresse im Bereich 127.0.0.0/8 auch eine Loopback-Adresse. Daher kann ein ordnungsgemäß konfigurierter Webserver, der auf Ihrem Computer ausgeführt wird, alle Anforderungen an Port 127.0.0.2 ablehnen, während die allgemeine Meldung "Sie sollten nicht hierher gehen. Die Site ist blockiert" für Verbindungen unter 127.0.0.3 angezeigt wird.
Woher kommt die Tomcat-Seite?
Apache Tomcat ist ein Server, der einen Port überwacht und Java-Programme ausführt, die Inhalte generieren, die an Ihren Browser gesendet werden.
quelle
Wenn Sie www.google.com in Ihren Webbrowser eingeben, wird über den Standardport 80 eine Verbindung zum Google-Server hergestellt (über eine DNS-Suche, um festzustellen, welche IP-Adresse www.google.com lautet) und die Webseite angefordert. Der Google-Server antwortet mit einer Webseite, die Ihr Browser auf dem Bildschirm zeichnet (normalerweise durch weitere Aufrufe von Bildern, CSS und JavaScript).
Wenn Sie zu localhost gehen: 8080 ist es genau das gleiche. Der Name des Localhost-Servers wird immer auf dem Computer aufgelöst, auf dem Sie ausgeführt werden, und verwendet die gefälschte IP-Adresse 127.0.0.1 (Ihr Computer hat zwei IP-Adressen - diese gefälschte, die jeder Computer hat, und die echte). Sie müssen also eine Tomcat-Instanz haben, die lokal ausgeführt wird und auf Verbindungen an Port 8080 wartet.
Warum Port 8080 anstelle des Standard-http-Ports 80? Nun, falls Sie bereits einen Webserver eingerichtet haben.
Normalerweise haben Sie Webserver und App-Server.
Webserver (wie Apache httpd) stellen statische Seiten bereit. Tatsächlich ist es wie ein ausgefallener Einweg-FTP-Server. Sie öffnen eine TCP-Verbindung und fordern mithilfe der HTTP-Befehle (normalerweise GET) eine Datei an. Der Webserver gibt eine HTML-Datei zurück und Ihr Browser lädt sie herunter und analysiert sie, sieht, dass er andere Bilder benötigt, und fordert diese an. Ein Webserver ist sehr schnell, hebt jedoch im Grunde genommen Dateien von der lokalen Festplatte ab und gibt sie zurück.
Ein App Server (wie Tomcat oder JBoss) ist ähnlich, außer dass er normalerweise Code ausführt, um die gewünschte Seite zu "erstellen", anstatt sie direkt von der Festplatte zu heben. Wie diese Seite erstellt wird, hängt von Ihrer Anwendung ab. Es könnte eine Verbindung zu einer Datenbank herstellen, ein Programm ausführen, zufällig eine Seite bereitstellen ... usw. Wenn Sie sich beispielsweise bei Ihrem Online-Banking anmelden, richtet der App-Server eine Sitzung für Sie ein und gibt diese Sitzungs-ID in einem Cookie zurück, das Sie Der Browser wird jedes Mal erneut gesendet, wenn Sie eine Anfrage stellen, bis Sie sich abmelden. Wenn Sie also nach der Seite "Mein Guthaben" fragen, sucht die Bank anhand Ihrer Sitzungs-ID, wer Sie sind, und ruft in ihrer Datenbank Ihren Namen und Ihr Bankguthaben auf. Anschließend wird eine Seite mit der Aufschrift "Hallo John Smith, Ihr Guthaben" erstellt ist 100 €. " App-Server sind normalerweise langsamer, aber vielseitiger als Webserver.
An vielen Orten wird ein WebServer im Standardport 80 und dann AppServer auf einem sekundären Port (z. B. 8080) ausgeführt. So werden statische Seiten schnell bereitgestellt, und wenn Benutzer auf einen Link klicken, der sie zu einer dynamischen Seite führt, geht der Link entweder zu 8080 (auf den der App-Server reagiert) oder der Webserver wird eingerichtet, um bestimmte Anforderungen an den App-Server weiterzuleiten (in In diesem Fall sieht es immer noch wie der Standardport 80 aus und sieht für den Benutzer etwas besser aus.
Natürlich ist dies eine Übersicht auf sehr hohem Niveau und nichts ist so schwarz und weiß. Die meisten Webserver können einige dynamische Inhalte erstellen, indem sie Skripte ausführen (normalerweise CGI über Skripte mit Perl oder PHP), und die meisten App-Server können auch einfache Dateien wie einen Webserver bereitstellen. Tatsächlich ist es möglich, einfach einen App-Server auszuführen und die Tomcat-Portnummer von 8080 auf 80 zu ändern.
Schließlich entfernen sich viele Anwendungen von der Bereitstellung vollständiger HTML-Seiten für jede Anforderung an den App-Server (was als langsam und ineffizient angesehen wird) und antworten stattdessen nur mit den Datenausschnitten, die AJAX zum Senden von JSON oder XML verwenden. Zurück zum ursprünglichen www.google.com, mit dem Sie Ihre Suchanfrage eingegeben haben, klicken Sie auf Suchen und erhalten Sie eine Seite mit Ihren Ergebnissen. Stattdessen sendet Ihr Browser während der Eingabe kontinuierlich AJAX-Anfragen an Google, die auf der Grundlage der bisher eingegebenen Daten mit aktuellen Suchergebnissen antworten. Anschließend aktualisiert Ihr Browser die Seite. Sie müssen nicht warten, bis der Benutzer die Seite so schnell und dynamischer an den Benutzer gesendet hat (wie dies bei einer Desktop-App der alten Schule der Fall wäre).
quelle
In diesem Szenario senden Sie eine Anforderung zum Auflösen von localhost (127.0.0.1 (Loopback-Schnittstelle)). Apache ist so konfiguriert, dass Port 8080 überwacht wird. Wenn Sie auf localhost auf Port 8080 zugreifen, wird der Standard-VirtualHost zurückgegeben.
quelle
Um es einfach zu machen, stellt localhost als Webadresse eine Verbindung zu Ihrem lokalen Computer her. In diesem Fall ist Apache als Webserver installiert.
Der zweite Teil: 8080 bedeutet, eine Verbindung zu Port 8080 dieser Webadresse herzustellen. Wenn Sie dies nicht angeben, stellt Ihr Webbrowser eine Verbindung zum Standard-Webserver-Port her, nämlich Port 80.
Wenn Sie noch keine IP-Adressen haben, ist localhost eine feste DNS-Verbindung zu 127.0.0.1.
Sollte dich dorthin bringen ...
quelle