graph TD subgraph PC_Analisis ["PC (192.168.1.10)"] CMD["CMD.EXE"] end subgraph Red_Local ["Red Local (192.168.1.0/24)"] SW["Switch"] PLC["PLC (192.168.1.50)"] end subgraph Internet R1["Router (192.168.1.1)"] R2["Router ISP"] DNS["DNS Google (8.8.8.8)"] end CMD --"ping 192.168.1.50
ICMP Echo Request"--> SW SW --> PLC PLC --"ICMP Echo Reply"--> SW SW --> CMD CMD --"tracert 8.8.8.8"--> SW SW --> R1 R1 --> R2 R2 --> DNS style CMD fill:#2c3e50,color:white style PLC fill:#27ae60,color:white style R1 fill:#f39c12,color:white

1. Ping: El "Sonar" de la Red

El comando ping es la herramienta de diagnóstico más básica y fundamental. Su nombre es una analogía con el sonar de un submarino: envía una pequeña señal y espera a oír el eco. Técnicamente, `ping` utiliza el protocolo ICMP (Internet Control Message Protocol) para enviar un paquete de tipo "Echo Request" a una dirección IP de destino. Si el dispositivo de destino está vivo y accesible, debe responder con un paquete "Echo Reply".

Para un técnico de UF1794, `ping` responde a dos preguntas vitales:

  • ¿Hay conectividad? (Reachability): Si obtienes una respuesta, significa que existe un camino lógico de Capa 3 entre tu PC y el dispositivo. Si obtienes "Host de destino inaccesible" o "Tiempo de espera agotado", hay un problema de conectividad.
  • ¿Cuál es la latencia? (Latency): El comando te muestra el tiempo de ida y vuelta (Round-Trip Time - RTT) en milisegundos. En una red de planta cableada, este tiempo debe ser muy bajo (< 1-2 ms). Si ves tiempos de 50 ms o más, puede indicar congestión en la red o un dispositivo sobrecargado.


2. Tracert / Traceroute: El "Mapa" de la Ruta

Mientras que `ping` solo te dice si llegas al destino, tracert (en Windows) o traceroute (en Linux/macOS) te muestra el mapa de la ruta, es decir, todos los "saltos" (hops) a través de routers que da un paquete para llegar a su destino. Es una herramienta de diagnóstico de Capa 3 indispensable para problemas de enrutamiento.

Funciona de una manera ingeniosa: envía una serie de paquetes (normalmente UDP o ICMP) con un valor de TTL (Time To Live) incremental. El TTL es un contador que cada router decrementa en 1. Si un router recibe un paquete con TTL=1, lo decrementa a 0, lo descarta y envía un mensaje ICMP de "Time Exceeded" de vuelta al origen. `tracert` aprovecha esto:

  1. Envía un paquete con TTL=1. El primer router lo descarta y responde. ¡Ya conocemos la IP del primer salto!
  2. Envía un paquete con TTL=2. El segundo router lo descarta y responde. ¡Ya conocemos la IP del segundo salto!
  3. Repite el proceso hasta que el paquete llega al destino final.


3. Diagnóstico Práctico en la Red OT

Imagina que un técnico no puede conectar con un PLC en la IP 192.168.10.20 desde su portátil en la 192.168.1.15. El flujograma de diagnóstico usando estas herramientas sería:

  1. Paso 1: Ping a uno mismo. ping 127.0.0.1. Si esto funciona, la pila TCP/IP de tu propio PC está bien.
  2. Paso 2: Ping a la puerta de enlace (Gateway). ping 192.168.1.1. Si esto funciona, tu conexión con la red local y el router principal es correcta. Si falla, el problema está en tu cable, tu puerto del switch o la configuración de tu IP/máscara.
  3. Paso 3: Ping al destino final. ping 192.168.10.20. Si funciona, el problema no es de red, sino de la aplicación (ej. un firewall en el PLC). Si falla, pasamos al siguiente paso.
  4. Paso 4: Trazar la ruta. tracert 192.168.10.20. Esto nos mostrará por dónde se está perdiendo el paquete. Si el `tracert` se detiene en el segundo router, ya sabemos que el problema está en la tabla de enrutamiento de ese equipo específico, y podemos centrar ahí nuestros esfuerzos.

Dominar esta secuencia lógica permite a un técnico aislar un problema de conectividad en minutos, diferenciando si es un fallo de Capa 1 (cable), Capa 2 (switch local) o Capa 3 (router/gateway).

Ejemplo de Salida de Ping y Tracert
C:\>ping 8.8.8.8

Haciendo ping a 8.8.8.8 con 32 bytes de datos:
Respuesta desde 8.8.8.8: bytes=32 tiempo=10ms TTL=116
Respuesta desde 8.8.8.8: bytes=32 tiempo=11ms TTL=116

C:\>tracert 8.8.8.8

Traza a la dirección dns.google [8.8.8.8]
sobre un máximo de 30 saltos:

  1    <1 ms    <1 ms    <1 ms  192.168.1.1
  2     8 ms     7 ms     8 ms  10.20.30.1 [Router ISP]
  3    10 ms    11 ms    10 ms  google-gw.isp.net [200.x.x.x]
  4    11 ms    10 ms    10 ms  dns.google [8.8.8.8]

Traza completa.
Figura 1: Salida de los comandos `ping` y `tracert`. `ping` nos da una respuesta rápida sobre la alcanzabilidad y latencia. `tracert` nos proporciona un mapa detallado de cada router que atraviesa el paquete para llegar al destino, permitiendo identificar el punto exacto de un fallo de enrutamiento.
Fuente: Elaboración Propia.

📝 Evaluación Técnica: Diagnóstico de Rutas

1. ¿Qué dos piezas de información críticas nos proporciona el comando `ping` sobre un dispositivo de destino?

2. ¿Para qué se utiliza principalmente el comando `tracert` (o `traceroute`) en el diagnóstico de redes?

3. Desde tu portátil, haces `ping` a un PLC en tu misma subred y funciona. Luego, haces `ping` a un servidor en otra subred y falla. Sin embargo, desde el PLC sí se puede hacer `ping` a ese servidor. ¿Cuál es la causa más probable del problema?

🤖 Ejercicio Práctico 6: Reimplementando Ping con Scapy

Objetivo: Entender a bajo nivel cómo funciona un `ping`, construyendo manualmente un paquete ICMP Echo Request.

Copia el siguiente *prompt* y pégalo en un modelo de IA (como ChatGPT, Gemini o Claude).

Actúa como un desarrollador de herramientas de red. Escribe un script en Python que utilice la librería `scapy` para recrear la funcionalidad de un único `ping`. El script debe: 1. Importar las capas `IP` e `ICMP` de `scapy`. 2. Pedir al usuario una IP de destino. 3. Construir un paquete desde cero: `paquete = IP(dst=ip_destino)/ICMP()`. 4. Enviar el paquete y esperar una única respuesta usando la función `sr1()` con un timeout de 2 segundos. 5. Si se recibe una respuesta, imprimir "Respuesta recibida desde [IP origen]". 6. Si no se recibe respuesta (el resultado de `sr1` es `None`), imprimir "Tiempo de espera agotado". Comenta el código explicando que `sr1()` es la función de Scapy para enviar un paquete y recibir la primera respuesta, ideal para simular un único ping.