Qué pasa al abrir una web: IP, DNS, HTTP y HTML, en orden

David TorresInformática y FPLeave a Comment

Los cuatro pasos para abrir una web, en orden: tu IP, el DNS, la petición HTTP y el HTML que llega

Del enter a la página: cuatro pasos

Escribes saseformacion.es, pulsas enter y aparece la página. Parece una sola cosa, pero son cuatro, siempre en el mismo orden:

  1. Tu equipo tiene una dirección, la IP, y una máscara que le dice qué está en su red y qué no.
  2. El DNS traduce el nombre que has escrito a la IP del servidor.
  3. HTTP: tu navegador le pide la página a ese servidor, y el servidor contesta con un código.
  4. Lo que llega es HTML, y el HTML pide a su vez el CSS y el JavaScript.
Esquema de los cuatro pasos para abrir saseformacion.es: tu equipo (192.168.1.37 /24), el DNS que traduce el nombre a 149.202.105.228, la petición HTTP que responde 200 y el HTML que pide CSS, JS e imágenes, con lo que se ve cuando falla cada paso

Cada paso necesita el anterior. Si el DNS no contesta, no hay a quién pedirle la página; si el servidor no contesta, no hay HTML que pintar. Por eso, cuando algo falla, se mira en orden.

Vamos a recorrerlos con comandos. Los resultados de este artículo salen de un Mac; en cada paso se indica qué cambia en Windows y en Linux.

1 · Tu equipo: IP, máscara y puerta de enlace

Lo primero es saber quién eres en la red. Cada sistema tiene su comando, y no son intercambiables:

SistemaComandoCómo aparece la máscara
Windowsipconfig255.255.255.0, en su propia línea
Linuxip aPegada a la IP: 192.168.1.37/24
macOSifconfigEn hexadecimal: netmask 0xffffff00

En un Mac, filtrando la línea que interesa:

$ ifconfig en0 | grep 'inet '
	inet 192.168.1.37 netmask 0xffffff00 broadcast 192.168.1.255

0xffffff00 es 255.255.255.0 escrito en hexadecimal: ff es 255 y 00 es 0. Es una máscara /24.

Falta un dato: la puerta de enlace, que es la IP de tu router. En Windows sale en el propio ipconfig, como «Puerta de enlace predeterminada»; en Linux, con ip route; en macOS, así:

$ route -n get default | grep gateway
    gateway: 192.168.1.1

La máscara decide si hay que salir por el router

Con esos tres datos tu equipo ya puede decidir algo importante antes de enviar nada: ¿el destino está en mi red o no?

La máscara /24 dice que los tres primeros números son la red. Tu red es 192.168.1. Cualquier dirección que empiece así —la impresora en la 192.168.1.200, por ejemplo— está en tu red, y tu equipo le envía los datos directamente. Cualquier otra se la entrega a la puerta de enlace, el router, para que la saque fuera.

Esto no es un detalle: con las mismas IPs y otra máscara, la respuesta cambia. Con /25, la red se parte en dos mitades (de la .0 a la .127 y de la .128 a la .255), y la impresora pasa a estar en otra red. Es lo que enseña el vídeo de subnetting, y la razón de que la máscara no sea un relleno.

El servidor de una web casi nunca está en tu red. Así que en cuanto sepas su IP, el paso 1 ya tiene respuesta: va al router.

2 · El nombre: DNS

Tú has escrito un nombre, pero las redes no entienden de nombres, solo de IPs. Alguien tiene que traducir. Eso es el DNS:

$ nslookup saseformacion.es
Server:		…
Address:	…#53

Non-authoritative answer:
Name:	saseformacion.es
Address: 149.202.105.228

Las dos primeras líneas dicen a quién le has preguntado: tu servidor DNS, normalmente el de tu operadora o el de tu router. Varían de una casa a otra, y por eso aquí van recortadas. Lo que importa está al final: saseformacion.es está en 149.202.105.228.

nslookup existe con el mismo nombre en Windows, Linux y macOS. En algunas distribuciones de Linux no viene instalado: está en el paquete dnsutils o bind-utils.

Ahora vuelve al paso 1 con esa IP: 149.202.105.228 no empieza por 192.168.1, así que no está en tu red. Tu equipo se lo dará al router.

Non-authoritative answer no es un aviso de error. Significa que te ha contestado tu servidor DNS, que ha preguntado por ti o tenía la respuesta guardada, y no el servidor que manda sobre ese dominio. Es lo normal.

3 · La conversación: HTTP

Ya sabes adónde ir. Ahora hay que pedir la página, y eso se hace con HTTP: tu navegador manda unas líneas de texto, la petición, y el servidor contesta con otras, la respuesta.

La petición, en su forma más corta, son dos líneas:

GET / HTTP/1.1
Host: saseformacion.es

GET es el método: «dame esto». / es la ruta: la portada. Host dice de qué web, porque un mismo servidor puede alojar muchas.

Puedes hablar con el servidor tú mismo con curl. Con -I, curl hace una petición HEAD: como GET, pero pide solo la cabecera de la respuesta, sin la página:

$ curl -I https://saseformacion.es/
HTTP/2 200
date: Sat, 03 Oct 2026 17:02:01 GMT
content-type: text/html; charset=UTF-8
…

HTTP/2 en vez de HTTP/1.1 no es un error: curl, como tu navegador, negocia la versión 2 cuando el servidor la admite. Los métodos, las cabeceras y los códigos son los mismos; cambia cómo viajan, en binario y no en texto. Si quieres ver la versión 1.1 de los vídeos, añade --http1.1.

En Windows, escribe curl.exe y no curl: en Windows PowerShell, curl es un alias de otro comando que no acepta estas opciones.

El código es lo primero que hay que mirar

El 200 de la primera línea es el código de estado, y se lee por la primera cifra:

FamiliaQué significaEjemplo
2xxBien200 OK
3xxEstá en otro sitio301 Moved Permanently
4xxLo que pediste no vale404 Not Found
5xxHa fallado el servidor500 Internal Server Error

Pide una página que no existe y lo ves:

$ curl -I https://saseformacion.es/no-existe
HTTP/2 404
…

Un 404 dice algo muy concreto: el servidor está funcionando y te ha contestado que esa página no la tiene. No es una web caída. Una web caída o no contesta, o contesta con un 5xx: un 503 cuando está en mantenimiento, o un 502 o 504 que te da el intermediario que tiene delante cuando el servidor de detrás no responde.

4 · Lo que llega: HTML, CSS y JavaScript

Con el 200 llega el cuerpo de la respuesta: el HTML. Y aquí la cadena se ramifica, porque el HTML no viene solo. Nombra hojas de estilo, scripts e imágenes, y por cada uno el navegador hace otra petición, con su propio código.

La portada de saseformacion.es, el día que se escribió este artículo, enlazaba 8 hojas de estilo, 26 scripts y 3 imágenes. Una sola página, decenas de peticiones.

Cada uno de esos archivos tiene un trabajo distinto:

  • HTML dice qué hay: un párrafo, un botón, un menú. Es un lenguaje de marcas, no de programación: etiqueta, no calcula.
  • CSS dice cómo se ve: colores, letra, posición.
  • JavaScript dice qué hace: qué pasa cuando pulsas. Este sí es un lenguaje de programación.

Saber esto sirve para diagnosticar: si una página llega pero se ve sin estilos, el HTML ha llegado y alguna petición de CSS ha fallado. Si se ve bien pero un botón no hace nada, el que ha fallado es un script.

Todas esas peticiones se ven en el navegador: pulsa F12 (en Mac, Cmd + Opción + I; en Safari, antes hay que activar las funciones para desarrolladores en sus ajustes), ve a la pestaña Red (Network) y recarga. Cada fila es una petición, con su código. Verás muchos 304: el archivo no ha cambiado desde la última vez y el navegador usa el que ya tenía. Es normal.

«No carga»: en qué paso mirar

Aquí se junta todo. «No carga» puede querer decir cuatro cosas distintas, y cada una tiene su síntoma y su comando:

SíntomaPaso que fallaCómo lo compruebas
El nombre no se resuelve2 · DNSnslookup responde NXDOMAIN; curl dice Could not resolve host
El servidor no contesta1 o 3 · la red o el servidorcurl se queda esperando y acaba con Timeout was reached
Llega un 4xx3 · la peticiónLa dirección está mal, o esa página no existe
Llega un 5xx3 · el servidorEl problema es suyo, no tuyo
Llega, pero se ve rara o algo no responde4 · lo que llegaF12 → Red: busca la petición de CSS o JS que da 4xx o 5xx, o sale en rojo

Estos son los dos primeros, provocados a propósito. Un dominio que no existe:

$ nslookup saseformacion-no-existe.es
…
** server can't find saseformacion-no-existe.es: NXDOMAIN

$ curl -I https://saseformacion-no-existe.es/
curl: (6) Could not resolve host: saseformacion-no-existe.es

Y una IP en la que no contesta nadie (192.0.2.1 está reservada para documentación, así que nunca responde):

$ curl -I --connect-timeout 3 https://192.0.2.1/
curl: (28) Failed to connect to 192.0.2.1 port 443 after 3005 ms: Timeout was reached

Fíjate en la diferencia con el 404: aquí no hay código HTTP. Sin código, el problema está antes de la conversación; con código, la conversación ha ocurrido y el código te dice cómo ha ido.

Errores frecuentes

Los cuatro que más se repiten en clase, uno por paso:

  • «Siempre es 255.255.255.0» (paso 1). La máscara se deja por defecto hasta que una red está dividida y dos equipos que «deberían verse» no se ven. Con las mismas IPs, la máscara decide quién está en tu red.
  • «He cambiado el DNS y la web ya está en el nuevo servidor» (paso 2). El DNS no aloja nada: dice dónde está. Cambiarlo cambia adónde se apunta, y el cambio tarda en verse porque las respuestas se guardan en caché.
  • «Da 404, la web está caída» (paso 3). Un 404 lo contesta un servidor que funciona: lo que no existe es la página. Una web caída no contesta, o contesta con un 5xx.
  • «Lo arreglo en el HTML» (paso 4). Si el problema es de aspecto, es del CSS; si es de comportamiento, del JavaScript. HTML solo dice qué hay.

Y uno transversal: dar por equivalentes ipconfig, ifconfig e ip a. Cada uno es de un sistema, y cada uno muestra la máscara a su manera.

Ejercicio: recorre la cadena desde tu equipo

Cinco minutos, en orden. Apunta cada resultado: al final tendrás el camino entero de una web hasta tu pantalla.

  1. Quién eres. Saca tu IP, tu máscara y tu puerta de enlace con el comando de tu sistema (ipconfig; ip a e ip route; o ifconfig y route -n get default).
  2. Tu red. Con tu máscara, escribe qué parte de tu IP es la red. ¿La puerta de enlace está dentro? Debería.
  3. El nombre. nslookup saseformacion.es. Apunta la IP. ¿Está en tu red o tendrá que salir por el router?
  4. La conversación. curl -I https://saseformacion.es/ (curl.exe en Windows). Apunta el código.
  5. Rómpelo tres veces. Pide una página que no exista en esa web; luego un dominio que no exista; luego https://192.0.2.1/ con --connect-timeout 3. Escribe en qué paso falla cada uno.
  6. Lo que llega. Abre la web en el navegador, F12 → Red, recarga. Cuenta las peticiones y busca la primera, la del HTML.

Si en el paso 5 has sabido decir dónde falla cada uno sin mirar la tabla, ya sabes diagnosticar una web que no carga mejor que la mayoría en su primer mes.

Por dónde seguir

Cada paso tiene su vídeo de un minuto:

  • IP, router y DNS — la dirección, la puerta y la traducción.
  • Subnetting: para qué sirve una máscara — mismas IPs, distinta máscara, distinta red.
  • HTTP: qué ocurre al abrir una web — la petición, la respuesta y por qué un 404 no es una web caída.
  • HTML, CSS y JavaScript: el reparto real — qué hay, cómo se ve y qué hace.

Y si las redes o el desarrollo web se te están haciendo cuesta arriba, en SASE Formación damos clases de informática y programación, presenciales y online. La primera clase de prueba es gratuita, y en informática las clases son individuales. Escríbenos y nos cuentas por dónde vas: saseformacion.es.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *