ventajas software redes que modo marketing ejemplos desventajas descargar centralizada caracteristicas networking tcp p2p

networking - software - Conexiones directas de TCP/IP en aplicaciones P2P



que es modo p2p (3)

De la publicación de Joel en Copilot :

¡Conexión directa! Siempre hemos hecho todo lo posible para asegurarnos de que Fog Creek Copilot pueda conectarse en cualquier situación de red, sin importar qué cortafuegos o NAT estén en su lugar. Para que esto suceda, ambas partes realizan conexiones de salida a nuestro servidor, que retransmite el tráfico en su nombre. Bueno, en muchos casos, esto no es necesario. Así que la versión 2.0 hace algo bastante inteligente: establece la conexión inicial a través de nuestros servidores, por lo que se conecta de inmediato con una fiabilidad del 100%. Pero una vez que están todos conectados, silenciosamente, en el fondo, busca la manera de establecer una conexión directa. Si no puede, no es gran cosa: simplemente sigue transmitiendo a través de nuestro servidor. Si puede establecer una conexión directa punto a punto, cambia silenciosamente sus datos a la conexión directa. No notará nada, excepto, probablemente, una comunicación mucho más rápida.

¿Cómo cambian la conexión del servidor a una conexión P2P?


Creo que la versión simple es que eliminan la conexión del servidor y la reemplazan por la conexión P2P.

Algo como:

  1. Machine1 se conecta a los servidores del copiloto.
  2. Machine1 se conecta a los servidores del copiloto.
  3. Machine1 se conecta a los servidores del copiloto.
  4. Machine2 se conecta posteriormente y comienzan a compartir la pantalla.
  5. Machine2 abre un puerto para Machine1 para conectarse.
  6. Machine1 intenta conectarse al puerto ahora abierto en Machine2.

Si se establece esta conexión:

  1. La conexión a los servidores del copiloto está cortada.
  2. En cambio, los datos se transfieren a través de la conexión directa (P2P) entre las dos máquinas.

Es bastante complicado e interesante. Estoy seguro de que tengo algunos detalles incorrectos, pero la descripción general es la siguiente:

Los programas ya pueden comunicarse entre ellos a través del servidor de Joel, para que puedan intercambiar información entre ellos y con el servidor de Joel. Además, Joel tiene sus direcciones IP externas y le brindan información sobre sus direcciones IP internas.

Deciden probar esta técnica de perforación. La Computadora A inicia una conexión TCP con la Computadora B usando la dirección IP externa de B. No funcionará, pero lo que hace es decir al enrutador A que necesita permitir paquetes entrantes desde B en un puerto determinado.

La computadora B hace lo mismo, pero su mensaje llega a A ya que el enrutador de A abrió una combinación de puerto / ip que coincide con lo que B envió (aquí hay algo de magia de puerto, esto no es trivial, pero es factible).

El enrutador de B recuerda que B inició una conexión con A en un puerto e IP determinados, por lo que los paquetes de A ahora también fluyen hacia B más allá de su enrutador.

Por lo tanto, en realidad es bastante sencillo, pero la implementación tiene detalles, especialmente con respecto a cómo se otorgan los puertos a las nuevas conexiones TCP, y cómo los enrutadores NAT normalmente tratan con las solicitudes TCP y cómo se asignan a los puertos externos. Estos detalles son interesantes y difíciles.

-Adán


Hay una técnica llamada " Perforación de orificios " que funciona bien con "Cono" NAT (Cone es una familia técnica de enrutadores). Esa no es una técnica 100% segura, hoy en día, funciona bien con UDP en aproximadamente el 80% del enrutador.

Hay algunas implementaciones de la biblioteca para realizar perforación de agujeros: STUN ( wikipedia )