Question Que se passe-t-il exactement quand je vais sur localhost: 8080 dans mon navigateur Web? (Apache Tomcat)


J'ai passé ma carrière à faire toute la programmation d'applications locales (applications C ++ et autres). Cependant, j'essaie de me plonger dans le monde Web. J'utilise Eclipse (Mars) et Apache Tomcat 8.0.23 pour essayer de configurer un environnement dans lequel je peux expérimenter et apprendre la programmation côté serveur (JSP, PHP, etc.). J'ai tout configuré pour que lorsque je tape

localhost:8080

dans mon navigateur, il est dirigé vers la page tomcat correcte. Je sais que cela est probablement très simple, mais cela me blesse un peu ici.

Qu'est-ce qui se passe exactement quand je tape localhost?

D'où vient la page tomcat si ce n'est Internet? Je suis presque sûr que les données proviennent d'un serveur, qui, grâce à Tomcat, se trouve sur mon PC, mais comment mon navigateur a-t-il su où trouver les informations juste à partir de localhost: 8080?

Je suppose que 8080 est un port ou quelque chose du genre, mais je ne suis pas vraiment sûr de cela non plus et si c'est un port, je ne suis pas vraiment sûr de ce que cela signifie.

En gros, tout ce que je sais (je pense ...) sur le développement Web côté serveur, c’est que, dans le développement Web html / css pur, tout le travail est effectué localement une fois que tout est téléchargé, mais avec les serveurs, une partie du travail (à l’intérieur de certains délimiteurs) va le serveur et revient injecté dans le code HTML sous une forme différente (un peu comme l'envoi de données à une fonction en C ++ et le renvoi de données différentes), qui est ensuite redirigé localement vers la page.


8
2017-07-01 02:16


origine


Je voudrais vous inviter à lire RFC 7230. - Michael Hampton♦
On dirait que c'est gunna être une longue nuit;) - softeng


Réponses:


Que se passe-t-il exactement lorsque je dirige mon navigateur Web vers localhost: 8080?

  1. Vous faites en sorte que votre navigateur Web demande à votre système d'exploitation de résoudre le nom d'hôte localhost. Les systèmes d'exploitation vont normalement résoudre le nom d'hôte localhost à 127.0.0.1, votre interface de bouclage.

  2. Tout nom d’hôte ou adresse IP suivi d’un : et un numéro de port comme :8080 indique au navigateur de se connecter à ce port TCP au lieu du port de serveur Web par défaut 80.

    Tout comme http://localhost:80/, http://localhost/, http://127.0.0.1/:80, et http://127.0.0.1/ chacun se connecter au même serveur et au même port, il en va de même http://localhost:8080/ et http://127.0.0.1:8080/ connectez-vous également à la même adresse IP mais sur le port TCP 8080

Remarque additionnelle: Dans HTTP / 1.1, même si le navigateur Web se connecte à la même adresse IP et au même port, il existe une légère différence entre localhost et 127.0.0.1. En fonction de ce qui se trouve dans la barre d’adresse, votre navigateur enverra un champ d’en-tête de demande avec Host: localhost ou Host: 127.0.0.1 en elle. Lorsqu'un serveur Web est correctement configuré, le champ En-tête de l'hôte du navigateur permet à un seul serveur Web d'écouter sur un seul port d'adresse IP et de servir des pages Web différentes pour de nombreux domaines correspondant à la même adresse IP.

Comment le système d'exploitation résout-il généralement les noms d'hôte tels que localhost?

  1. Sur les systèmes Unix ou les systèmes d’exploitation Unix tels que Linux ou Freebsd, le fichier est / etc / hosts et est susceptible de comporter des lignes telles que:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. Sur Windows, le fichier est c:\windows\system32\drivers\etc\hosts et aura généralement une ligne similaire:

    127.0.0.1   localhost
    

Remarque additionnelle: Si vous le souhaitez, vous pouvez ajouter des lignes à votre fichier hosts de la manière suivante:

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 
  • L'URL (Uniform Resource Locator) http://developer.yourdomain.com:8080/ dans la barre d'adresse de votre navigateur, demande au navigateur Web d'établir une connexion TCP avec le port 8080 de votre adresse de bouclage locale 127.0.0.1.

  • En outre, selon rfc1700 page 4 toute adresse dans la plage 127.0.0.0/8 est également une adresse de bouclage. Ainsi, un serveur Web correctement configuré exécuté sur votre ordinateur pourrait refuser toute demande sur le port 127.0.0.2 tout en donnant un message générique "Vous ne devriez pas y aller. Le site est bloqué" pour les connexions le 127.0.0.3.

D'où vient la page tomcat?

Apache Tomcat est un serveur qui écoute sur un port et exécute des programmes Java qui génèrent du contenu à envoyer à votre navigateur.


6
2017-07-01 02:47



N'explique rien. Très superficiel - Green
@ Green que recherchiez-vous spécifiquement? Le nom de l’hôte local qui se résolvait en une adresse et le numéro de port TCP étaient couverts. Je n'ai pas abordé le sujet suivant: comment différents serveurs gèrent la liste des ports, les pools de serveurs gèrent plusieurs connexions, comment configurer les serveurs Web, le fonctionnement interne des communications TCP, l'explication complète des en-têtes HTTP ou le fonctionnement de la résolution de noms pour les domaines non trouvés dans les hôtes fichier, chacun irait bien au-delà du champ de la question. - Keith Reynolds


Lorsque vous tapez www.google.com dans votre navigateur Web, il ouvre une connexion sur le port 80 par défaut vers le serveur Google (via une recherche DNS pour savoir quelle adresse IP www.google.com est) et demande la page Web. Le serveur Google renvoie une page Web que votre navigateur affiche à l'écran (généralement en effectuant d'autres appels d'images, de CSS et de JavaScript).

Quand vous allez à localhost: 8080 c'est exactement la même chose. Le nom du serveur Localhost est toujours résolu sur la machine sur laquelle vous travaillez et utilise la fausse adresse IP de 127.0.0.1 (votre ordinateur aura deux adresses IP - celle fictive de chaque ordinateur et la vraie). Vous devez donc avoir une instance Tomcat exécutant localement à l'écoute des connexions sur le port 8080.

Pourquoi le port 8080 plutôt que le port http par défaut 80? Eh bien, c'est au cas où vous avez déjà un serveur Web en place.

Vous avez généralement des serveurs Web et des serveurs d'applications.

  1. Les serveurs Web (comme Apache httpd) servent des pages statiques. En fait, c'est comme un serveur FTP à sens unique. Vous ouvrez une connexion TCP et demandez un fichier à l'aide des commandes HTTP (généralement GET). Le serveur Web renvoie un fichier HTML. Votre navigateur le télécharge, l’analyse, le détecte et a besoin d’autres images. Un serveur Web est très rapide, mais élimine les fichiers du disque local et les renvoie.

  2. Un serveur d'applications (comme Tomcat ou JBoss) est similaire, à la différence près qu'il exécute un code pour "créer" la page que vous demandez plutôt que de la retirer directement du disque. Ce que cela fait pour créer cette page dépend de votre application. Il pourrait se connecter à une base de données, exécuter un programme, servir une page de manière aléatoire ... Etc. Lorsque vous vous connectez à votre banque en ligne, par exemple, le serveur d'applications configure une session pour vous, renvoie cet identifiant de session dans un cookie que votre Le navigateur renvoie en arrière chaque fois que vous faites une demande jusqu'à ce que vous vous déconnectiez. Donc, si vous demandez la page "mes soldes", la banque vérifie qui vous êtes en fonction de votre identifiant de session, puis accède à sa base de données pour obtenir votre nom et votre solde bancaire, puis crée une page disant "Bonjour John Smith, votre solde est de 100 €. " Les serveurs d'applications sont généralement plus lents, mais plus polyvalents que les serveurs Web.

Un serveur Web s'exécute dans le port par défaut de 80, puis AppServer sur un port secondaire (tel que 8080). Ainsi, les pages statiques sont servies rapidement et lorsque les utilisateurs cliquent sur un lien qui les dirige vers une page dynamique, le lien passe soit à 8080 (auquel répond le serveur d'applications), soit le serveur Web est configuré pour transmettre certaines requêtes au serveur d'applications (en particulier). Dans ce cas, il ressemble toujours au port par défaut 80 et semble donc un peu plus agréable pour l'utilisateur).

Bien sûr, il s’agit d’un aperçu de très haut niveau et rien n’est aussi noir et blanc. La plupart des serveurs Web peuvent créer du contenu dynamique en exécutant des scripts (généralement, CGI via des scripts utilisant perl ou PHP) et la plupart des serveurs d'applications peuvent également servir des fichiers simples, comme un serveur Web. En fait, il est possible de simplement exécuter un serveur d'applications et de changer le numéro de port de tomcat de 8080 à 80.

Enfin, de nombreuses applications cessent de servir des pages HTML complètes pour chaque demande au serveur d'applications (ce qui est considéré comme lent et inefficace) et répondent à la place avec uniquement les extraits de données utilisant AJAX pour envoyer du JSON ou du XML. Pour revenir au site Web d'origine www.google.com que vous avez utilisé pour saisir votre requête, cliquez sur Rechercher et obtenez une page de vos résultats. Désormais, au fur et à mesure que vous tapez, votre navigateur envoie continuellement à Google des requêtes AJAX qui répondent avec des résultats de recherche actualisés en fonction de ce que vous avez saisi jusqu'à ce que votre navigateur mette à jour la page. Cela signifie qu'il n'est pas nécessaire d'attendre que l'utilisateur soumette la page de manière plus rapide et plus dynamique (comme le serait une ancienne application de bureau d'école).


1
2017-07-01 07:00





Dans ce scénario, vous envoyez une requête pour résoudre localhost (127.0.0.1 (interface de bouclage)) et Apache est configuré pour écouter sur le port 8080; lorsque vous accédez à localhost sur le port 8080, il retourne le VirtualHost par défaut.


1
2017-07-01 07:27





Simplifier les choses, localhost en tant qu’adresse Web se connecte à votre ordinateur local. Dans ce cas, Apache est installé en tant que serveur Web.

La deuxième partie, 8080, signifie se connecter au port 8080 de cette adresse Web. Si vous ne le spécifiez pas, votre navigateur Web se connectera au port de serveur Web par défaut, le port 80.

Si vous connaissez déjà les adresses IP, localhost est un lien DNS fixe vers 127.0.0.1.

Devrait vous y rendre ...


0
2017-07-01 04:55