que - Si los firewalls no aceptan conexiones entrantes de forma predeterminada, ¿cómo funcionan las redes p2p?
p2p que es (4)
Dejar
F = # nodos con cortafuegos,
O = # nodos con puerto de entrada abierto,
T = F + O = número total de nodos,
P = O / T = fracción del total de nodos que tienen puertos abiertos,
C f = max # conexiones que puede tener cada nodo con firewall, y
C o = max # conexiones que puede tener cada nodo abierto.
Entonces,
C f = O , n los nodos con firewall solo pueden conectarse a los nodos abiertos
C o = T - 1, n los nodos abiertos se pueden conectar a todos los demás nodos (y una vez que todos los nodos con firewall se han conectado primero a ellos)
asi que
C o / C f = ( T - 1) / O = 1 / P - 1 / O.
Si T es grande,
C o / C f ≈ 1 / P.
Entonces, por ejemplo, digamos que la mitad de los nodos tienen puertos entrantes abiertos: P = ½. Entonces,
C o / C f ≈ 2,
lo que significa que los nodos abiertos tienen ~ 2 × la cantidad de conexiones como nodos con cortafuegos (lo que significa que están sobrecargados, pero también que tienen más visibilidad).
Por lo tanto, es mejor para nodos particulares y para que toda la red tenga P = 1; Todos los nodos serán igualmente visibles e igualmente cargados.
Si P = 0, la red no funcionará en absoluto ∵ nadie podrá iniciar conexiones con otros pares.
Si los firewalls bloquean todas las conexiones entrantes por defecto, ¿cómo funcionan las tecnologías p2p? Al igual que los torrents, ¿cómo se conecta con todos los que comparten un archivo y obtienen la información de ellos? ¿Pasa a través de un servidor de retransmisión o algo así?
No estoy al tanto de todo lo relacionado con BitTorrent, como con las técnicas generales de conectividad P2P. Normalmente, los clientes en una red P2P se encuentran en un servidor de señalización común (por ejemplo, SIP, XMPP, servidor de seguimiento, sitio web) para intercambiar direcciones IP, otros metadatos y mensajes para reiniciar conexiones directas. Luego use cualquiera de las siguientes técnicas a continuación para iniciar una sesión de comunicaciones:
Ambas partes intentan conectarse entre sí simultáneamente, en caso de que una parte no pueda aceptar conexiones entrantes, pero se le permita hacer conexiones salientes. Tal es el caso del escenario de firewall.
Perforación de agujeros (utilizado en combinación con lo anterior). Los relés no son necesarios per se, pero ayudan a asegurar la conectividad cuando ambos pares están detrás de dispositivos de red que son difíciles de atravesar. Hay tanto el UDP Hole Punching como el TCP Hole Punching . Más información here .
Los relés, incluidos los servidores TURN , pueden implementarse en una red P2P cuando la conectividad directa no es posible. Todas sus aplicaciones de videollamada favoritas implementan relés para estos escenarios, pero hacen todo lo posible para que sus compañeros se conecten directamente para evitar el costo de la transmisión.
Bing para los siguientes temas: STUN, TURN, ICE (Establecimiento de conectividad interactiva), libjingle, pjnath, libnice.
Para la posteridad:
La respuesta corta es que se realiza a través de https://en.wikipedia.org/wiki/Hole_punching_(networking)
Cuando se conecta a google.com desde su máquina (que probablemente se encuentra detrás de un enrutador y NAT), la dirección IP de su máquina y el número de puerto de NAT se envían a los servidores de Google. Google utiliza esta información de conexión para enviar los resultados de búsqueda a su máquina.
Puede pensar en los servidores de Google similares a un nodo en la red p2p. Google pudo ''contactarlo'' desde sus servidores a pesar de que su enrutador no acepta la conexión entrante. Es porque no iniciaron la conexión (no conocen su combinación de ip: NATedport para iniciar una conexión). Pero su máquina puede hacer conexiones salientes y enviar / publicar su combo ip: NATedport al mundo exterior.
Entonces, ambos nodos en el p2p envían su combo de ip: NATedport a un sitio de terceros, intercambian esta información y comienzan a conectarse (quien sea que primero haya recibido la información) entre sí.
Si un firewall (a diferencia de un NAT) tiene la intención de bloquear las conexiones entrantes (que creo que normalmente hacen), no hay nada que puedas hacer al respecto. Puedes probar todos los agujeros de perforación que más te gusten. Esto se logra simplemente implementando un NAT simétrico, es decir, cada agujero de pin está abierto específicamente para una ip, cuadruple de puertos (origen, puerto de destino e IP).
Es probable que BitTorrent no deje de funcionar solo porque no puede recibir las conexiones entrantes, solo tendrá un rendimiento un poco peor. Lo más probable es que haya al menos algunas personas en el enjambre que puedan recibir conexiones, y simplemente te conectas a ellas.
This es una vieja explicación de cómo ser cortafuegos en su mayoría solo significa un peor desempeño.
EDITAR:
La respuesta corta al "por qué" es que la mayoría de los compañeros no están detrás de cortafuegos (solo NAT).