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