En un navegador web que admite tener múltiples pestañas, como Firefox, ¿las diferentes pestañas que van a diferentes dominios del sitio web utilizan un puerto dedicado para cada dominio?
¿O el navegador usa un solo puerto para administrar todas las pestañas y, por lo tanto, todos los dominios?
networking
browser
port
tabs
yoyo_fun
fuente
fuente
Respuestas:
¿Los navegadores usan diferentes puertos para conectarse a diferentes sitios web?
Ellos si.
Aquí hay un ejemplo que muestra mis conexiones actuales de Firefox (tengo 9 pestañas abiertas) en Windows 7:
Notas:
Puede ver que los puertos locales son todos diferentes.
Los puertos remotos suelen ser 80 (HTTP), 443 (HTTPS) u 8080 (HTTP alternativo).
HTTP
en la Lista de números de puerto TCP y UDP algunos de ellos.El proceso completo de representación de una página web se describe a continuación. Vea en particular los pasos 5, 6, 13 y 15 (que están en negrita):
En general, la representación de una sola página web utiliza múltiples conexiones, no todas las cuales serán a la misma dirección remota.
Esto se debe a que las páginas web a menudo incluyen recursos alojados en otros lugares (archivos javascript, etc.).
Las conexiones múltiples al mismo sitio web (por ejemplo, stackoverflow.com) también tienen puertos locales diferentes (porque son conexiones separadas en diferentes pestañas que representan diferentes páginas).
Representación de una página web: paso a paso
Nota:
Fuente Representación de una página web: paso a paso
fuente
Cada conexión a un sitio web utiliza un socket diferente con el puerto TCP de destino predeterminado 80 para HTTP simple y 443 para HTTPS. Para que el socket sea único, la combinación de la dirección IP de origen, el puerto TCP de origen, la dirección IP de destino y el puerto TCP de destino debe ser diferente.
Si tiene varias conexiones al mismo sitio web (suponiendo que el sitio web use solo 1 dirección IP) desde la misma computadora, se debe usar un puerto TCP de origen diferente. De esta manera, cada conexión es única.
Sin embargo, debe tenerse en cuenta que a partir de HTTP 1.1, todas las conexiones son persistentes durante un período de tiempo determinado (a menos que se declare lo contrario). Esto significa que su navegador puede reutilizar la misma conexión si se solicitan múltiples recursos del mismo sitio web (por ejemplo, archivos css / js). Esto también se aplica si tiene varias instancias del mismo sitio web en su navegador.
Si está en Windows, el
netstat -no -p TCP
comando le mostrará todos los sockets TCP activos y su ID de proceso correspondiente, incluidos los de su navegador:Si está en Unix / Linux (Debian en este caso), puede usar el comando
netstat -ntp
oss -t
:fuente
netstat -n
debería funcionar en la mayoría de los sistemas operativos, incluidos Linux y Mac OS.netstat -n -o
para ver qué proceso creó qué conexión. O puede ejecutar tcpview de SysInternal para ver la lista en una GUI, con nombres de proceso e íconos y todo.En cuanto a las pestañas a diferentes sitios web, no hay nada en TCP que requiera que el puerto local sea diferente, siempre que la tupla {IP local, puerto local, IP objetivo, puerto objetivo} sea única. Para pestañas al mismo sitio web, la situación es mucho más compleja.
El navegador, como cualquier otra pieza de software de cliente, utiliza un puerto local diferente por conexión saliente al mismo objetivo. En general, formará múltiples conexiones a cualquier sitio web dado, para obtener recursos incrustados como imágenes, CSS, JavaScript, etc. También agrupará esas conexiones para su posible reutilización.
No es posible decir si las diferentes pestañas del mismo sitio web utilizarán conexiones distintas , porque (a) de todos modos, por lo general, no hay una sola conexión por pestaña, y (b) dependiendo del momento y la autenticación, las conexiones pueden ser reutilizado entre pestañas; y como no es posible identificar las conexiones, tampoco es posible identificar los puertos locales.
fuente
Si. No, quizás. Depende.
Primero, un navegador puede usar cualquiera de estas estrategias para las conexiones:
No tiene una manera de saber qué estrategia usará un navegador, aunque usar un grupo de conexiones (y reutilizar conexiones) es una suposición razonable.
En segundo lugar, la forma en que funciona TCP, tiene un puerto de origen y un puerto de destino para cada conexión. El par de dirección / puerto de origen y destino define la conexión.
Siempre [1] utiliza un puerto conocido (como 80 o 443) para conectarse al servidor (al que escucha en su dirección anunciada), pero el otro puerto se elige al azar. Por lo tanto, dependiendo de qué lado mire una conexión, tiene uno o muchos puertos posibles.
Por lo tanto, la misma pestaña puede (y usualmente) usará varios puertos diferentes en su extremo, pero en principio diferentes pestañas podrían (si las conexiones se agrupan y se cargan diferentes recursos en diferentes pestañas desde el mismo servidor) usar el mismo puerto.
Como la pregunta menciona explícitamente la salida , en el caso "normal", los números de puerto serían los mismos independientemente de la pestaña en la que se encuentren o uno de los dos puertos posibles (80 y 443). Aunque, por supuesto, es posible solicitar explícitamente un puerto diferente (como 8080) en una URL. Sin embargo, eso es un poco raro.
[1] Bueno, no siempre ... pero no lo compliquemos demasiado.
fuente