2011-07-09 26 views
16

Me pregunto cómo funcionan internamente los navegadores. Ahora, la conexión a diferentes sitios web que usan 'aquí' dentro del mismo navegador puede ser manejado en una de dos maneras: 1 - El uso de hilos 2 - El uso de diferentes números de puerto de origen para cada pestaña abierta¿Los navegadores web usan diferentes números de puerto para las pestañas abiertas?

sé que podría no debe ser una sola respuesta para esta pregunta, y puede diferir de un navegador a otro, sin embargo, se agradecen todas las respuestas.

Gracias


Gracias por everyone.I que realmente aprecian. Mi pregunta se refiere al puerto de origen en el lado del cliente. Me pregunto si el navegador utiliza diferentes puertos de origen para cada pestaña que abre, o el mismo puerto de origen para todo el proceso "Me refiero a la ventana que incluye diferentes pestañas", o el mismo puerto de origen para todas las ventanas.

O, ¿los navegadores web usan subprocesos?

+0

Los subprocesos no serían de mucha ayuda con la naturaleza asincrónica de las conexiones HTTP ... – mjv

Respuesta

0

Según el navegador, utiliza diferentes subprocesos o procesos diferentes para cada pestaña. Los puertos locales utilizados probablemente no tienen mucho que ver con diferentes pestañas.

-3

¿Quiere decir TCP Ports? No, los navegadores usan el mismo puerto, generalmente 80 o 443 (para HTTPS).

HTTP es un protocolo sin estado: el navegador abre una conexión, carga una página y luego la cierra. No tiene la conexión. Si carga más de 1 página, crea subprocesos para cada uno (generalmente, Chrome crea procesos), pero tan pronto como se carga la página, la conexión se cierra.

AJAX abre una nueva conexión para cada solicitud y luego la cierra.

Hay algunos Hacks para tener una conexión HTTP persistente (Ver COMET), pero debido a que el navegador ejecuta múltiples hilos/procesos, generalmente no entran en conflicto.

+3

Los navegadores envían * a * el mismo puerto. Sin embargo, a menudo envían * desde * varios puertos diferentes. Cada nueva conexión desde un navegador dado tendría que provenir de un puerto diferente, de lo contrario, el servidor no podría diferenciarlos. – cHao

+2

Ah, y HTTP 1.1 no necesita cerrar la conexión después de realizar una solicitud. De hecho, mantenerlo abierto por un tiempo es el predeterminado. – cHao

-3

no! usualmente usa el puerto 80 por defecto a menos que se especifique. por ejemplo www.someweb.com:8080.

aquí dentro navegador Estoy asumiendo corrió en diferentes hilos

+3

Los diferentes números de puerto mencionados en la pregunta se refieren al puerto _client-side_, estos no están relacionados con el puerto del servidor que, como dijiste, es el puerto 80 en la mayoría de los casos. – mjv

4

Una revisión rápida usando netstat (o sockstat en máquinas BSD) revela que los diferentes números de puerto de origen se utilizan para diferentes conexiones. En ese sentido, tienes razón.

Firefox usa al menos un hilo para cada pestaña. Cada hilo podría abrir múltiples conexiones para diferentes datos (por ejemplo, cargar imágenes de un servidor de medios y contenido del servidor web). Cada conexión debe tener su propio puerto de origen.

15

Los hilos y los puertos son conceptos separados y en su mayoría no relacionados.

Los subprocesos son los que hace el procesador local de la computadora para manejar los cálculos, como dibujar en la pantalla o esperar el tráfico de Internet. Probablemente haya un hilo separado (y más) para esas operaciones en cada pestaña.

Los puertos son en lo que se identifica el tráfico en sí (en TCP y UDP). Para comunicarse, su navegador abriría un puerto local (generalmente algo grande como ~ 5000, y eso no importa siempre que sea único) y se conectará al servidor normalmente en el puerto 80 (en el que el servidor está escuchando).Si su computadora no conocía el puerto remoto, no podía conectarse, pero su estándar para usar 80 para HTTP, por ejemplo.

Los navegadores abren pestañas en hilos separados (y nuevos incluso en procesos separados por razones de seguridad y confiabilidad), y usan puertos separados en el lado del cliente. Entonces sí, la respuesta es tanto hilos como puertos. Siempre usan el mismo puerto remoto a menos que especifique lo contrario físicamente (por ejemplo, conectarse a un sitio web usando https: // en lugar de http: // utiliza un puerto diferente porque así es como se hizo ese protocolo). Puede especificar un puerto para utilizar en los navegadores modernos con: # después del nombre, también. (ejemplo: http://www.google.com:81/, sin embargo, eso fallará porque ese no es el puerto en el que escuchan)

Cuestiones relacionadas