O exemplo comum de um protocolo P2P é o Bittorrent. Neste protocolo, as comunicações são frequentemente gerenciadas por um rastreador. Isso significa que, para transferência de dados, são necessários no mínimo três nós:
+-----+ +---------+ +------+
| | 1.1.1.1:500 | | | |
| You |<------------->| Tracker |<---->| Peer |
| | | | | |
+-----+ +---------+ +------+
A conexão para você começa com informando ao rastreador seu endereço IP e porta em que você está conectável. O rastreador então armazena isso em uma tabela de estados:
+--------------+------------+
| Nodes | Completion |
| 1.1.1.1:500 | 0% |
| 2.2.2.2:1000 | 100% |
+--------------+------------|
Peer
estabeleceu que ele é conectável na porta 1000. Voltaremos a isso.
Os endereços 1.1.1.1
e 2.2.2.2
representam os endereços externos dos dispositivos NAT. Esses dispositivos são onipresentes na Internet de hoje, já que quase todos os usuários têm um roteador instalado para fornecer acesso a vários computadores, celulares, consoles de jogos, etc.
Isso significa que, por trás desses endereços, há mais endereços, um para cada um desses dispositivos.
No entanto: como um endereço só pode ser conectado a uma porta no intervalo 1-65535
, como o seu roteador sabe se deve conectar uma solicitação para a porta 500 ao seu computador com o cliente de torrent em execução? Você instrui, fornecendo uma regra chamada encaminhamento de porta para dizer "qualquer conexão recebida na porta 500, eu quero ser encaminhada para mim" - onde me
é seu endereço interno (um dos 10.x.x.x
, 192.168.x.x
ou 172.16.x.x
).
Como você acabou de entrar no 'enxame' anunciando ao rastreador, o rastreador envia a tabela de estados acima. Você sabe que acabou de entrar e tem 0% de conclusão, mas que Peer
tem 100% de conclusão, ou seja, se você se conectar a ele, poderá começar a obter os dados.
Se Peer
não tiver "encaminhado" sua porta (1000, como informou ao rastreador quando ele anunciou), no entanto, você não poderá se conectar e começar a receber dados. Isso obviamente não é desejável, já que agora você não pode completar o torrent porque ninguém está disponível para compartilhá-lo.
Se Peer
não anunciou desde que você se conectou, ele não sabe que você existe ainda. No entanto, se você configurou o encaminhamento de porta corretamente, quando ele anunciar e obter a nova tabela de estado com você, ele poderá iniciar a conexão com você. Isso funcionará desde que sua porta seja encaminhada.
Se ambos de você não tivessem o encaminhamento de porta ativado, apesar do fato de vocês estarem anunciando para o rastreador, porque as portas que você disse ao rastreador não chegam ao computador , todas as conexões de dados possíveis são bloqueadas pelos seus roteadores / dispositivos NAT.
Resumindo: o encaminhamento de porta ajuda com a integridade da troca de dados P2P, facilitando o estabelecimento de conexões - e, a menos que todos os membros habilitem o encaminhamento de portas de algum tipo, é impossível trocar dados de uma maneira P2P.