J'ai passé ma carrière à faire toute la programmation d'applications locales (applications C ++ et ainsi de suite). Cependant, j'essaie de creuser mes pieds dans le monde du Web. J'utilise Eclipse (Mars) et Apache Tomcat 8.0.23 pour essayer de mettre en place un environnement dans lequel je peux expérimenter et en apprendre davantage sur la programmation côté serveur (JSP, PHP, etc.). J'ai tout configuré de telle sorte que lorsque je tape
localhost:8080
dans mon navigateur, il dirige vers la page tomcat correcte. Je sais que c'est probablement très simple, mais c'est un peu époustouflant ici.
Que se passe-t-il exactement lorsque je tape localhost?
D'où vient la page Tomcat sinon 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 uniquement auprès de localhost: 8080?
Je suppose que 8080 est un port ou quelque chose, mais je ne suis vraiment pas sûr de cela non plus et si c'est un port, je ne suis pas vraiment sûr de ce que cela signifie.
Fondamentalement, tout ce que je sais (je pense ...) sur le développement Web côté serveur 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) se le serveur et revient injecté dans le html sous une forme différente (un peu comme l'envoi de données à une fonction en C ++ et des données différentes retournées), qui est ensuite redirigé localement vers la page.
Réponses:
Que se passe-t-il exactement lorsque je demande à mon navigateur Web d'accéder à localhost: 8080?
Vous demandez à votre navigateur Web de demander à votre système d'exploitation de résoudre le nom d'hôte
localhost
. Les systèmes d'exploitation résolvent normalement le nomlocalhost
d' hôte en127.0.0.1
, votre interface de bouclage.Tout nom d'hôte ou adresse IP suivi d'un
:
et d'un numéro de port comme:8080
indique au navigateur de se connecter à ce port TCP au lieu du port 80 par défaut du serveur Web.Tout comme
http://localhost:80/
,http://localhost/
,http://127.0.0.1/:80
ethttp://127.0.0.1/
chaque connexion au même serveur et le port, il en vahttp://localhost:8080/
ethttp://127.0.0.1:8080/
également se connecter à la même adresse IP , mais sur le port TCP 8080Remarque supplémentaire: dans HTTP / 1.1, même si le navigateur Web se connecte à la même adresse IP et au même port, à de nombreux serveurs Web, il existe une légère différence entre localhost et 127.0.0.1. Selon ce qui se trouve dans la barre d'adresse, votre navigateur enverra un champ d'en-tête de demande avec
Host: localhost
ouHost: 127.0.0.1
en son sein. Lorsqu'un serveur Web est correctement configuré, le champ d'en-tête Hôte du navigateur permet à un seul serveur Web d'écouter sur un seul port d'adresse IP et de servir différentes pages Web pour de nombreux domaines différents qui se résolvent à la même adresse IP.Comment le système d'exploitation résout-il généralement les noms d'hôte comme localhost?
Sur les systèmes Unix ou Unix comme OS tels que Linux ou Freebsd, le fichier est / etc / hosts, et est susceptible d'avoir des lignes comme:
Sous Windows, le fichier est
c:\windows\system32\drivers\etc\hosts
et aura généralement une ligne similaire:Remarque supplémentaire: Si vous le souhaitez, vous pouvez ajouter des lignes à votre fichier d'hôtes comme:
L'URL (Uniform Resource Locator)
http://developer.yourdomain.com:8080/
dans la barre d'adresse de votre navigateur, indique au navigateur Web d'établir une connexion TCP avec le port 8080 de votre adresse de bouclage locale 127.0.0.1.De plus, 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é fonctionnant 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 aller ici. Le site est bloqué" pour les connexions sur 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.
la source
Lorsque vous tapez www.google.com dans votre navigateur Web, il ouvre une connexion sur le port par défaut 80 au serveur Google (via une recherche DNS pour voir quelle adresse IP www.google.com est) et demande la page Web. Le serveur Google répond par une page Web que votre navigateur dessine à l'écran (généralement en effectuant d'autres appels à des images, CSS et JavaScript).
Lorsque vous allez sur localhost: 8080, c'est exactement la même chose. Le nom du serveur Localhost résout toujours la machine sur laquelle vous exécutez et utilise la fausse adresse IP de 127.0.0.1 (votre ordinateur aura deux adresses IP - cette fausse que chaque ordinateur possède et la vraie). Vous devez donc disposer d'une instance Tomcat exécutée 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 dans le cas où vous avez déjà un serveur Web en place.
En règle générale, vous disposez de serveurs Web et de serveurs d'applications.
Les serveurs Web (comme Apache httpd) fournissent des pages statiques. En fait, c'est comme un serveur FTP unidirectionnel sophistiqué. 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 et votre navigateur le télécharge et l'analyse, voit qu'il a besoin d'autres images et les demande. Un serveur Web est très rapide mais soulève essentiellement les fichiers du disque local et les renvoie.
Un serveur d'applications (comme Tomcat ou JBoss) est similaire, sauf qu'il exécute généralement du code pour «créer» la page que vous demandez, plutôt que de la soulever directement du disque. Ce qu'il fait pour créer cette page dépend de votre application. Il peut se connecter à une base de données, exécuter un programme, servir une page au hasard ... Etc. Lorsque vous vous connectez à vos services bancaires en ligne par exemple, le serveur d'application établit une session pour vous, renvoie cet identifiant de session dans un cookie que votre le navigateur renvoie à chaque fois que vous faites une demande jusqu'à ce que vous vous déconnectiez. Donc, si vous demandez la page "mes soldes", la banque recherche qui vous êtes en fonction de votre identifiant de session, puis va dans sa base de données pour obtenir votre nom et votre solde bancaire, puis crée une page disant "Salut John Smith, votre solde est de 100 €. " Les serveurs d'applications sont généralement plus lents, mais plus polyvalents que les serveurs Web.
De nombreux endroits ont un WebServer fonctionnant dans le port par défaut de 80, puis AppServer fonctionnant sur un port secondaire (comme 8080). Ainsi, les pages statiques sont servies rapidement et lorsque les utilisateurs cliquent sur un lien qui les mène à une page dynamique, le lien va au 8080 (auquel le serveur d'applications répond) ou le serveur Web est configuré pour transmettre certaines demandes au serveur d'applications (dans auquel cas il ressemble toujours au port par défaut 80 et semble donc un peu plus agréable à l'utilisateur).
Bien sûr, c'est 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 she'll 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 d'exécuter simplement un serveur d'applications et de changer le numéro de port tomcat de 8080 à 80.
Enfin, de nombreuses applications s'éloignent de la diffusion de pages HTML complètes pour chaque demande au serveur d'application (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 JSON ou XML. Retour à l'original www.google.com que vous avez utilisé pour taper votre requête de recherche, appuyez sur Rechercher et obtenez une page de vos résultats. À la place, au fur et à mesure que vous tapez, votre navigateur envoie continuellement des demandes AJAX à Google qui répond avec des résultats de recherche à jour en fonction de ce que vous avez tapé jusqu'à présent, puis votre navigateur met à 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 pour l'utilisateur (comme le serait une application de bureau à l'ancienne).
la source
Dans ce scénario, vous envoyez une demande de résolution de localhost qui est 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 renvoie le VirtualHost par défaut.
la source
Pour simplifier, localhost en tant qu'adresse Web se connecte à votre machine locale, où 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, qui est le port 80.
Si vous utilisez encore des adresses IP, localhost est un lien DNS fixe vers 127.0.0.1.
Devrait vous y rendre ...
la source