Este artigo é uma tradução livre de uma das entradas do
Com a permissão do autor (bem como para maior clareza e interesse), colori-o com links e complementei-o com algumas pesquisas pessoais.
Introdução
Pelo menos um usuário do par de conexão deve estar no modo ativo neste momento. O mecanismo de passagem NAT será útil quando o modo ativo não estiver configurado em nenhum dos lados. Isso geralmente ocorre devido a um firewall ou dispositivo NAT bloqueando as conexões de entrada.
Se ambos os clientes estiverem no modo ativo
O cliente inicial envia um comando contendo seu próprio endereço IP e porta
Se um dos clientes estiver no modo passivo
Através do hub, um cliente passivo A envia um comando
Como um servidor S no caso acima há um hub DC
Se ambos os clientes estiverem no modo passivo em
Clientes por trás de diferentes NATs A и B juntou-se ao hub S.
Esta é a aparência da conexão com o hub do lado do cliente A
O hub aceita conexões na porta 1511. Cliente A faz conexões de saída de sua rede privada através da porta 50758. O hub, por sua vez, vê o endereço do dispositivo NAT, trabalha com ele e o transmite aos clientes de acordo com seus identificadores.
Cliente A envia para o servidor S mensagem pedindo ajuda para se conectar com um cliente B.
Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991
Também no modo passivo, o cliente B, tendo recebido este comando, deve reportar sua porta privada usada para conectar-se ao hub via NAT.
Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991
Depois de receber esta informação o cliente A tenta imediatamente estabelecer uma conexão com o cliente B e relata seu próprio porto privado.
Hub: [Outgoing][178.79.159.147:1511] D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991
Qual é o interesse? O interesse está em mudar o ponto final da mesma conexão criando uma nova conexão para um endereço público através de uma porta privada já utilizada.
Bingo!
Claro, neste caso o NAT do cliente B tem todo o direito de rejeitar a primeira solicitação de conexão de um cliente A, mas seu próprio pedido corre para o “buraco” criado por essa mesma conexão, e a conexão é estabelecida.
Ilustração adequada para todo o processo com a ressalva de que
Epílogo
No momento em que este artigo (original) foi escrito, aproximadamente metade dos clientes DC estavam trabalhando em modo passivo. Isto significa que um quarto de todas as ligações possíveis não pode ser feito.
No futuro
Fonte: habr.com