ocupado - ¿Cómo puede una aplicación usar el puerto 80/HTTP sin entrar en conflicto con los navegadores?
puerto 8080 ocupado (7)
Si entiendo bien, las aplicaciones a veces usan HTTP para enviar mensajes, ya que el uso de otros puertos puede causar problemas de firewall. Pero, ¿cómo funciona eso sin entrar en conflicto con otras aplicaciones como los navegadores web? De hecho, ¿cómo entran en conflicto varios navegadores al mismo tiempo? ¿Todos ellos monitorean el puerto y reciben notificaciones ... puede compartir un puerto de esta manera?
Tengo la sensación de que es una pregunta tonta, pero no es algo en lo que haya pensado antes, y en otros casos he visto problemas cuando 2 aplicaciones están configuradas para usar el mismo puerto.
Debe tener cuidado al hacer la distinción entre "escuchar en el puerto 80" y "conectarse al puerto 80".
Cuando dices "a veces las aplicaciones usan HTTP para enviar mensajes, ya que usar otros puertos puede causar problemas de firewall", en realidad quieres decir que "algunas veces las aplicaciones envían mensajes al puerto 80".
El servidor está escuchando en el puerto 80 y puede aceptar conexiones múltiples en ese puerto.
El puerto 80 del que habla aquí es el puerto remoto en el servidor, el navegador local abre el puerto alto para cada conexión establecida.
Cada conexión tiene números de puerto en ambos extremos, uno se llama puerto local, otro puerto remoto.
El cortafuegos permitirá el tráfico a un puerto alto para el navegador, porque sabe que la conexión se ha establecido desde su computadora.
Es la 5-tupla de (protocolo IP, dirección IP local, puerto local, dirección IP remota, puerto remoto) que identifica una conexión. Varios navegadores (o de hecho, un único navegador que carga varias páginas simultáneamente) usarán cada uno el puerto de destino 80, pero el puerto local (que está asignado por el O / S) es distinto en cada caso. Por lo tanto, no hay conflicto.
Hay 2 puertos: un puerto de origen (navegador) y un puerto de destino (servidor). El navegador solicita al sistema operativo un puerto de origen disponible (digamos que recibe 33123 ) y luego realiza una conexión de socket al puerto de destino (generalmente 80 / HTTP , 443 / HTTPS ).
Cuando el servidor web recibe la respuesta, envía una respuesta que tiene 80 como puerto de origen y 33123 como puerto de destino.
Entonces, si tienes 2 navegadores que acceden simultáneamente a .com, tendrías algo como esto:
Firefox (localhost:33123) <-----------> .com (69.59.196.211:80)
Chrome (localhost:33124) <-----------> .com (69.59.196.211:80)
Las solicitudes HTTP salientes no ocurren en el puerto 80. Cuando una aplicación solicita un socket, por lo general recibe una al azar. Este es el puerto de origen.
El puerto 80 es para servir contenido HTTP (por el servidor, no por el cliente). Este es el puerto de Destino.
Cada navegador usa una Fuente diferente para generar solicitudes. De esta forma, los paquetes vuelven a la aplicación correcta.
Los clientes suelen elegir un puerto entre 1024 y 65535. Depende del sistema operativo cómo manejarlo. Creo que los clientes de Windows incrementan el valor de cada nueva conexión, los clientes de Unix eligen un número de puerto aleatorio.
Algunos servicios dependen de un puerto de cliente estático como NTP (123 UDP)
Un navegador es una aplicación cliente que utiliza para ver contenido en un servidor web que generalmente está en una máquina diferente. El servidor web es el que escucha en el puerto 80, no el navegador en el cliente.