Realmente no puedes, porque UDP es un protocolo sin conexión. Eso significa (entre otras cosas) que, a diferencia de TCP, cuando su computadora envía un mensaje UDP a otra computadora, no se espera que el receptor le envíe un acuse de recibo. De hecho, incluso no hay forma de que el receptor haga eso; Es un protocolo muy simple. Cuando envía un mensaje UDP, el destino lo recibió y lo procesó, o no lo hizo. No tiene forma de saberlo y no existe un mecanismo de recuperación.
Teóricamente, si un puerto UDP está formalmente “cerrado” (por ejemplo, con una regla de rechazo de iptables), el host de destino puede responder con un paquete ICMP “Puerto inalcanzable” para informar al remitente. Pero no hay garantía de que lo haga, también puede soltar el mensaje en silencio.
De nuevo, esto es muy diferente de TCP. Si envía una solicitud de conexión TCP (un paquete SYN) a un puerto TCP en un servidor, pueden suceder tres cosas:
- ¿Qué es la traducción de direcciones de red (NAT)?
- ¿Cuál fue la primera red informática y cuál fue su velocidad?
- Cuando me conecto a mi enrutador de Internet a través de una conexión inalámbrica, dice acceso limitado y no puedo conectarme a Internet. ¿Cómo puedo solucionar esto?
- Principales empresas de Internet: ¿Cómo es ser ingeniero de redes en Comcast?
- ¿Qué se entiende por usar flujos TCP paralelos? ¿Se puede mejorar el rendimiento mediante el uso de flujos TCP paralelos?
- El servidor responde con un paquete SYN, ACK. Significa que se acepta la conexión y que el puerto está abierto.
- El servidor responde con un paquete RST. Significa que la conexión se rechaza y el puerto está cerrado.
- El servidor no responde. Después de un tiempo, puede asumir que el servidor nunca recibió su SYN (y puede intentarlo de nuevo) o simplemente lo ignoró (siguiendo una regla DROP iptables, por ejemplo). Si SYN múltiple no recibe respuesta, puede suponer que el puerto está cerrado y con firewall.
Por lo tanto, siempre puede determinar el estado del puerto. Por el contrario, si envía un mensaje UDP a un puerto en un servidor:
- O bien el servidor responde con un paquete ICMP “Puerto inalcanzable”: significa que el puerto está “cerrado” y con cortafuegos.
- O el servidor no responde nada … lo que puede significar cualquier cosa, desde que el paquete ha sido recibido y procesado hasta que ningún servicio está escuchando en ese puerto del puerto que está siendo cortafuegos, pero de manera diferente (con un DROP y no una regla de RECHAZO).
Por lo tanto, generalmente no puede saber qué sucedió solo con la información proporcionada por el protocolo UDP.