¿Cómo envían los juegos en línea paquetes UDP a través de Internet?

¿Cómo envían los juegos en línea paquetes UDP a través de Internet?

¿Cómo los juegos multijugador en línea que utilizan UDP obtienen los paquetes entregados entre redes a través de Internet? Por lo que tengo entendido, los clientes tendrían que habilitar el reenvío de puertos en sus enrutadores para que los paquetes lleguen a su computadora. ¿Es esto lo que los grandes juegos en línea (WoW, Diablo, etc.) exigen que hagan los jugadores?

Por ejemplo, recientemente creé un servidor que maneja el tráfico UDP. Simplemente refleja todo lo que ha enviado el remitente. Implementé esto en un servidor en Internet. Solo puedo devolver los ecos al remitente después de habilitar el reenvío de puertos, pero esto no funcionará si hay dos remitentes en la misma red local.

Respuesta1

Respuesta corta: seguimiento de conexión NAT

Una cosa para recordar es que la gran mayoría de los enrutadores en Internet IPv4 son enrutadores NAT.

La mayoría de las implementaciones de NAT realizan un seguimiento inteligente. Cuando envía UDP desde un cliente interno a algún lugar, tendrá un puerto de destino y un puerto de origen. Si el tráfico llega con los puertos invertidos, ese tráfico se enrutará de regreso a su cliente y se permitirá en la mayoría de los firewalls.

NAT/Firewalls con seguimiento detecta estos paquetes como relacionados y los reenvía.

Ejemplo basado en comentarios con serveren el puerto 5000UDP

  • El cliente envía un paquete para server:5000, fuenteclient:5001
  • El primer enrutador NAT verá un paquete con la IP de origen client:5001, el puerto y el destino server:5000.
  • El enrutador envía esto en camino y tendráNATip:NATport
  • El servidor recibe esto y crea una respuesta NATip:NATportque tiene la fuente deserver:5000
  • NAT recibe esto y tiene origen server:5000y destino NATip:NATport, que coincide con el paquete que se envió (pero tiene origen y destino invertidos)
  • NAT envía esto a client:5001todavía con la fuenteserver:5000

La IP+puerto de origen y la IP+puerto de destino crean una combinación que se puede rastrear. (hay más detalles, pero esto es lo básico)

Un poco más de lecturaPero debería buscar mejor documentación sobre esto y no simplemente referirme a evidencia anecdótica de lo que he visto.

información relacionada