¿Por qué no accedo al mismo sitio web cuando uso esta dirección IPv4 en lugar de la URL?

2

Cuando capturo paquetes usando el analizador de paquetes wireshark mientras visito http://en.wikipedia.org/wiki/Hydrogen , puedo ver los paquetes que usan el protocolo HTTP (solicitud ega GET). Mi solicitud Get utiliza 4 protocolos: Ethernet II, IPv4, TCP y HTTP. Para el IPv4 puedo ver mi propia dirección IPv4 local de mi PC como fuente, para el destino veo la dirección IPv4 91.198.174.225. Cuando accedo a esta dirección en mi navegador, accedo a un sitio web relacionado con la wikipedia que dice "wiki no existe". ¿Por qué no veo el artículo de Hidrógeno cuando voy a esa dirección IP?

Bentley4
fuente

Respuestas:

8

Probablemente porque wikipedia está ejecutando hosts virtuales; el servidor 91.198.174.225 tiene múltiples nombres de host.
Por ejemplo, fr.wikipedia.org tiene la misma dirección IP. Una máquina grande puede tener cientos de hosts virtuales, limitados por CPU, memoria y ancho de banda para esa máquina


Los navegadores web agregan un Host:encabezado a la solicitud, que es el nombre de host de la URL que ingresa. El servidor web servirá un 'servidor virtual' diferente que incluye diferentes páginas dependiendo del Host:encabezado de la solicitud. Cuando va al servidor usando la dirección IP, envía la dirección IP como el Host :. El servidor web tiene una configuración básica para esa solicitud, pero probablemente no la que espera.

Sibster
fuente
3

Es habitual que se sirvan varios sitios web desde la misma dirección IP. Usar la dirección IP en la URL no es suficiente para estos sitios. Debe proporcionar el nombre de dominio adecuado, que su navegador colocará en un encabezado de host HTTP que le indica al servidor qué sitio web desea.

Kyle Jones
fuente
1

Si bien sus solicitudes son idénticas en la capa TCP e inferior, difieren en la capa HTTP. Notará que en su primera solicitud, el campo Host en el encabezado contiene el nombre de host que se encontró en su URI original, mientras que la solicitud con la dirección IP en lugar del nombre de host tiene un campo Encabezado que está vacío o contiene solo la dirección IP. Ver RFC 2616 para detalles técnicos.

Sin el campo Host no habría posibilidad de que el servidor sepa a qué host se dirigió la solicitud. Esto no permitiría usar múltiples nombres de host (con diferentes sitios web) en una dirección IP. El alojamiento web masivo sería ineficiente porque requeriría direcciones IP dedicadas para cada nombre de host. El concepto de hosts virtuales resuelve este problema mediante el uso del campo de encabezado Host para distinguir las solicitudes a diferentes nombres de host y permite un número ilimitado de nombres de host en una dirección IP y servir contenido diferente en cada uno de ellos. Wikipedia probablemente usa esto para servir las diferentes ediciones de idiomas del servidor que solicitó. Sin el nombre de host, su solicitud carece de la información, qué idioma se solicita.

Papst Gurken
fuente