La mejor forma de aprender los protocolos de capa de red es observarlos en acción. Este tema recopila ejercicios concretos que puedes replicar en tu entorno o en simuladores para reforzar los conceptos vistos.
Objetivo: verificar conectividad y observar la ruta que siguen los paquetes.
Test-Connection reddit.com -Count 4 |
Select-Object Address, ResponseTime, IPV4Address
Test-NetConnection reddit.com -TraceRoute |
Select-Object -ExpandProperty TraceRoute
Usa Wireshark para ver el intercambio ICMP (Echo Request/Reply) y cómo disminuye el TTL en cada salto.
Objetivo: comprender cómo se resuelven direcciones IP en MAC dentro de la red local.
arp -d *
arp -a
arp y observa la solicitud “Who has” y la respuesta correspondiente.Documenta la MAC obtenida y el tiempo que permanece en caché antes de expirar.
Objetivo: practicar la entrega automática de direcciones y la traducción para acceso a Internet.
ip dhcp pool LAN
network 192.168.10.0 255.255.255.0
default-router 192.168.10.1
dns-server 1.1.1.1
access-list 1 permit 192.168.10.0 0.0.0.255
ip nat inside source list 1 interface GigabitEthernet0/0 overload
interface GigabitEthernet0/0
ip nat outside
interface GigabitEthernet0/1
ip nat inside
Anota las traducciones NAT con show ip nat translations para entender cómo se asignan puertos externos.
Objetivo: afianzar el subneteo sin depender de calculadoras.
from ipaddress import ip_network
for subred in ip_network("192.168.50.0/24").subnets(new_prefix=27):
hosts = list(subred.hosts())
print(f"{subred} - {hosts[0]} a {hosts[-1]} - Broadcast: {subred.broadcast_address}")
Este ejercicio fortalece la intuición sobre cuántos hosts ofrece cada prefijo y cómo documentarlos.
Objetivo: automatizar la medición de latencias con Python para detectar variaciones.
import subprocess
import statistics
def latencia_promedio(host, repeticiones=5):
comando = ["ping", "-4", host, "-n", str(repeticiones)]
resultado = subprocess.run(comando, capture_output=True, text=True, check=True)
tiempos = []
for linea in resultado.stdout.splitlines():
linea = linea.lower()
if "time=" in linea:
parte = linea.split("time=")[1]
elif "tiempo=" in linea:
parte = linea.split("tiempo=")[1]
else:
continue
valor = parte.split("ms")[0].strip()
try:
tiempos.append(float(valor))
except ValueError:
continue
if tiempos:
return statistics.mean(tiempos)
raise RuntimeError("No se pudieron obtener tiempos de ping")
if __name__ == "__main__":
print(f"Latencia: {latencia_promedio('cloudflare.com'):.2f} ms")
Ejecuta el script cada cierto tiempo y grafica los resultados para evaluar la estabilidad de tu enlace.
Estos ejercicios conectan la teoría con la práctica y te preparan para diagnosticar redes reales. Ajusta los escenarios (tamaños de subred, cantidad de routers, servicios publicados) según tus necesidades.
En el próximo y último tema sintetizaremos los aprendizajes de la capa de red y presentaremos los siguientes pasos en el estudio de redes.