Tem explicado na RFC.
https://tools.ietf.org/html/rfc5128Vou explicar de forma "simplista", da forma que eu entendi como funciona, se tiver algum erro, fiquem à vontade para me corrigir, para que eu aprenda mais também.
Exemplo:
Máquina 1 quer falar com a máquina 2 diretamente
SERVIDOR -> para iniciar a conexão
MAQUINA 1 -> atras de roteadores etc..
MAQUINA 2 -> atras de roteadores etc...
SERVIDOR ESCUTANDO NA PORTA 1234
MAQUINA 1 -> ENVIA MENSAGEM PARA O SERVIDOR NA PORTA 1234, neste momento o servidor sabe a porta que está sendo usada pela maquina 1, por exemplo, ele pediu para se conectar ao servidor na porta 1234, mas atravessou vários roteadores e a conexão de saída dele é feita na porta através do IP PUBLICO da MAQUINA 1 e PORTA 4123 (apenas um exemplo)
Quando o servidor responde para a MAQUINA 1, ele manda a mensagem para o IP PUBLICO da maquina 1 e porta 4123 , as rotas internas são feitas pelos roteadores, as portas mudam quando passam de um equipamento para outro.
MAQUINA 2 -> Envia mensagem para o servidor porta 1234, da mesma forma que a maquina 1, mas por exemplo, a porta usada pela maquina 2 é IP_PUBLICO porta 51099 (apenas exemplo). Quando o servidor responder para a maquina 2, ele vai enviar a mensagem para IP_PUBLICO da maquina 2, porta 51099
Neste momento o servidor sabe qual IP PUBLICO de cada maquina, e se a MAQUINA 1 enviar um dado UDP para o IP PUBLICO da MAQUINA2:51099 a máquina 2 vai receber os dados. e se a MAQUINA 2 enviar dado para a IP_PUBLICO_MAQUINA1:4123 ela vai receber.
Isso acontece, pois as rotas permanecem nas tabelas internas dos roteadores por algum tempo, isso varia de acordo com o tipo de equipamento, mas geralmente funciona.
À partir disso, você pode criar mecanismos de comunicação direta P2P UDP entre uma máquina e outra, já fiz uns testes, e funciona. A maioria dos aplicativos P2P usam essa técnica, que pelo que eu vi, é a mais simples , e não precisa configurar nada nos roteadores.