Como estabelecer comunicação Peer to Peer sem encaminhamento de porta?

0

Meu ISP me fornece um endereço IP estático local. Como posso estabelecer uma conexão com outro computador na Internet sem ter um endereço IP público? Eu só quero fazer uma aplicação simples que pode enviar dados para outro computador fora da minha rede local. Eu sei um pouco sobre o encaminhamento de porta, mas infelizmente meu ISP não pode ser encaminhado para mim. É realmente possível sem o encaminhamento de porta? Como? Obrigado.

    
por muntasir2000 21.03.2014 / 09:56

1 resposta

1

Se a outra parte puder configurar o encaminhamento de porta (ou não usar NAT), tudo estará concluído. Uma conexão TCP é sempre capaz de duplex.

Se isso não for possível, você pode recorrer a " Hole Punching ", uma técnica que engana os dispositivos NAT para permitir um conexão "de entrada", com a ajuda de um terceiro universalmente acessível.

Extraído do artigo vinculado, o princípio básico:

    • O peer A envia um SYN para o par B
    • O peer B envia um SYN ao par A
    • Quando o NAT-a recebe o SYN de saída do Peer A, ele cria um mapeamento em sua máquina de estado.
    • Quando o NAT-b recebe o SYN de saída do Ponto B, ele cria um mapeamento em sua máquina de estado.
  1. Ambos SYN cruzam em algum lugar ao longo do caminho da rede e, em seguida:

    • SYN do par A alcança NAT-b, SYN do par B atinge NAT-a
    • Dependendo do tempo desses eventos (onde na rede o SYN se cruza), pelo menos um dos NAT permitirá que o SYN entrante, e mapeá-lo para o par de destino interno
  2. Após o recebimento do SYN, o par envia um SYN + ACK de volta e a conexão é estabelecida.

por 21.03.2014 / 10:13