Como os jogos online enviam pacotes UDP pela Internet?

Como os jogos online enviam pacotes UDP pela Internet?

Como os jogos multijogador online que usam UDP fazem com que os pacotes sejam entregues entre redes pela Internet? Pelo que entendi, os clientes teriam que habilitar o encaminhamento de porta em seus roteadores para que os pacotes chegassem ao seu computador. É isso que os grandes jogos online (WoW, Diablo, etc) exigem que os jogadores façam?

Por exemplo, criei recentemente um servidor que lida com o tráfego UDP. Ele apenas ecoa tudo o que o remetente enviou. Eu implantei isso em um servidor na internet. Só consigo devolver os ecos ao remetente depois de ativar o encaminhamento de porta, mas isso não funcionará se houver dois remetentes na mesma rede local.

Responder1

Resposta curta: rastreamento de conexão NAT

Uma coisa a lembrar é que a grande maioria dos roteadores na Internet IPv4 são roteadores NAT.

A maioria das implementações de NAT faz rastreamento inteligente. Quando você envia UDP de um cliente interno para algum lugar, você terá uma porta de destino e uma porta de origem. Se o tráfego chegar com as portas invertidas, esse tráfego será roteado de volta para o seu cliente e permitido na maioria dos firewalls.

NAT/Firewalls com rastreamento detectam esses pacotes como relacionados e os encaminham de volta.

Exemplo baseado em comentários serverna porta 5000UDP

  • O cliente envia um pacote para server:5000a origemclient:5001
  • O primeiro roteador NAT verá um pacote com IP de origem e porta client:5001e destino server:5000.
  • O roteador envia isso a caminho e teráNATip:NATport
  • O servidor recebe isso e cria uma resposta NATip:NATportque tem a origem doserver:5000
  • NAT recebe isso e tem source server:5000destination NATip:NATport, que corresponde ao pacote que foi enviado (mas tem origem e destino invertidos)
  • NAT envia isso para client:5001ainda com a fonteserver:5000

O ip+porta de origem e o ip+porta de destino criam uma combinação que pode ser rastreada. (há mais detalhes, mas isso é o básico)

Mais um pouco de leituraMas eu deveria desenterrar uma documentação melhor sobre isso e não apenas me referir a evidências anedóticas do que vi vivenciar.

informação relacionada