¿Qué sucede exactamente cuando voy a localhost: 8080 en mi navegador web? (Apache Tomcat)


11

He pasado mi carrera haciendo toda la programación de aplicaciones locales (aplicaciones C ++ y demás). Sin embargo, estoy tratando de profundizar en el mundo web ahora. Estoy usando Eclipse (Mars) y Apache Tomcat 8.0.23 para intentar configurar un entorno en el que pueda experimentar y aprender sobre la programación del lado del servidor (JSP, PHP, etc.). Lo tengo todo configurado de tal manera que cuando escribo

localhost:8080

en mi navegador dirige a la página correcta de tomcat. Sé que esto es probablemente muy simple, pero me está volviendo loco aquí.

¿Qué sucede exactamente cuando escribo localhost?

¿De dónde viene la página de Tomcat si no es Internet? Estoy bastante seguro de que los datos provienen de un servidor que, gracias a Tomcat, está en mi PC, pero ¿cómo sabía mi navegador dónde encontrar la información solo de localhost: 8080?

Supongo que 8080 es un puerto o algo así, pero tampoco estoy seguro de eso y si es un puerto, no estoy seguro de lo que eso significa.

Básicamente, todo lo que sé (creo ...) sobre el desarrollo web del lado del servidor es que en el desarrollo web puro html / css todo el trabajo se realiza localmente una vez que todo se descarga, pero con los servidores parte del trabajo (dentro de algunos delimitadores) se va a el servidor y vuelve inyectado en el html en una forma diferente (al igual que el envío de datos a una función en C ++ y la devolución de datos diferentes), que luego se vuelve a atraer a la página localmente.


2
Me gustaría invitarle a leer RFC 7230 .
Michael Hampton

Parece que va a ser una larga noche;)
softeng

Respuestas:


9

¿Qué sucede exactamente cuando dirijo mi navegador web para que vaya a localhost: 8080?

  1. Está causando que su navegador web le pida a su sistema operativo que resuelva el nombre de host localhost. Los sistemas operativos normalmente resolverán el nombre localhostde host en 127.0.0.1su interfaz de bucle de retorno.

  2. Cualquier nombre de host o dirección IP seguido de un :número de puerto y :8080le dice al navegador que se conecte a ese puerto TCP en lugar del puerto 80 predeterminado del servidor web.

    Así como http://localhost:80/, http://localhost/, http://127.0.0.1/:80, y http://127.0.0.1/cada conexión al mismo servidor y el puerto, también lo hace http://localhost:8080/y http://127.0.0.1:8080/también se conectan a la misma dirección IP, pero en el puerto TCP 8080

Nota adicional: en HTTP / 1.1, aunque el navegador web se conecta a la misma dirección IP y puerto, a muchos servidores web, existe una ligera diferencia entre localhost y 127.0.0.1. Dependiendo de lo que esté en la barra de direcciones, su navegador enviará un campo de encabezado de solicitud con Host: localhosto Host: 127.0.0.1dentro de él. Cuando un servidor web está configurado correctamente, el campo de encabezado Host del navegador permite que un solo servidor web escuche en un solo puerto de dirección IP y sirva diferentes páginas web para muchos dominios diferentes que se resuelven en la misma dirección IP.

¿Cómo suele resolver el sistema operativo los nombres de host como localhost?

  1. En sistemas Unix o Unix como SO como Linux o Freebsd, el archivo es / etc / hosts, y es probable que tenga líneas como:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. En Windows, el archivo es c:\windows\system32\drivers\etc\hostsy generalmente tendrá una línea similar:

    127.0.0.1   localhost
    

Nota adicional: si lo desea, puede agregar líneas a su archivo de hosts como:

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 
  • El localizador uniforme de recursos (URL) http://developer.yourdomain.com:8080/en la barra de direcciones de su navegador, le indica al navegador web que realice una conexión TCP al puerto 8080 de su dirección de bucle de retorno local 127.0.0.1.

  • Además, según la página 4 de rfc1700, cualquier dirección en el rango 127.0.0.0/8 también es una dirección de bucle invertido. Por lo tanto, un servidor web configurado correctamente que se ejecute en su computadora podría denegar todas las solicitudes en el puerto 127.0.0.2 al tiempo que da un mensaje genérico "No debe ir aquí. El sitio está bloqueado" para las conexiones en 127.0.0.3.

¿De dónde viene la página de Tomcat?

Apache Tomcat es un servidor que escucha en un puerto y ejecuta programas java que generan contenido para enviar a su navegador.


No explica nada. Muy superficial
Verde

@Green, ¿qué estabas buscando específicamente? El nombre de host local que se resuelve en una dirección y el número de puerto TCP estaban cubiertos. No cubrí: cómo varios servidores manejan el listado al puerto, los grupos de servidores manejan múltiples conexiones, cómo configurar los servidores web, el funcionamiento interno de las comunicaciones TCP, la explicación completa de los encabezados HTTP o cómo funciona la resolución de nombres para dominios que no se encuentran en los hosts archivo, cada uno estaría mucho más allá del alcance de la pregunta.
Keith Reynolds el

1

Cuando escribe www.google.com en su navegador web, se abre una conexión en el puerto predeterminado 80 al servidor de Google (a través de una búsqueda de DNS para ver qué dirección IP es www.google.com) y solicita la página web. El servidor de Google responde con una página web que su navegador dibuja en la pantalla (generalmente haciendo más llamadas para imágenes, CSS y JavaScript).

Cuando vas a localhost: 8080 es exactamente lo mismo. El nombre del servidor localhost siempre se resuelve en la máquina en la que se está ejecutando y utiliza la dirección IP falsa de 127.0.0.1 (su computadora tendrá dos direcciones IP, esta falsa que tiene cada computadora y la real). Por lo tanto, debe tener una instancia de Tomcat ejecutándose localmente para escuchar las conexiones en el puerto 8080.

¿Por qué el puerto 8080 en lugar del puerto HTTP predeterminado 80? Bueno, eso es en caso de que ya tenga un servidor web.

Por lo general, tiene servidores web y servidores de aplicaciones.

  1. Los servidores web (como Apache httpd) sirven páginas estáticas. En efecto, es como un elegante servidor FTP unidireccional. Abre una conexión TCP y solicita un archivo utilizando los comandos HTTP (generalmente GET). El servidor web devuelve un archivo HTML y su navegador lo descarga y lo analiza, ve que necesita otras imágenes y las solicita. Un servidor web es muy rápido, pero básicamente levanta los archivos del disco local y los devuelve.

  2. Un servidor de aplicaciones (como Tomcat o JBoss) es similar, excepto que normalmente ejecuta código para "crear" la página que está solicitando, en lugar de levantarla directamente del disco. Lo que hace para crear esa página depende de su aplicación. Podría conectarse a una base de datos, ejecutar un programa, servir una página al azar ... Etc. Cuando inicia sesión en su banca en línea, por ejemplo, el servidor de aplicaciones configura una sesión para usted, devuelve esa identificación de sesión en una cookie que su el navegador se reenvía cada vez que realiza una solicitud hasta que cierra la sesión. Entonces, si solicita la página "mis saldos", el banco busca quién es usted en función de su ID de sesión, luego va a su base de datos para obtener su nombre y saldo bancario, luego crea una página que dice "Hola John Smith, su saldo es de 100 € ". Los servidores de aplicaciones suelen ser más lentos, pero más versátiles que los servidores web.

Muchos lugares tienen un WebServer ejecutándose en el puerto predeterminado de 80, y luego AppServer ejecutándose en un puerto secundario (como 8080). Por lo tanto, las páginas estáticas se sirven rápidamente y cuando los usuarios hacen clic en un enlace que los lleva a una página dinámica, el enlace va a 8080 (al que responde el servidor de aplicaciones) o el servidor web está configurado para reenviar ciertas solicitudes al servidor de aplicaciones (en en cuyo caso todavía se parece al puerto predeterminado 80 y, por lo tanto, se ve un poco mejor para el usuario)

Por supuesto, esta es una descripción general de muy alto nivel y nada es tan blanco y negro. La mayoría de los servidores web pueden crear contenido dinámico ejecutando scripts (generalmente CGI a través de scripts que usan perl o PHP) y la mayoría de los servidores de aplicaciones también pueden servir archivos sin formato como un servidor web. De hecho, es posible ejecutar un servidor de aplicaciones y cambiar el número de puerto tomcat de 8080 a 80.

Finalmente, muchas aplicaciones se están alejando de servir páginas HTML completas para cada solicitud al servidor de aplicaciones (lo que se ve como lento e ineficiente) y en su lugar están respondiendo solo con los fragmentos de datos usando AJAX para enviar JSON o XML. Vuelva al www.google.com original que utilizó para escribir su consulta de búsqueda, presione Buscar y obtenga una página de sus resultados. Ahora, en cambio, mientras escribe, su navegador envía continuamente solicitudes AJAX a Google que responde con resultados de búsqueda actualizados basados ​​en lo que ha escrito hasta ahora y luego su navegador actualiza la página. Esto significa que no es necesario esperar a que el usuario envíe la página de manera más rápida y dinámica (como sería una aplicación de escritorio de la vieja escuela).


1

En este escenario, envía una solicitud para resolver localhost que es 127.0.0.1 (interfaz de bucle invertido) y Apache está configurado para escuchar en el puerto 8080, cuando accede a localhost en el puerto 8080, devuelve el VirtualHost predeterminado.


0

Haciéndolo simple, localhost como una dirección web se conecta a su máquina local, donde en este caso tiene Apache instalado como servidor web.

La segunda parte,: 8080, significa conectarse al puerto 8080 de esa dirección web. Si no lo especifica, su navegador web se conectará al puerto predeterminado del servidor web, que es el puerto 80.

Si todavía tiene direcciones IP, localhost es un enlace DNS fijo a 127.0.0.1.

Debería llevarte allí ...

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.