Las redes P2P o Peer-to-Peer son un tipo de redes descentralizadas que están formadas por cientos e incluso millones de ordenadores ubicados en todo el mundo. Todas ellas funcionando bajo un mismo protocolo de comunicaciones, con el objetivo de crear una enorme red para compartir información de cualquier índole.

Una red P2P, o peer-to-peer, es una red donde un grupo de personas o máquinas participan de forma completamente descentralizada. Es decir, es una red donde no hay un punto central de conexión, y donde las partes actúan de forma autónoma respondiendo a un protocolo común. Con ello, los integrantes de la red pueden intercambiar información de forma directa y sin intermediarios.

Para su funcionamiento, las redes P2P se construyen sobre protocolos que se ejecutan sobre los protocolos de Internet. De allí que sus protocolos se les denominan protocolos de aplicación o Layer 7, según el modelo Open Systems Interconnection u OSI.

Los protocolos P2P, han sido ampliamente utilizados desde su creación para distintos usos. Algunos legales, otros un tanto grises, pero pese a ello, hay una cosa muy clara, el protocolo P2P es muy potente y permite la creación de estructuras descentralizadas, difícilmente censurables y de uso libre. Por esa razón, criptomonedas como Bitcoin fueron construidas sobre la base de protocolos P2P.

Dicho esto, conozcamos un poco más sobre estos protocolos y su evolución.

Origen e historia del P2P

El origen de la primera red P2P la podemos rastrear hasta la creación del protocolo UUCP o Unix to Unix Copy Protocol, en 1980. Este protocolo dio origen a la red USENET y a los BBS, redes que aún se encuentran activas y funcionando en nuestro tiempo.

El principio de funcionamiento de estos sistemas es sencillo: la máquina realizaba una llamada de conexión (conexión por marcación) usando un modem. Pero gracias al protocolo UUCP, la maquina se podía comunicar con otra máquina objetivo, compartiendo información en ese proceso. Al terminar la llamada la conexión, se podía dar inicio a otra conexión con otra máquina. Y todo era posible sin una estructura como la del Internet que conocemos hoy, una red y tecnología que para ese entonces aún estaba en desarrollo.

En su momento, USENET y el protocolo UUCP fueron la cumbre de las comunicaciones. De hecho, el movimiento cypherpunk inició con el uso de este protocolo. Personajes como Saint Jude, Eric Hughes, Timothy C. May, David Chaum, hacían uso de estos sistemas para compartir información en los tablones BBS de la comunidad Cypherpunks.

Más tarde, en 1983, llegó al mundo el protocolo TCP/IP. Este nuevo protocolo buscaba flexibilizar la creación de grandes redes globales. A esto siguió el establecimiento del sistema OSI en 1989, y la creación de la WWW en 1990. La unión de estos tres elementos es lo que permitió crear Internet, la gran red global que todos usamos en la actualidad. La creación de Internet, solo traería consigo mayores avances en la creación de sistemas P2P.

¿Cómo funciona una red P2P?

El funcionamiento de una red P2P es relativamente sencillo. Básicamente lo que se hace es construir un protocolo (lenguaje) de comunicaciones que permita a las personas que usan dicho software comunicarse de forma directa y sin intermediarios. El mayor problema frente a la construcción de estos sistemas es Cómo diseñar un sistema que permita que esta comunicación pueda ser establecida frente a procesos que puedan impedir, por ejemplo, la existencia de un índice de peers conocidos.

La situación se solventa a sí misma gracias a una mayor distribución entre sus partes. Es decir, mientras más pares tenga la red, más posibilidades hay de que la red no pueda ser censurada. En los primeros sistemas P2P, como USENET o IRC, los sistemas y sus conexiones se hacían conocer por medios escritos, llamadas, o el mismo sistema que tenía un tablero de pares a los cuales poder conectarse. Cada nuevo integrante en la red, tenía acceso a la lista de peers y con ello se auto añadía. No solo eso, ese nuevo peer podía ser la puerta de entrada a la información de peers que pudieran bloquearse.

Red de nodos en un sistema P2P

Pero la creación de redes más grandes como el IRC, DCC, DC++, Napster, Gnutella, BitTorrent e incluso Bitcoin cambió drásticamente esto. Ahora cada nodo se conectaba a un punto, obtienen una lista de peer iniciales (o nodos semillas). Y a partir de allí, cada nodo es capaz de recrear una lista propia de nodos que pertenecen a la red. Como resultado se obtiene una mejor resistencia a la censura y la red puede crecer más rápidamente.

Por supuesto, el funcionamiento de cada protocolo es distinto. IRC por ejemplo, es un sistema distribuido (casi centralizado) de servidores que pueden darte la capacidad de conectarte punto a punto con una persona. Pero DC+ y Gnutella, son completamente descentralizados, sus redes están pensadas para que de forma automática, la red se ajuste con la entrada y salida de nuevos nodos a la red.

Lo mismo pasa en Bitcoin, donde la red comenzó con una sola semilla, la iniciada por Satoshi Nakamoto, y desde entonces, la red ha ido creciendo paulatinamente para convertirse en una red con un tamaño superior a los 10 mil nodos en activos. Por supuesto, el objetivo de Bitcoin es distinto al de una red como Gnutella, pero los principios del protocolo se mantienen: comunicar a dos partes sin intermediarios.

Bitcoin y sus nodos en el mundo

Ventajas y Desventajas de esta tecnología

Ventajas

  1. Una red P2P es resistente a la censura. Una red P2P altamente descentralizada es prácticamente imposible de censurar.
  2. Ofrecen un resiliencia inigualable. Si un nodo cae, otro nodo puede tomar su lugar. Por eso dicen que las redes P2P pueden sobrevivir a una catástrofe nuclear, porque estas pueden destruir muchos nodos, pero si solo uno sobrevive, la red puede reconstruirse por completo.
  3. Las redes P2P pueden llevar a soluciones de escalabilidad potentes para presentar servicios únicos con alcance global.
  4. Al no depender de entidades centrales, las P2P generan más confianza en sus usuarios. 
  5. Ofrecen un alto nivel de ancho de banda. Esto gracias a que aprovechan el ancho de banda de cada participantes, para transformarlo en propio de la red.
  6. Sirven para transmitir información digital de cualquier tipo. Desde tu canción favorita a cientos de millones de dólares, en segundos.

Desventajas

  1. Una red P2P es resistente a la censura, pero no te hace anónimo a menos que esté diseñada para ello, incluso, si esa red usa cifrado. El mejor ejemplo es BitTorrent, donde los ISP pueden detectar el uso del protocolo, y con ello advertir a las autoridades de la descarga ilegal por parte de un usuario.
  2. El diseño de las redes P2P generan que a mayor tamaño aumente la latencia. Es decir, para que una información llegue a todas las partes que forma la red, se tomará más tiempo en una red P2P de gran tamaño que en una de menor tamaño. De allí que se busquen nuevos algoritmos y protocolos que ayuden a superar este problema.
  3. Los protocolos P2P tienen una serie de problemas estructurales conocidos. Casos como los ataques MITM para tomar el control de nodos, debido a que estos deben estar conectados todo el tiempo de forma pública son uno de estos fallos. También los protocolos son susceptibles a ataques de enrutamiento o cosas tan sigilosas como un ataque Eclipse o un ataque Erebus.

Bitcoin una red P2P para manejar valor

Bitcoin es una de las redes P2P más grandes que existen en la actualidad, con sus más de 10 mil nodos activos, Bitcoin es una red global que permite a sus usuarios manejar valor sin intermediarios. Lo único que debe hacerse es descargar un software que permita interactuar con esta red, y ya podrás hacer uso de la misma.

La construcción de Bitcoin como una red P2P responde a la necesidad de descentralizar sus capacidades. De nada vale crear una moneda con criptografía, si esta luego es manejada por una entidad central. Eso sería simplemente crear un nuevo banco central. En su lugar, Satoshi Nakamoto deseaba una red global, incensurable, segura y privada que permitiera manejar valor. Así que para ello, Nakamoto diseño Bitcoin sobre la base de una red P2P usando un protocolo propio diseñado bajo los principios del protocolo Kademlia y protocolo Gossip.

El resultado, es que Bitcoin es una red P2P que, prácticamente, no se puede detener. Incluso con sus fallas estructurales, el protocolo P2P fue la mejor decisión que Nakamoto pudo tomar en el diseño de Bitcoin. Con ello se aseguró de crear un dinero digital que sirviera a los intereses del mundo y de sus usuarios.

P2P para resolver los problemas del dinero digital

Lo mejor de todo, es que Bitcoin con su sistema P2P ha logrado crear un sistema de contabilidad distribuido en el que problemas como el doble gasto son cosas del pasado. El doble gasto, era uno de los problemas principales del dinero digital. La posibilidad de duplicar el dinero y falsificarlo, era algo que no había tenido solución hasta que Satoshi Nakamoto diseño la blockchain y su protocolo P2P para Bitcoin.

Desde entonces somos capaces de usar criptomonedas con total seguridad sabiendo que nuestro dinero no solo está en un protocolo abierto, transparente y libre, sino que también jamás podrá ser falsificado. Y todo ello porque cada nodo tiene un historial de transacciones de la red, siendo testigo de cada operación en la misma. Esta enorme red de testigos, permanece como un registro inmodificable de todo lo que sucede y nos da la seguridad de que el sistema no es manipulable.

Algo realmente útil y que permite transformar a Bitcoin en un dinero digital seguro, el más seguro y transparente de todos.

¿Cuánto sabes, criptonauta?

¿Las redes P2P por si mismas garantizan nuestra privacidad y anonimato?

¡FALSO!

Una red P2P por si misma no nos garantiza ni privacidad ni anonimato. Para lograr esto, el protocolo debe ser construido sobre la base de lograr alcanzar ambas características. En criptomonedas podemos ver claramente esta situación. Por ejemplo, Bitcoin que fue pensado en privacidad pero no en anonimato, mientras que Monero, si fue pensado para ambas funciones desde su base. Allí la diferencia entre ambas criptomonedas, sus redes y como funcionan cada una de ellas.

Otros eventos importantes en el origen de P2P

El nacimiento del IRC

En 1988, un joven llamado Jarkko Oikarinen diseñó el protocolo IRC, con el fin de reemplazar un programa llamado MUT (MultiUser Talk) en un BBS llamado OuluBox en la Universidad de Oulu en Finlandia, donde trabajaba en el Departamento de Ciencia de Procesamiento de Información.

Su intención era extender el software BBS que administraba, para permitir noticias al estilo de USENET, discusiones en tiempo real y características similares al BBS. La primera parte que implementó fue la parte del chat, que hizo con partes prestadas escritas por sus amigos Jyrki Kuoppala y Jukka Pihl. La primera red IRC se estaba ejecutando en un único servidor llamado tolsun.oulu.fi.

El hecho de que el protocolo fuera diseñado para usar TCP/IP le dio una enorme flexibilidad a futuro. De hecho, para 1990 se fundaba la primera red IRC de gran tamaño, la EFNet. El papel de EFNet fue vital para las comunicaciones globales durante el conflicto del Golfo Pérsico, permitiendo que se pudiera conocer en tiempo real lo que pasa en el campo de batalla. Mostraba así que el potencial de IRC frente al correo era superior, al menos en inmediatez e interactividad  de comunicaciones. Lo mismo ocurrió con la Caída de la Unión Soviética, donde el IRC también fue vital en el papel de comunicar lo que pasaba al mundo en tiempo real.

Desde entonces, el protocolo IRC sufrió una enorme expansión y aceptación naciendo redes como UnderNet, DALnet, Freenode (muy usada para proyectos de software libre), Rizon e Immortal-Anime (ahora Xertion). La ampliación en su aceptación trajo más desarrollo al protocolo, y de allí nació uno de los primeros sistemas P2P sobre Internet, el IRC-DCC, o IRC Direct Client-to-Client.  El sistema permitía comunicaciones directas entre las partes sin intermediarios, compartir archivos, comunicación cifrada punto a punto (OTR) y más.

Nacimiento de HotLine Connect

Para 1996, vendría otra creación  en el mundo del P2P, creada Adam Hinkley. HotLine Connect era una red P2P para compartir archivos que utiliza un sistema de trackers para permitir que dos usuarios pudieran intercambiar información. Muy usado hasta finales de 2000, cayó en desuso gracias a la aparición de otros protocolos más flexibles y el importante ascenso del IRC-DCC.

Gnutella

Gnutella es un desarrollo de red P2P para compartir archivos desarrollado en el año 2000 por Justin Frankel y Tom Pepper. Frankel y Pepper eran trabajadores de Nullsoft, la empresa creadora del reproductor Winamp y el servicio de streaming de audio Shoutcast.

Desde ese entonces y hasta ahora, Gnutella es la mayor red P2P que existe en el mundo, con aproximadamente 12 millones de nodos en todo el mundo.

El nacimiento de Napster

Napster fue un software desarrollado por Shawn Fanning en 1998 y permitía la descarga de  música de forma gratuita. Si bien Napster no era una red P2P pura (como el caso también de IRC), permitía que dos personas pudieran intercambiar música sin intermediarios externos a los que existían en la red y sus servidores. Pero Napster tocó los bolsillos de la industria musical y tras un largo juicio fue cerrado en julio de 2001.

Sin embargo, lo que Napster había hecho llamó al mundo a desarrollar sistemas más descentralizados.