Sé cómo funcionan las comunicaciones p2p en teoría:

computadora A con ip 187.6.9.1

computadora B con ip 137.2.9.4

Tanto la computadora A como la B tienen un programa de servidor y un programa de cliente y se comunican directamente sin la necesidad de un servidor conocido, solo pueden usarlo para conocerse las direcciones IP y luego pueden hablar entre ellos directamente.

Computadora Un cliente envía un mensaje al programa del servidor de B, luego el cliente de B envía un mensaje al servidor de A y así sucesivamente.

Pero en la práctica, ¿cómo funciona esto? Configuré un servidor http en mi casa antes y tuve que configurar mi módem para abrir un puerto y recibir comunicaciones a través de allí para que fuera accesible para el mundo.

Entonces, mi IP de módem era 187.6.9.1 y tuve que decirle que reenvíe el puerto 187.6.9.1:8080 a mi computadora local con IP local: el puerto dice 192.1.1.67:8080

Pero cuando uso un protocolo p2p como torrents, no tengo que configurar mi módem ni nada. ¿Cómo funciona esto?

Descargo de responsabilidad: estoy seguro de que esta pregunta ya se ha hecho, pero encontré preguntas similares sobre p2p, pero no sobre mi duda, así que tengo que buscar en un océano de preguntas similares pero no las mismas.

answer
  • Solo un par de A y B necesita poder recibir conexiones entrantes. El otro par realiza una conexión de salida y su puerta de enlace permite que las respuestas vuelvan automáticamente, siempre que pertenezcan a la misma conexión (es decir, los mismos puertos TCP, etc.). Esto es lo mismo que cuando se conecta a un sitio web - no tiene que configurar el reenvío de puertos para permitir que las respuestas HTTP vuelvan a entrar (en otras palabras, el NAT de la puerta de enlace tiene "estado").

  • Muchas puertas de enlace domésticas admiten la configuración automática de reglas de reenvío de puertos a través de los protocolos UPnP-IGD o NAT-PMP. La mayoría del software P2P realizará automáticamente la configuración necesaria a través de UPnP-IGD; si verifica su módem, es posible que muestre las reglas que ha agregado su cliente BitTorrent.

  • Como se mencionó, las puertas de enlace ya tienen que permitir automáticamente los paquetes de respuesta que corresponden a las conexiones que ha iniciado. Incluso si ninguno de los pares tiene configurado el reenvío de puertos, primero pueden reunirse a través de un servidor central y luego cooperar para engañar a sus dos puertas de enlace para que piensen que los paquetes que llegan a ambos pares son paquetes de "respuesta"; vea la perforación de agujeros NAT y el artículo relacionado . Esto es comúnmente utilizado por software de VoIP.

  • Con IPv6, cada par ya tiene una dirección única a la que otros pares pueden enviar paquetes directamente, lo que técnicamente hace innecesario el reenvío de puertos. (Sin embargo, es posible que deba abrir el puerto a través del firewall del enrutador , pero aunque la configuración es muy similar, la razón es diferente).