Cuando comienza a aprender cómo los nombres de dominio, las direcciones IP, los servidores web y los sitios web encajan y funcionan juntos, a veces puede ser un poco confuso o abrumador. ¿Cómo está todo configurado para que funcione tan bien? La publicación de preguntas y respuestas del superusuario de hoy tiene las respuestas a las preguntas de un lector curioso.



La sesión de preguntas y respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web de preguntas y respuestas impulsada por la comunidad.

Foto cortesía de Rosmarie Voegtli (Flickr) .

¿Puedes silenciar una pestaña?

La pregunta

SuperUser reader user3407319 quiere saber si los servidores web solo tienen un sitio web cada uno:

Según lo que entiendo sobre DNS y vincular un nombre de dominio con la dirección IP del servidor web en el que está almacenado un sitio web, ¿significa eso que cada servidor web solo puede contener un sitio web? Si los servidores web tienen más de un sitio web, ¿cómo se resuelve todo para que pueda acceder al sitio web que quiero sin ningún problema o confusión?

¿Los servidores web solo tienen un sitio web cada uno o tienen más?

La respuesta

El colaborador de superusuario Bob tiene la respuesta para nosotros:

Básicamente, el navegador incluye el nombre de dominio en la solicitud HTTP para que el servidor web sepa qué dominio se solicitó y pueda responder en consecuencia.

Solicitudes HTTP

Así es como ocurre su solicitud HTTP típica:

1. El usuario proporciona una URL con el formato http: // host: puerto / ruta.

2. El navegador extrae la parte del host (dominio) de la URL y la traduce a una dirección IP (si es necesario) en un proceso conocido como resolución de nombres. Esta traducción puede ocurrir a través de DNS, pero no es necesario (por ejemplo, el archivo de hosts locales en los sistemas operativos comunes omite el DNS).

3. El navegador abre una conexión TCP al puerto especificado, o por defecto al puerto 80 en esa dirección IP.

que es un documento rtf

4. El navegador envía una solicitud HTTP. Para HTTP / 1.1, tiene este aspecto:

hacer una tabla en excel

El encabezado de host es estándar y se requiere en HTTP / 1.1. No se especificó en la especificación HTTP / 1.0, pero algunos servidores lo admiten de todos modos.

Desde aquí, el servidor web tiene varios datos que puede utilizar para decidir cuál debería ser la respuesta. Tenga en cuenta que es posible que un solo servidor web esté vinculado a varias direcciones IP.

  • La dirección IP solicitada, del socket TCP (la dirección IP del cliente también está disponible, pero rara vez se usa y, a veces, para bloquear / filtrar)
  • El puerto solicitado, desde el socket TCP
  • El nombre de host solicitado, como se especifica en el encabezado del host por el navegador en la solicitud HTTP
  • La ruta solicitada
  • Cualquier otro encabezado (cookies, etc.)

Como parece haber notado, la configuración de alojamiento compartido más común en estos días coloca varios sitios web en una sola combinación de dirección IP: puerto, dejando solo el host para diferenciar entre sitios web.

Esto se conoce como Host virtual basado en nombre en Apache-land, mientras que Nginx los llama Nombres de servidor en bloques de servidor y IIS prefiere Servidor virtual .

¿Qué pasa con HTTPS?

HTTPS es un poco diferente. Todo es idéntico hasta el establecimiento de la conexión TCP, pero después se debe establecer un túnel TLS encriptado. El objetivo es no filtrar ninguna información sobre la solicitud.

Ubicación del símbolo del sistema de Windows 10

Para verificar que el servidor web sea el propietario de este dominio, el servidor web debe enviar un certificado firmado por un tercero de confianza. Luego, el navegador comparará este certificado con el dominio que solicitó.

Esto presenta un problema. ¿Cómo sabe el servidor web qué certificado de host / sitio web enviar si necesita hacer esto antes de recibir la solicitud HTTP?

Tradicionalmente, esto se resolvía con una dirección IP (o puerto) dedicada para cada sitio web que requiriera HTTPS. Obviamente, esto se ha vuelto problemático ya que nos estamos quedando sin direcciones IPv4.

Ingresar SNI (Indicación del nombre del servidor). El navegador ahora pasa el nombre de host durante las negociaciones de TLS, por lo que el servidor web tiene esta información con la suficiente antelación para enviar el certificado correcto. En el lado del servidor web, la configuración es muy similar a cómo se configuran los hosts virtuales HTTP.

La desventaja es que el nombre de host ahora se pasa como texto sin formato antes del cifrado, y es esencialmente información filtrada. Esto generalmente se considera una compensación aceptable, aunque considerando que el nombre de host normalmente se expone en una consulta de DNS de todos modos.

¿Qué sucede si solicita un sitio web solo por dirección IP?

Lo que hace el servidor web cuando no sabe qué host específico solicitó depende de la implementación y configuración del servidor web. Por lo general, hay un sitio web predeterminado, general o alternativo especificado que proporcionará respuestas a todas las solicitudes que no especifiquen explícitamente un host.

Este sitio web predeterminado puede ser su propio sitio web independiente (que a menudo muestra un mensaje de error) o puede ser cualquiera de los otros sitios web del servidor web, según las preferencias del administrador del servidor web.


¿Tiene algo que agregar a la explicación? Habla en los comentarios. ¿Quiere leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Consulte el hilo de discusión completo aquí. .

LEER SIGUIENTE
  • › Cómo encontrar su Spotify Wrapped 2021
  • › Funciones frente a fórmulas en Microsoft Excel: ¿Cuál es la diferencia?
  • › 5 sitios web que todo usuario de Linux debería marcar
  • › The Computer Folder Is 40: Cómo Xerox Star creó el escritorio
  • Cyber ​​Monday 2021: las mejores ofertas tecnológicas
  • › ¿Qué es la protección contra caídas MIL-SPEC?