Pregunta

Sé que la palabra "conexión" no es realmente apropiado cuando se habla de UDP, pero ...

¿Cómo un servidor (el que tiene la conocida IP) obtener sus paquetes UDP a través de Internet a un cliente que está detrás de NAT?

Por ejemplo: dicen que un cliente se conecta y se autentica en el servidor utilizando algunos mensajes a través de TCP. En este punto el servidor está listo para iniciar la transmisión de datos al cliente a través de UDP, pero ¿cómo el servidor sabe dónde para hacer frente a los paquetes UDP para que pudieran encontrar su camino a través de los enrutadores NAT para el cliente?

Si el cliente envía un puño "Estoy listo para la transmisión en favor" de mensajes a través de UDP, serían los routers NAT mantener el puerto abierto para que el servidor puede responder con su flujo de datos UDP?

O soy waay fuera de pista aquí?

¿Fue útil?

Solución

En general, el NAT delante del cliente en el nivel TCP será capaz de determinar que la conexión a la UDP fue crear. Una vez dicho esto, el NAT en el lado del cliente tendrá que ser configurado para aceptar paquetes UDP desde el puerto del servidor SRC, y luego enviarlos a la dirección IP de destino interno (cliente). Lo importante para recordar si NAT es quien es la persona que llama y quién es el destinatario de la llamada. NAT difieren en su aplicación y capablity por lo que un genérico fácil de implementar la solución es probablemente lo que es posible que desee poner en práctica, en función de sus necesidades.

Tiene usted razón en el supuesto, yo creo, que en su caso el cliente no será capaz de recibir el flujo UDP de información. En su caso el cliente tendrá que enviar su IP WAN a su servidor para iniciar la conexión UDP. Encontrar a sus clientes IP WAN puede ser complicado pero hay sitios web que ayudarán a su determing su IP WAN devolviéndolo en una página de texto.

Si se crea la conexión UDP después de la conexión TCP por el servidor abrir un socket con el cliente a un puerto UDP conocido entonces, UPnP podría ser vale la pena analizar que le permitirá configura automáticamente el puerto remite de su NAT, eso es sólo si su NAT compatible con UPnP como es el caso de los routers DSL.

Una obra-a-redonda sería la de cliente para abrir los dos sockets TCP y UDP en el servidor. Dado que el cliente detrás del NAT inició la conexión de los estados de los protocolos TCP y UDP se añadirán a la tabla de la conexión de la NAT.

Otros consejos

Haciendo caso omiso de la prestación de traducción de puertos conocidos (es decir, datos sobre este puerto va a este dirección) en su router (siempre que el NAT), puede utilizar UDP perforación .

Asumo que no estamos hablando de multidifusión , en el que cada par se une a un grupo y anuncia que a las partes interesadas (en este caso del router), que puede entonces realizar el encaminamiento apropiado. A pesar de que normalmente se utiliza para encaminar el tráfico de manera eficiente a varios hosts, el mecanismo de enrutamiento por grupo trabajaría para que usted describe anteriormente.

Si usted está hablando de la transmisión de protocolos como SIP o RTSP entonces la forma en que funciona es que el puerto UDP que el cliente quiere que el servidor envíe a está especificado en la solicitud de establecimiento de llamada.

El servidor enviará a ese puerto y el tráfico puede o no puede llegar hasta el cliente dependiendo de si el NAT se ha traducido la elección clien't del puerto a un número diferente o no.

Cuando el servidor recibe su primer UDP transmitido paquete del cliente y si es en un puerto diferente a la que se envía el entonces migrará hacia ella. Esto permite que el UDP del servidor de llegar a través de NAT, ya que el cliente ya ha creado la asignación de NAT enviando al servidor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top