Was genau ist los, wenn ich in meinem Webbrowser zu localhost: 8080 gehe? (Apache tomcat)

11

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.

erweichen
quelle
2
Ich möchte Sie einladen, RFC 7230 zu lesen .
Michael Hampton
Sieht so aus, als wäre es eine lange Nacht;)
Erweichen

Antworten:

9

Was genau passiert, wenn ich meinen Webbrowser anweise, um zu localhost: 8080 zu wechseln?

  1. Sie veranlassen Ihren Webbrowser, Ihr Betriebssystem aufzufordern, den Hostnamen aufzulösen localhost. Betriebssysteme lösen normalerweise den Hostnamen localhostin 127.0.0.1Ihre Loopback-Schnittstelle auf.

  2. Jeder Hostname oder jede IP-Adresse, gefolgt von einem :und einer Portnummer wie, :8080weist 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/:80und http://127.0.0.1/jeweils eine Verbindung mit dem gleichen Server und Port, so ist http://localhost:8080/und http://127.0.0.1:8080/auch auf die gleiche IP - Adresse verbinden , aber auf TCP - Port 8080

Zusä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: localhostoder Host: 127.0.0.1darin. 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?

  1. Auf Unix-Systemen oder Unix-ähnlichen Betriebssystemen wie Linux oder Freebsd lautet die Datei / etc / hosts und enthält wahrscheinlich folgende Zeilen:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. Unter Windows hat c:\windows\system32\drivers\etc\hostsund wird die Datei normalerweise eine ähnliche Zeile haben:

    127.0.0.1   localhost
    

Zusätzlicher Hinweis: Wenn Sie möchten, können Sie Ihrer Hosts-Datei folgende Zeilen hinzufügen:

127.0.0.1     localhost
127.0.0.1     developer.yourdomain.com
# Deny Browser Request For These Sites
127.0.0.2     www.spam.advertisements.com
127.0.0.2     super.ads.com
# Block These Sites
127.0.0.3     www.dont.go.here.com
127.0.0.3     nsfw.stuff.com 
  • 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.

Keith Reynolds
quelle
Erklärt nichts. Sehr oberflächlich
Grün
@Green was genau hast du gesucht? Der in eine Adresse aufgelöste Localhost-Name und die TCP-Portnummer wurden behandelt. Ich habe nicht behandelt: Wie verschiedene Server mit der Auflistung von Ports umgehen, Serverpools mit mehreren Verbindungen umgehen, wie Webserver konfiguriert werden, wie die TCP-Kommunikation funktioniert, wie die vollständigen HTTP-Header erklärt werden oder wie die Namensauflösung für Domänen funktioniert, die nicht in Hosts gefunden werden Datei, würde jeder weit über den Rahmen der Frage hinausgehen.
Keith Reynolds
1

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.

  1. 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.

  2. 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).

Barry Pollard
quelle
1

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.

Ali Pandidan
quelle
0

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 ...

narrsf
quelle