una - sockets datagrama en java
Cómo enviar un paquete UDP a través de IP pública a través de NAT? (1)
Mi pregunta es porque mi dispositivo está más allá de NAT; la dirección IP y el número de puerto que obtengo son NAT o el dispositivo real.
La IP y el puerto que identifica del paquete son aquellos en los que el NAT creó una asignación para el cliente. En palabras simples, es el IP y el puerto del NAT al que está conectado el dispositivo.
¿Cómo enviar el paquete UDP a ese dispositivo a través de NAT?
Debe responder en el IP y puerto detectado por el servidor del paquete que recibió del cliente. Más claramente necesita implementar UDP Holepunching .
Supongo que primero deberías entender los problemas de red relacionados con la conexión a dispositivos que funcionan bajo un NAT. Varios RFC s están disponibles para NAT Traversal y UDP Punching .
Aquí hay algunas fuentes:
http://en.wikipedia.org/wiki/Network_address_translation
http://en.wikipedia.org/wiki/UDP_hole_punching
Tengo un servidor UDP ejecutándose en mi red privada. Tengo un dispositivo que está más allá de NAT que envía paquetes UDP a mi servidor a través de IP pública. Puedo recibir los paquetes UDP, analizarlos y puedo ver la carga de pago, el src y el puerto de destino. Ahora necesito enviar un mensaje ACK a ese dispositivo, así que he capturado los números de puerto y de IP y le he enviado un paquete UDP. Pero no pude ver ningún paquete UDP en ese dispositivo.
Mi pregunta es porque mi dispositivo está más allá de NAT; la dirección IP y el número de puerto que obtengo son NAT o el dispositivo real.
¿Cómo enviar el paquete UDP a ese dispositivo a través de NAT?