Mostrando entradas con la etiqueta Peer to peer. Mostrar todas las entradas
Mostrando entradas con la etiqueta Peer to peer. Mostrar todas las entradas

domingo, 14 de octubre de 2012

Gnutella



El 14 de marzo del 2000 Justin Frankel y Tom Pepper presentaron Gnutella. Al día siguiente, se detuvo la disponibilidad del programa debido a problemas legales y se prohibió continuar trabajando en el proyecto.
Tom Pepper afirmó que el objetivo original de Gnutella era compartir recetas de cocina pero esto no fue el fin de Gnutella; unos días más tarde aparecieron nuevos clientes porque el  protocolo había sido descifrado por ingeniería inversa. Este desarrollo paralelo de distintos clientes por distintos grupos está siendo hoy la manera en que se realiza el desarrollo de Gnutella.
Algunos de esos clientes son:

  • Windows: Bearshare, Morpheus, LimeWire, Phex
  • Linux/Unix: LimeWire, Phex, Mutella
  • Mac: Limewire, Phex

El funcionamiento es, al arrancar, el cliente contacta con unos cuantos nodos (típicamente 4); estos nodos se convierten en sus “vecinos”, para buscar algo el cliente pregunta a sus vecinos, y estos a los suyos, y así sucesivamente. Si alguno de ellos tiene el fichero buscado, responde al participante que hizo la petición. y el fichero se obtiene directamente de quien tiene el fichero.



Sus características son: 
  • Los participantes forman una red abstracta.
  • La transferencia de ficheros es descentralizada.
  • La búsqueda de ficheros es recursiva, los mensajes de petición se envían a todos los vecinos. (Cada búsqueda tiene un identificador para que los vecinos descarten los duplicados).
  • Las transferencias de ficheros se hacen entre participantes utilizando el protocolo HTTP.
  • La localización de ficheros es distribuida (la red depende de los usuarios).
Sus ventajas son:
  • Es descentralizado, significa que no hay puntos de control ni puntos de fallo.
  • Cerrar la red no es fácil, ya que implicaría el cierre de cada participante.
  • Cada participante tiene la misma responsabilidad.

Sus inconvenientes son:
  • Los nodos pueden estar apagados al iniciar el programa.
  • El tráfico de consultas es excesivo, en media, una petición en Napster genera 18 bytes, mientras que esa misma petición en Gnutella genera del orden 90 Mbytes.
  • Los nodos abandonan la red a menudo.
  • El tiempo de búsqueda es impredecible.
  • Puede no encontrarse un fichero a pesar de estar compartido, porque cada fichero tiene un campo TTL que en cada petición disminuye su valor y cuando este sea 0 la petición finaliza.

viernes, 21 de septiembre de 2012

Napster



  Algo de historia:

  Shawn Fanning publicó Napster en 1999 que era una aplicación que permitía compartir archivos mp3, en 2001 tenía sobre 26.1 millones de usuarios registrados, quienes en un solo mes compartieron 2.8 billones de ficheros y en julio de 2001 cerró por orden judicial (derechos de autor). En  mayo de 2008 Napster anunció el lanzamiento de la tienda más grande de MP3 del mundo, con 6 millones de canciones, en free.napster.com. El aviso también indicó que todas las ventas de descargas en Estados Unidos hechas con Napster ahora estarían en formato MP3. El 1 de diciembre de 2011 Napster se fusionó con Rhapsody.


  Napster funcionaba del siguiente modo: cuando un cliente se conecta, este contacta con el servidor central indicándole su dirección ip y la lista de archivos que está dispuesto a compartir, para pedir un archivo el cliente le solicita al servidor una lista de los participantes que tienen ese fichero, y este responde dándole sus ip. El archivo se obtiene directamente desde los participantes de la lista anterior, sin pasar por el servidor.






  Para mantener dicha base de datos actualizada, el servidor central mantenía una conexión TCP con cada usuario a través de la cuál preguntaba a los clientes si estaban conectados y recogía las respuestas constantemente. Además, los clientes anunciaban qué contenidos querían añadir o quitar de la lista.

  La ventaja más importante de Nasper era que la búsqueda era a través del servidor central y por ello la búsqueda era rápida. La desventaja de esto es que si falla el servidor central falla todo, ya que el proceso de búsqueda no se realizaría. Pese a que la transferencia de archivos es descentralizada la localización es centralizada.

jueves, 20 de septiembre de 2012

Peer to peer



  Las aplicaciones de red constan de dos partes: cliente y servidor.

  El servidor es el encargado de proporcionar servicios a los clientes, es un proceso infinito (salvo que ocurra algún problema).
  El cliente es el que inicia contacto con el servidor solicitándole algo, es un proceso finito que finaliza cuando el cliente recibe lo solicitado.

  El servidor funciona enviando/recibiendo los mensajes a través de su socket (que es la puerta del servidor por la cual entran/salen los mensajes del cliente y del servidor, algo así como dos puertas en un pasillo donde el pasillo es la red).

  Para que todo esto surja tiene que existir un proceso que pida un servicio a través de la red (navegador, juego...), el cual tiene que tener en el mensaje un identificador donde está su dirección ip y el número de puerto y host para que le llegue la respuesta.

  Ahora que definimos lo que es cada cosa metámonos en el p2p.

  El objetivo de estas redes es compartir los recursos de los que disponemos (red, disco duro, procesador... ), para ellos un ordenador es cliente y servidor a la vez.

  Como cliente enviamos solicitudes y recibimos la respuesta y como servidor recibimos solicitudes, las procesamos, enviamos la respuesta y propagamos solicitudes.

  Sus características son:
  1. Que no se dispone de un servidor central como ocurre normalmente, se usa el ancho de banda en toda la red.
  2. Es imposible tener una visión del sistema completo.
  3. Los usuarios son autónomos (se bastan solos, no necesitan un intermediario).
  4. La responsabilidad del servicio es de todos los usuarios.



Sus dificultades son que las redes disponen de cortafuegos (sólo permiten el paso de cierto protocolos bien definidos (RFC) y en ciertos sentidos, etc.), las ip de los usuarios son dinámicas...

Conforme nos adentramos nos damos cuenta que necesitamos saber cómo participar en una red p2p, cómo puedo compartir un archivo, cómo lo busco, cómo lo descargo...
 Bien, vayamos poco a poco y por partes, en mis siguientes entradas explicaré algunos ejemplos de clientes y en ellos repondere a las anteriores cuestiones mediante ejemplos.