Cosa succede esattamente quando vado su localhost: 8080 nel mio browser web? (Apache Tomcat)


11

Ho trascorso la mia carriera a programmare tutte le applicazioni locali (applicazioni C ++ e quant'altro). Ora sto provando a scavare i piedi nel mondo web. Sto usando Eclipse (Mars) e Apache Tomcat 8.0.23 per provare a impostare un ambiente in cui posso sperimentare e conoscere la programmazione lato server (JSP, PHP, ecc.). Ho impostato tutto in modo tale che quando scrivo

localhost:8080

nel mio browser indirizza alla pagina tomcat corretta. So che questo è probabilmente molto semplice, ma è un po 'strabiliante qui.

Cosa sta succedendo esattamente quando digito localhost?

Da dove proviene la pagina Tomcat se non Internet? Sono abbastanza sicuro che i dati provengano da un server, che grazie a Tomcat, è sul mio PC, ma come fa il mio browser a sapere dove trovare le informazioni solo da localhost: 8080?

Suppongo che 8080 sia una porta o qualcosa del genere, ma non ne sono nemmeno sicuro e se è una porta non sono davvero sicuro di cosa significhi.

Fondamentalmente tutto ciò che so (penso ...) sullo sviluppo web lato server è che nello sviluppo web puro html / css tutto il lavoro viene svolto localmente una volta scaricato tutto, ma con i server parte del lavoro (all'interno di alcuni delimitatori) si spegne a il server e ritorna iniettato nell'html in una forma diversa (molto simile all'invio di dati a una funzione in C ++ e alla restituzione di dati diversi), che viene quindi nuovamente disegnato nella pagina localmente.


2
Vorrei invitarti a leggere RFC 7230 .
Michael Hampton

Sembra che la pistola sia una lunga notte;)
softeng

Risposte:


9

Cosa sta succedendo esattamente quando indirizzo il mio browser Web a localhost: 8080?

  1. Stai causando al tuo browser web di chiedere al tuo sistema operativo di risolvere il nome host localhost. I sistemi operativi normalmente risolvere il nome host localhostper 127.0.0.1, l'interfaccia loopback.

  2. Qualsiasi nome host o indirizzo IP seguito da un :e un numero di porta come :8080indica al browser di connettersi a quella porta TCP anziché alla porta 80 del server Web predefinita.

    Proprio come http://localhost:80/, http://localhost/, http://127.0.0.1/:80, e http://127.0.0.1/ogni connessione allo stesso server e la porta, così fa http://localhost:8080/e http://127.0.0.1:8080/anche collegare allo stesso indirizzo IP, ma sulla porta TCP 8080

Nota aggiuntiva: In HTTP / 1.1, anche se il browser Web si collega allo stesso indirizzo IP e porta, a molti server Web, esiste una leggera differenza tra localhost e 127.0.0.1. A seconda di ciò che si trova nella barra degli indirizzi, il browser invierà un campo di intestazione della richiesta con Host: localhosto Host: 127.0.0.1all'interno. Quando un server Web è configurato correttamente, il campo di intestazione Host del browser consente a un singolo server Web di ascoltare su una singola porta dell'indirizzo IP e servire pagine Web diverse per molti domini diversi che si risolvono nello stesso indirizzo IP.

In che modo il sistema operativo in genere risolve i nomi host come localhost?

  1. Su sistemi Unix o Unix come SO come Linux o Freebsd, il file è / etc / hosts e probabilmente avrà linee come:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. Su Windows, il file è c:\windows\system32\drivers\etc\hostse di solito avrà una linea simile:

    127.0.0.1   localhost
    

Nota aggiuntiva: se lo desideri, puoi aggiungere righe al file hosts come:

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 
  • Il localizzatore di risorse (URL) uniforme http://developer.yourdomain.com:8080/nella barra degli indirizzi del browser, indirizza il browser Web a stabilire una connessione TCP alla porta 8080 dell'indirizzo di loopback locale 127.0.0.1.

  • Inoltre, secondo rfc1700 pagina 4, qualsiasi indirizzo nell'intervallo 127.0.0.0/8 è anche un indirizzo di loopback. Pertanto, un server Web correttamente configurato in esecuzione sul computer potrebbe rifiutare tutte le richieste sulla porta 127.0.0.2 fornendo un messaggio generico "Non dovresti andare qui. Il sito è bloccato" per le connessioni su 127.0.0.3.

Da dove viene la pagina Tomcat?

Apache Tomcat è un server che è in ascolto su una porta ed esegue programmi Java che generano contenuti da inviare al browser.


Non spiega nulla. Molto superficiale
Green,

@Verde cosa stavi cercando specificamente? Sono stati coperti il ​​nome dell'host locale che si risolve in un indirizzo e il numero della porta TCP. Non ho trattato: come i vari server gestiscono l'elenco alla porta, i pool di server gestiscono connessioni multiple, come configurare i web server, il funzionamento interno delle comunicazioni TCP, la spiegazione completa delle intestazioni HTTP o come funziona la risoluzione dei nomi per i domini non trovati negli host file, ognuno sarebbe molto al di là dell'ambito della domanda.
Keith Reynolds,

1

Quando digiti www.google.com nel tuo browser web, si apre una connessione sulla porta predefinita 80 al server di Google (tramite una ricerca DNS per vedere quale indirizzo IP è www.google.com) e richiede la pagina web. Il server di Google risponde con una pagina web che il tuo browser disegna sullo schermo (di solito effettuando ulteriori chiamate per immagini, CSS e JavaScript).

Quando vai su localhost: 8080 è esattamente la stessa cosa. Il nome del server Localhost si risolve sempre sulla macchina su cui stai eseguendo e utilizza il falso indirizzo IP di 127.0.0.1 (il tuo computer avrà due indirizzi IP: questo falso che ogni computer ha e quello reale). Quindi è necessario disporre di un'istanza Tomcat in esecuzione in ascolto locale per le connessioni sulla porta 8080.

Perché la porta 8080 anziché la porta http 80 predefinita? Bene, nel caso in cui tu abbia già un server web in atto.

In genere hai server Web e server di app.

  1. I server Web (come Apache httpd) forniscono pagine statiche. In effetti è come un elegante server FTP unidirezionale. Si apre una connessione TCP e si richiede un file utilizzando i comandi HTTP (in genere GET). Il server web restituisce un file HTML e il tuo browser lo scarica e lo analizza, vede che ha bisogno di altre immagini e le richiede. Un server web è molto veloce ma sostanzialmente solleva i file dal disco locale e li restituisce.

  2. Un App Server (come Tomcat o JBoss) è simile, tranne che in genere esegue il codice per "creare" la pagina richiesta, anziché sollevarla direttamente dal disco. Quello che fa per creare quella pagina dipende dalla tua applicazione. Potrebbe connettersi a un database, eseguire un programma, servire in modo casuale una pagina ... Ecc. Quando accedi al tuo banking online, ad esempio, il server delle app imposta una sessione per te, restituisce quell'ID sessione in un cookie che il tuo il browser reinvia ogni volta che si effettua una richiesta fino a quando non si effettua il logout. Quindi, se chiedi la pagina "i miei saldi", la banca cerca chi sei in base al tuo ID di sessione, quindi va al suo database per ottenere il tuo nome e il saldo della banca, quindi crea una pagina che dice "Ciao John Smith, il tuo saldo è di € 100 ". I server delle app sono in genere più lenti, ma più versatili dei server Web.

Molte posizioni hanno un WebServer in esecuzione nella porta predefinita di 80 e quindi AppServer in esecuzione su una porta secondaria (come 8080). Quindi le pagine statiche vengono servite rapidamente e quando gli utenti fanno clic su un collegamento che le porta a una pagina dinamica, il collegamento passa a 8080 (a cui risponde il server delle app) o viene impostato il server Web per inoltrare determinate richieste al server delle app (in in questo caso sembra ancora la porta 80 predefinita e quindi un po 'più bella per l'utente).

Naturalmente questa è una panoramica di altissimo livello e nulla è così bianco e nero. La maggior parte dei server web può creare alcuni contenuti dinamici eseguendo script (in genere CGI tramite script di lei usando perl o PHP) e la maggior parte dei server di app può anche servire file semplici come un server web. In effetti è possibile eseguire solo un server app e modificare il numero di porta Tomcat da 8080 a 80.

Infine, molte applicazioni si stanno allontanando dal servire pagine HTML complete per ogni richiesta al server delle app (considerato lento e inefficiente) e stanno invece rispondendo con i soli frammenti di dati utilizzando AJAX per inviare JSON o XML. Torna al www.google.com originale che hai usato per digitare la query di ricerca, premere Cerca e ottenere una pagina dei risultati. Ora invece, mentre digiti, il tuo browser invia continuamente richieste AJAX a Google che risponde con risultati di ricerca aggiornati in base a ciò che hai digitato finora e quindi il tuo browser aggiorna la pagina. Ciò significa che non è necessario attendere che l'utente invii la pagina in modo più rapido e dinamico per l'utente (come sarebbe un'app desktop di vecchia scuola).


1

In questo scenario, si invia una richiesta per risolvere localhost che è 127.0.0.1 (interfaccia loopback) e Apache è configurato per l'ascolto sulla porta 8080, quando si accede a localhost sulla porta 8080 restituisce il VirtualHost predefinito.


0

Semplificando, localhost come indirizzo web si collega al tuo computer locale, dove in questo caso hai Apache installato come web server.

La seconda parte, 8080, significa connettersi alla porta 8080 di quell'indirizzo web. Se non lo si specifica, il browser Web si connetterà alla porta del server Web predefinita, che è la porta 80.

Se sei ancora negli indirizzi IP, localhost è un collegamento DNS fisso a 127.0.0.1.

Dovresti portarti lì ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.