11. Ejercicios y demostraciones prácticas

Para consolidar los conceptos anteriores, reunimos pruebas rápidas que podés realizar con herramientas gratuitas. Cada ejercicio apunta a validar visualmente cómo operan HTTP/2, HTTP/3, WebSocket, DoH/DoT, MQTT y mDNS en entornos reales.

11.1 Inspección de HTTP/2 y HTTP/3 en el navegador

Usaremos las DevTools de Chrome o Edge, aunque el procedimiento es similar en Firefox:

  1. Abrí las DevTools con F12, ve a la pestaña Network y marca la opción Disable cache.
  2. Visitá un sitio que soporte HTTP/2, por ejemplo https://www.cloudflare.com.
  3. En la columna Protocol deberías ver “h2”. Si pruebas https://www.youtube.com notarás “h3” para las solicitudes principales.
  4. Para profundizar, habilitá la vista “Waterfall” y compará cómo h3 reduce la espera ante recursos bloqueados.

También podés usar curl -I --http3 https://www.youtube.com para confirmar la negociación desde línea de comandos.

11.2 Simulación WebSocket con wscat o JavaScript

Si tenés Node.js instalado, la utilidad wscat permite conectarte a un eco público:

npm install -g wscat
wscat -c wss://echo.websocket.events

Escribí cualquier texto y deberías recibir el mismo mensaje como respuesta. Si preferís código en el navegador:

const ws = new WebSocket("wss://echo.websocket.events");
ws.onopen = () => ws.send("Hola WebSocket");
ws.onmessage = (evt) => console.log("Eco:", evt.data);

El objetivo es verificar el flujo de apertura, envío y recepción en un canal persistente.

11.3 Prueba de DNS seguro con curl

Repetimos la consulta DNS usando DoH y DoT para observar la diferencia respecto al puerto 53 tradicional:

# DoH contra Cloudflare
curl -H "accept: application/dns-json" \
  "https://cloudflare-dns.com/dns-query?name=www.ejemplo.com&type=A"

# DoT usando openssl s_client (opcional)
openssl s_client -connect dns.google:853 -quiet <<'EOF'
GET /dns-query?name=www.ejemplo.com&type=A HTTP/1.1
Host: dns.google
Accept: application/dns-message

EOF

Compará el resultado con un nslookup www.ejemplo.com tradicional y notarás que la respuesta cifrada contiene la misma información sin exponerla a terceros.

11.4 MQTT con mosquitto_pub y mosquitto_sub

El broker de prueba test.mosquitto.org nos permite practicar sin montar infraestructura:

# Ventana 1: suscribirse a un topic
mosquitto_sub -h test.mosquitto.org -t "labs/demo/temperatura" -v

# Ventana 2: publicar datos simulados cada 5 segundos
while true; do
  mosquitto_pub -h test.mosquitto.org -t "labs/demo/temperatura" -m "$(date +%T) - 24.$((RANDOM%5))"
  sleep 5
done

Observá cómo la ventana suscrita recibe cada mensaje en tiempo real, incluso si reiniciás la sesión del publicador.

11.5 Descubrimiento mDNS con avahi-browse

Para este ejercicio necesitás Linux o macOS con soporte mDNS. El comando avahi-browse lista todos los servicios anunciados en la red local:

# Mostrar servicios en tiempo real
avahi-browse -art

# Ver detalles de un servicio específico, por ejemplo AirPlay
avahi-browse _airplay._tcp --resolve

Los servicios aparecen con su nombre .local, IP, puerto y atributos adicionales definidos mediante DNS-SD. Si no ves resultados, verificá que la red permita tráfico multicast (224.0.0.251).