La teoría de la capa de transporte cobra sentido cuando se observan conexiones reales: sockets en escucha, handshakes en vivo y retransmisiones capturadas. Este tema reúne herramientas de línea de comandos y utilidades gráficas para estudiar TCP y UDP en cualquier sistema.
Veremos cómo usar netstat, ss, telnet, nc (netcat) y Wireshark para diagnosticar puertos abiertos, inspeccionar handshakes y comprender qué ocurre cuando la red pierde paquetes.
netstat es el clásico para listar conexiones, mientras que ss (socket statistics) ofrece más velocidad y filtros avanzados en Linux.
netstat -tulpn # sockets TCP/UDP en escucha
netstat -ant | grep EST # conexiones TCP establecidas
netstat -s | grep retrans # métricas de retransmisiones
ss -t state established '( sport = :443 )'
ss -u -a # sockets UDP activos
ss -ti dst 203.0.113.10 # incluye información de timers
Los campos timer de ss -ti revelan el RTO actual y los valores de retransmisión pendientes de cada socket, útiles para detectar problemas de desempeño.
Aunque quedó en desuso como protocolo seguro, telnet sigue siendo práctico para verificar si un puerto TCP responde, especialmente en servidores sin utilidades modernas.
telnet www.example.com 80
GET / HTTP/1.0
Host: www.example.com
Si el puerto está abierto, se observa el banner o la respuesta del protocolo. Si telnet no puede conectar, el problema puede ser de firewall, DNS o servicio caído.
nc es una navaja suiza para TCP/UDP: puede actuar como cliente o servidor, transferir archivos y generar tráfico sintético.
# Escuchar en TCP 9000 y volcar lo recibido
nc -l 9000
# Escuchar en UDP 9999
nc -lu 9999
echo "ping" | nc 198.51.100.5 9000
nc -u 198.51.100.5 9999 < archivo.bin
Muchos administradores combinan netcat con scripts para simular tráfico y comprobar balanceadores o firewalls.
Wireshark permite filtrar tramas por conversación usando expresiones como tcp.stream eq 5. Un análisis típico:
tcp.flags.syn == 1 para ver los handshakes.Las columnas “Bytes in flight” y “Calculated window size” ayudan a estimar la ventana efectiva. Activarlas facilita correlacionar control de flujo con la latencia observada.
Un three-way handshake se interpreta así:
| Paso | Flag | Contenido clave |
|---|---|---|
| 1 | SYN | SEQ = ISN del cliente, opciones MSS/SACK. |
| 2 | SYN-ACK | ACK al ISN del cliente, anuncia ISN del servidor. |
| 3 | ACK | Confirma el ISN del servidor y habilita el flujo de datos. |
Con Wireshark se puede seleccionar los tres paquetes, usar “Time Display Format” en microsegundos y medir la latencia exacta entre cada paso.
Para reproducir una retransmisión en laboratorio se puede limitar la velocidad o introducir pérdida artificial con tc netem (Linux). Una vez aplicada la condición, se observa en Wireshark:
Esta práctica confirma que el control de congestión y las retransmisiones funcionan como se describió en los temas anteriores.
Windows ofrece cmdlets para combinar diagnóstico local y remoto:
Test-NetConnection -ComputerName www.example.com -Port 443 -TraceRoute
Get-NetTCPConnection -State Established |
Sort-Object -Property RemoteAddress |
Select-Object -First 10 LocalAddress, LocalPort, RemoteAddress, State
Test-NetConnection combina ping, resolución DNS y conexión TCP, devolviendo el RTT estimado. Ordenar las conexiones establecidas permite detectar clientes que mantienen sockets abiertos durante demasiado tiempo.
tshark o tcpdump permite comparar entornos y detectar regresiones.