El ejemplo común de un protocolo P2P es Bittorrent. En este protocolo, las comunicaciones a menudo son gestionadas por un rastreador. Esto significa que para la transferencia de datos, se necesitan un mínimo de tres nodos:
+-----+ +---------+ +------+
| | 1.1.1.1:500 | | | |
| You |<------------->| Tracker |<---->| Peer |
| | | | | |
+-----+ +---------+ +------+
La conexión para usted comienza con decirle al rastreador su dirección IP y el puerto en el que se puede conectar. El rastreador luego almacena esto en una tabla de estado:
+--------------+------------+
| Nodes | Completion |
| 1.1.1.1:500 | 0% |
| 2.2.2.2:1000 | 100% |
+--------------+------------|
Peer
ha establecido que se puede conectar en el puerto 1000. Volveremos a esto.
Las direcciones 1.1.1.1
y 2.2.2.2
representan las direcciones externas de los dispositivos NAT. Estos dispositivos son omnipresentes en la Internet de hoy en día, ya que casi todos los usuarios tienen un enrutador instalado para proporcionar acceso a varias computadoras, teléfonos móviles, consolas de juegos, etc.
Esto significa que detrás de estas direcciones hay más direcciones, una para cada uno de estos dispositivos.
Sin embargo, dado que una dirección solo puede conectarse a un puerto en el rango 1-65535
, ¿cómo sabe su enrutador si conectar una solicitud del puerto 500 a su computadora con su cliente torrent en ejecución? Usted lo instruye, proporcionándole una regla llamada puerto hacia adelante para que diga "cualquier conexión que reciba en el puerto 500, quiero que se me envíe", donde me
es su dirección interna (una de 10.x.x.x
, 192.168.x.x
o 172.16.x.x
).
Cuando acaba de unirse al 'enjambre' al anunciar al rastreador, el rastreador le envía la tabla de estado anterior. Sabes que acabas de unirte y tienes un 0% de finalización, pero ese Peer
tiene un 100% de finalización, lo que significa que sabes que si te conectas con él podrás comenzar a obtener los datos.
Si Peer
no ha "reenviado" su puerto (1000, según informó al rastreador cuando anunció), sin embargo, no podrá conectarse y comenzar a recibir datos. Obviamente, esto no es deseable ya que ahora no puede completar el torrent porque no hay nadie disponible para compartirlo.
Si Peer
no ha anunciado desde que te conectaste, aún no sabe que existes. Sin embargo, si ha configurado el reenvío de puertos correctamente, cuando él anuncie y obtenga la nueva tabla de estado con usted, podría iniciar la conexión con usted. Esto funcionará ya que su puerto se reenvía.
Si ambos de ustedes no tenían habilitado el reenvío de puertos, entonces a pesar del hecho de que ambos estaban anunciando al rastreador, porque los puertos de los que le dijo al rastreador no llegan realmente a su máquina , todas las conexiones de datos posibles están bloqueadas por sus enrutadores / dispositivos NAT.
En resumen: el reenvío de puertos ayuda con la salud del intercambio de datos P2P al facilitar el establecimiento de las conexiones, y a menos que cada miembro permita algún tipo de reenvío de puertos, es imposible intercambiar datos de una manera P2P.