¿Por qué no se puede acceder a todos los sitios web solo con una dirección IP?

Juergen Nieveler tiene razón, pero me gustaría ampliar el tema técnico.

Si un servidor web aloja múltiples sitios en diferentes dominios, debe usar el encabezado o URL del host de la solicitud HTTP para determinar qué sitio web busca. Si usa la dirección IP, es posible que el servidor web no se haya configurado para proporcionarle el sitio que espera (o cualquier otro sitio). En parte, este comportamiento es elegido por los sitios porque el paso de resolución DNS a veces se usa como parte de sus estrategias de equilibrio de carga y distribución de contenido.

Si su objetivo es acceder a un sitio web sin realizar una búsqueda de DNS, puede agregar la dirección IP que ha ubicado a su archivo de hosts (/ etc / hosts en UNIX, c: \ windows \ system32 \ drivers \ etc \ hosts en Windows ) y luego realice la solicitud de la forma habitual. Esto significaría que su solicitud HTTP tiene un encabezado de host correcto y, por lo tanto, el servidor web sabrá cómo procesar su solicitud.

Como señala Tony Li, esto se debe a que la mayoría de los sitios web están alojados como hosts virtuales. Esto significa que hay más de un sitio web alojado por un servidor web en particular. Por lo tanto, es importante que el navegador identifique a qué host virtual desea acceder. El host que ve cuando accede directamente a la IP es el host virtual predeterminado de ese servidor web.

Puede encontrar más detalles sobre el alojamiento virtual aquí: host virtual basado en nombres.

Para ser aún más detallado: ciertamente puede abrir una conexión TCP al puerto 80 en el servidor solo en función de la dirección IP. El problema es el nombre encontrado en la URL. Si el servidor espera analizar ese nombre para determinar el host virtual y, en cambio, encuentra una dirección IP, es incapaz de continuar.