Conectando o P2P ao NAT?

1

Comecei a explorar a opção de conectar com outro usando uma conexão p2p, então codifiquei um programa de soquete simples em JAVA para dispositivos Android em que o usuário em que os usuários podem compartilhar mensagens simples p2p (eu não tenho nenhum idéia sobre NAT então). Eu tenho que saber sobre o NAT, então agora preciso estabelecer uma conexão TCP com outro usuário que usa um servidor para a descoberta, mas a carga é transferida p2p. Eu também vi o XMPP (uma explicação muito boa e detalhada de como o protocolo funciona é aqui ) e UPnP, mas eu não sei como implementá-los.

Outra questão interessante que surge é do BitTorrent, porque eles podem trabalhar em qualquer dispositivo e até mesmo atrás de um NAT. Eu não sou capaz de obter qualquer explicação sobre como o BitTorrent funciona.

Eu pesquisei muito, mas estou preso.

Minhas perguntas são:

  1. Uma explicação detalhada do BitTorrent (como aqui , e não como os torrents funcionam ) e como é capaz de contornar o NAT?
  2. Existe uma maneira de criar uma entrada NAT programaticamente?
  3. A programação de soquetes é suficiente para p2p?
  4. Qual é a dificuldade de criar seu próprio protocolo e como posso criar um?
  5. Se dois dispositivos D1 e D2 quiserem comunicar o p2p e conhecerem o IP um do outro. D1 envia um pedido para D2 e que não pode passar pelo NAT do D2, mas deve haver uma entrada criada no NAT do D1. Então, quando o D2 tenta enviar algo, o NAT do D1 deve descobrir uma entrada com o IP do D2. Então, por que o pacote não é permitido por ele?

Editar:

Um dos métodos discutidos na rede para trabalhar com o NAT é usando o SIP. Isso funcionou para o Bleep, mas não consigo encontrar nenhuma implementação disso na rede. Alguém poderia explicar como o SIP funciona?

    
por Mayank 21.05.2015 / 16:40

0 respostas