Muy alta escalabilidad (los clientes son también servidores).
Se utilizan para compartir archivos que residen en los hosts de los usuarios. Poresto a las aplicaciones P2P también se les llama aplicaciones de comparticiónde archivos entre iguales. Ejemplos: Napster, Gnutella, KaZaA, eMule yBitTorrent.
Contexto complejo: típicamente los hosts no permanecen todo el tiempoencendidos (ni conectados) y rara vez disponen de una dirección IP fija.
Cuando un usuario busca un archivo obtiene una lista de hosts que eneste momento están conectados y almacenan (al menos parcialmente) dichoarchivo. Con esto se calcula un índice de accesibilidad al fichero.
La transmisión (generalmente mediante TCP) de un archivo se producedirectamente (sin servidores intermedios) entre uno o varios de esos hostsy el del usuario (que ha realizado la búsqueda). Esto permite transmitirsimultáneamente distintas parte del mismo archivo mediante múltiplesconexiones.
En cuanto el usuario dispone de una sección del archivo, automáticamenteentra a formar parte de la lista de iguales que disponen de él. Así, mientraslo descarga, otros usuarios pueden comenzar a descargarlo de él.
Por tanto, las aplicaciones P2P de compartición de archivos son altamenteescalablesen lo que se refiere a la cantidad de datos que pueden gestionar,porque aunque un nuevo usuario consume ancho de banda de salida delos iguales que contienen los archivos que se está descargando, tambiénproporciona el suyo para que otros hagan lo mismo.
Sin embargo, en general los sistemas P2P presentan un problema de cuellode botella en los buscadores de contenidos. A continuación discutiremos las 3estrategias existentes.
Existe un gran servidor (Napster) o un conjunto de servidores (parcialmente)replicados (eMule) para que proporcionan servicio de búsqueda. En el casode BitTorrent, cada fichero .torrent especifica un servidor que no es debúsqueda de contenidos, sino de determinación de peers para ese contenido.
Cada igual (cuando se conecta) informa al servidor de su dirección IP y de loscontenidos que desea compartir. Así, el servidor crea y mantiene una base dedatos dinámica que relaciona cada nombre de fichero con el conjunto de IP’sde los hosts que lo contienen.
Ventajas: la búsqueda de contenidos (por parte de los iguales) es sencilla porque labase de datos está centralizada.
Desventajas: el servidor central se convierte en el cuello de botella del sistema y sino existe ninguno funcionando, ningún igual puede buscar.
Ejemplos: KaZaA, Overnet, eDonkey y Kademlia (eMule).
Un subgrupo de iguales son designados como líderes de grupo (supernodos)y cuando un nuevo igual se conecta, se le asigna uno de ellos.
Cada líder de grupo gestiona una base de datos con la información de los igualesde su grupo.
Cuando un usuario busca, lo hace primero dentro de su grupo y obtiene unacontestación rápida. Si el usuario lo solicita, puede ampliar la búsqueda al resto degrupos ya que el líder de su grupo conoce a los demás líderes.
Cuando un usuario se conecta lo hace a partir de un nodo de arranque que conoceal menos uno de los líderes de grupo. No es necesario conocer, de entrada, a unsupernodo.
Un nodo (un igual) se convierte en un líder normalmente porque el usuario losolicita*.
Ventajas de la búsqueda descentralizada:
Las bases de datos son localmente más pequeñas (un líder sólo seencarga de un subconjunto de los iguales, generalmente los más próximos(menos hops)).
El sistema es más escalable y resistente a fallos porque ahora la base dedatos global está distribuida.
Desventajas:
Cuando un líder se apaga, los iguales tienen que buscar otro líder vecinoy regenerar la base de datos local.
Los nodos no son todos iguales (los líderes, que también funcionan comoigual, consumen más recursos que los iguales).
Sigue existiendo la necesidad de un nodo inicial de arranque que conozcaal menos un líder y que no puede apagarse.
No existe una jerarquía de servidores (supernodos) e iguales. Todos losparticipantes son iguales.
Para que un nodo se conecte debe conocer, al menos, la dirección IP de unnodo que ya forme parte de la red de compartición.
Las búsquedas se realizan mediante inundación de consultas:
El nodo que inicia la búsqueda pregunta primero a sus vecinos(inmediatos).
Los vecinos repiten el proceso con sus vecinos inmediatos (excepto conlos que le han preguntado ya por lo mismo).
Los nodos que contienen el archivo buscado se lo comunican al nodovecino que le ha preguntado la búsqueda. Este proceso acaba cuando lascontestaciones llegan hasta el nodo que inició la búsqueda.
Ventajas:
Todos los nodos son iguales.
No existen bases de datos con información de directorio.
Desventajas:
El volumen de tráfico generado por las consultas suele ser muy alto. Poreste motivo el área de búsqueda (número de hops) suele estar limitado.Lo malo de esto es que puede ocurrir que sólo se obtengan búsquedasparciales.
Es necesario conocer un nodo de la red de compartición para poderformar parte de ella (http://www.gnutella.com).