Peer-to-Peer. Peer-to-Peer. Peer-to-Peer



Documentos relacionados
Aplicaciones Distribuidas: P2P

Clase 22 Nivel de Aplicación WWW Tema 6.- Nivel de aplicación en Internet

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Bloque IV: El nivel de red. Tema 10: Enrutamiento IP básico

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Contacto Lespade, Juan Pablo Dirección: Las Heras 490 Luján (B6700ATJ) Buenos aires Argentina Tel:

SDC y P2P P2P Según Kurose

Qué es Internet? Cómo funciona Internet?

HTTP Introducción. Redes de Datos Ing. Marcelo Utard / Ing. Pablo Ronco FACULTAD DE INGENIERIA UNIVERSIDAD DE BUENOS AIRES

Índice general. Tipos de servicio de transporte. Por qué un nivel de transporte? TEMA 6 Funciones de los niveles superiores. Miguel A.

Unidad I: La capa de Red

Funcionamiento de Servicios Web, FTP

Unidad Didáctica 12. La publicación

Host. En este texto, entenderemos por host toda máquina - léase computadora. Cuenta. Una cuenta, en general, es un espacio de memoria y de disco que

Redes I Soluciones de la Práctica 1: /etc/network/interfaces, tcpdump y wireshark

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A)

Activación de un Escritorio Remoto

El gráfico siguiente muestra un uso básico de DNS, consistente en la búsqueda de la dirección IP de un equipo basada en su nombre.

INTERNET 4º ESO INFORMATICA / DEP. TECNOLOGIA

5.1. Qué es Internet? controla todo el sistema, pero está conectado de tal manera que hace

REDES INFORMATICAS: Protocolo IP

Como crear un túnel entre dos PC s usando el Protocolo SSH

Introducción a P2P. Definición de P2P. Simon Pickin. Departamento de Ingeniería Telemática Universidad Carlos III de Madrid. Peer:

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

Servidores de nombres de dominio (DNS) Jesús Torres Cejudo

Aspectos básicos de redes Ing. Aníbal Coto Cortés

Repaso de conceptos Tema 1.- Introducción

DIPLOMADO EN SEGURIDAD INFORMATICA

Aplicaciones distribuidas: FTP

Servidor FTP. Ing. Camilo Zapata Universidad de Antioquia

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

Servidor FTP en Ubuntu Juan Antonio Fañas

Manual de Usuario CPE OX330. Manual de Usuario CPE OX330

Ubuntu Server HOW TO : SQUID. EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como instalar servidor proxi Squid.

INSTRUCCIONES ACTUALIZACION PASO A PASO a MICROSOFT WINDOWS-7 (rev.1.0):

ARQUITECTURAS CLIENTE/SERVIDOR

Arquitectura de sistema de alta disponibilidad

COMERCIO ELECTRONICO UNIDAD III: TIPOS DE COMERCIO ELECTRONICO. domingo, 10 de marzo de 13

La vida en un mundo centrado en la red

Roles y Características

Motores de Búsqueda Web Tarea Tema 2

Protocolo ARP. Address Resolution Protocol

Crear un servidor FTP

Redes (4º Ing. Informática Univ. Cantabria)

TRANSFERENCIA DE FICHEROS FTP

HOW TO SOBRE REMOTE ACCESS VPN MODE EN LINUX

Alfredo Hidalgo Limbrick. Inteligencia de Redes de Datos

REDES Y EL INTERNET. Esquema para complementar la presentación de diapositivas. 1. Redes y el Internet Un Manual para fiscales e investigadores

Curso XHTML/HTML/HTML5

CFGM. Servicios en red. Unidad 2. El servicio DHCP. 2º SMR Servicios en Red

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Proyecto de Grado 2008 Anexo VII IP4JVM Glosario

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 8: El nivel de transporte en Internet

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

Crear un servidor Web en IIS

DHCP. Dynamic Host Configuration Protocol. Protocolo de Configuración Dinámica de Host. Administración de Redes de Computadores

WEB Y HTTP. HTTP: Hypertext Transfer Protocol [RFC 1945] [RFC 2616] Web Page URL (Uniform/Universal Resource Identifier)

Diego Mauricio Cortés Quiroga

CFGM. Servicios en red. Unidad 5 Servicio FTP. 2º SMR Servicios en Red

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

Speed Editor. Guía de usuario

Capa de Aplicación (Parte 2 de 2)

Reflexión. Inicio. Contenido

Univ. de Concepción del Uruguay Facultad de Ciencias Agrarias Ingeniería Agrónoma

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Ejercicios Tema 5. a) Órdenes del protocolo FTP necesarias para su ejecución. b) Número y tipo de conexiones necesarias.

TELECOMUNICACIONES Y REDES

1. Que es un nombre de dominio? Es un conjunto de caracteres alfanuméricos utilizados para identificar una computadora determinada en Internet.

Instituto Tecnológico de Las Américas (ITLA)

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Arquitecturas cliente/servidor

SISTEMAS DE NOMBRES DE DOMINIO

Introducción a las Redes de Computadoras

Características de Samba

Guia rápida EPlus Cliente-Servidor

Proyecto Tecnológico Prof. Carolina Quinodóz 6º2º - TM

Anexos de Bases de Presentación de Propuestas. Consultoría para la implementación de sistemas de gestión de contenidos para comunidades de RedCLARA

Volumen TECNOLOGÍA DE ADMINISTRACIÓN EMPRESARIAL SIMI EVOLUTION (9.0) Guía de usuario

Jhon Jairo Padilla Aguilar, PhD.

CAPÍTULO HTML Y DHCP DE H0/H2-ECOM100 CONFIGURACIÓN. En este capítulo...

Windows Server Windows Server 2003

Tema 4. II - Cookies. Arquitecturas Distribuidas 11/12

Análisis y diseño del sistema CAPÍTULO 3

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

UNIVERSIDAD DE ALCALÁ - DEPARTAMENTO DE AUTOMÁTICA Área de Ingeniería Telemática LABORATORIO DE COMUNICACIÓN DE DATOS (CURSO 2011/2012)

Introducción a las Redes de Computadoras. Obligatorio

Estructura de Computadores I Arquitectura de los MMOFPS

FUNDAMENTOS DE REDES CONCEPTOS DE LA CAPA DE APLICACIÓN

Componentes de Integración entre Plataformas Información Detallada

Formato para prácticas de laboratorio

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

CAPA DE APLICACIONES

Hay dos tipos de conexiones posibles cuando se trata de redes. Punto a punto conexiones proporciona un enlace dedicado entre dos dispositivos.

Guia sobre como instalar un servidor DNS en ubuntu

Luis Villalta Márquez

Formato para prácticas de laboratorio

TEMA 3. SERVICIO DHCP

Los servicios que presta Internet. RETO: Conocer y utilizar los servicios que nos ofrece Internet.

Transcripción:

Departament d Arquitectura de Computadors Peer-to-Peer Peer-to-Peer Peer-to-Peer Necesidad de compartir para recibir Los nodos de una P2P son máquinas de usuarios finales El tiempo de servicio de estos nodos no es continuo se conectan/desconectan según las necesidades de cada usuario final Peer-to-Peer versus Cliente/Servidor Los nodos de una P2P son clientes y servidores al mismo tiempo En P2P la información esta distribuida entre los nodos de los usuarios finales En la arquitectura C/S la información está centralizada en el servidor ( que puede ser un cluster) En P2P un cliente que quiere un fichero no sabe donde encontrarlo y pregunta al sistema quien puede dárselo En la arquitectura C/S un cliente sabe quien tiene el fichero (un servidor) 2

Componentes básicos en toda red P2P Localización de los contenidos (ficheros) en la red P2P Es como un DNS a nivel de aplicación. Hay que tener en cuenta como se realiza la publicación y eliminación de contenidos Gestión de la red Tiene en cuenta aspectos como: enrutamiento de mensajes, mantenimiento de la red, procedimiento para que un usuario pueda darse de alta en la red, procedimiento para darse de baja, control de vecinos... Transferencia de la información En las P2P iniciales la unidad de transferencia es el fichero Para ficheros grandes este mecanismo genera muchos fallos en la transferencia En las P2P actuales la unidad de transferencia no es el fichero sino un bloque 3 Napster (Inicio del P2P) Modelo Cada usuario final comparte un subconjunto de ficheros de música Cada usuario puede bajarse ficheros de todos los usuarios finales de la red Servicio de localización centralizado Asume la existencia de servidores que mapean ficheros (canciones) a máquinas de usuarios finales conectados a la red Cómo encontrar un fichero (canción)? Consulta al servidor -> devuelve una máquina conectada que comparte el fichero Idealmente es la máquina más cercana/menos cargada Transferencia ftp del fichero directamente de la máquina del usuario final conectado Ventajas: Simplicidad, fácil implementar motores de búsqueda sofisticados en el servidor Desventajas: Robustez? Escalabilidad? 4

Napster: Example (Fuente: Lecture20.ppt / Ion Stoica) m5 m6 E F E? E E? m5 m1 A m2 B m3 C m4 D m5 E m6 F m4 D m1 A m2 B m3 C 5 Napster: how did it work (Keith W. Ross / Dan Rubenstein) Application-level, client-server protocol over point-to-point TCP Centralized directory server Steps: connect to Napster server upload your list of files to server. give server keywords to search the full list with. select best of correct answers. (pings) 6

Napster (Fuente: Keith W. Ross / Dan Rubenstein) 1. File list and IP address is uploaded napster.com centralized directory 7 Napster (Fuente: Keith W. Ross / Dan Rubenstein) 2. User requests search at server. napster.com centralized directory Query and results 8

Napster (Fuente: Keith W. Ross / Dan Rubenstein) 3. User pings hosts that apparently have data. napster.com centralized directory Looks for best transfer rate. pings pings 9 Napster (Fuente: Keith W. Ross / Dan Rubenstein) 4. User chooses server napster.com centralized directory Napster s centralized server farm had difficult time keeping up with traffic Retrieves file 10

Gnutella (Historia) Los desarrolladores fueron Justin Frankel y Tom Pepper en el año 2000 mientras trabajaban en Nullsoft El código fuente iba a salir bajo licencia GNU pero AOL se interpuso. La ingeniería inversa se puso en funcionamiento. Se tardó 6 días. Este protocolo se presentaba como la gran esperanza tras la caída en picado de Napster en 2001. Por qué pudo cerrase Napster? Actualmente su desarrollo se lleva a cabo por el GDF http://groups.yahoo.com/group/the_gdf/ The Gnutella Developer Forum (GDF) is a neutral, open forum for communication between Gnutella developers on topics of common interest. Gnutella2 http://es.wikipedia.org/wiki/gnutella2 11 Gnutella Servicio de localización descentralizado por inundación (flooding) Cómo encontrar un fichero? Consulta a los nodos a los que está conectado. Estos a su vez harán un forwarding de la petición si no pueden satisfacerla Transferencia http del fichero directamente de la máquina del usuario final conectado Ventajas: Totalmente descentralizado Bastante robusto Desventajas: Escalabilidad? La red entera puede ser inundada con la petición (para aliviar el problema TTL) Garantías de encontrar fichero aunque se encuentre en la red? 12

Gnutella: Cómo funciona? Un nodo A se conecta a otro B, mediante un mecanismo de bootstrap (autosuficiente), dirección bien conocida o algún mecanismo similar. Debe conocerse un nodo conectado a la red de Gnutella Gnutella no define cómo encontrar un nodo conectado B envía a A una lista de nodos actualmente activos en la red A se conectará a un número determinado de ellos (normalmente 5) y guarda el resto Cuando A realice una búsqueda manda las peticiones a los nodos a los que está conectado. Estos a su vez harán un forwarding de la petición Al encontrar resultados se reenvían hacia A directamente o bien indirectamente 13 Gnutella: Example (Fuente: Lecture20.ppt / Ion Stoica) Assume: m1 s neighbors are m2 and m3; m3 s neighbors are m4 and m5; m5 m6 E F E E? E? m4 D E? E? m1 A m2 B m3 C 14

Gnutella (protocolo) The annotated Gnutella Protocol Specification v0.4. http://rfc-gnutella.sourceforge.net/developer/stable/index.html Inicializar la conexión El nodo A establece una conexión TCP con el nodo B GNUTELLA CONNECT/0.6 User-Agent: BearShare/1.0 GNUTELLA/0.6 200 OK User-Agent: BearShare/1.0 GNUTELLA/0.6 200 OK 15 Gnutella (protocolo v0.4) Cabecera Una vez conectados dos nodos, se pueden comunicar utilizando mensajes del protocolo. Cada mensaje es precedido de una cabecera de mensaje de 23 bytes Message ID Payload Type TTL HOPS Payload Lenght Message ID: identificador único de mensaje (16 bytes) Payload Type: Ping, Pong, Bye, Push, Query, Query Hit (1 byte) TTL: número de veces que se puede hacer forwading (1 byte) HOPS: el número de veces que ha sido forwarded (1 byte) Payload Lenght: longitud del mensaje de protocolo (4 bytes) 16

Gnutella (protocolo v0.4) 5 tipos principales de mensajes: Ping. Se emplea para descubrir nodos nuevos en la red Un nodo que recibe un Ping, se espera que responda con uno o varios mensajes Pong Pong. Es la respuesta a un Ping Incluye la dirección de un nodo Gnutella e información sobre los datos que comparte Query. Mecanismo principal de Búsqueda en la red Un nodo responderá con un mensaje QueryHits si tiene la información pedida QueryHits. La respuesta a un mensaje Query Provee la suficiente información como para recuperar los datos solicitados Push. Permite a los nodos detrás de un cortafuegos (firewall) proveer datos 17 Gnutella (protocolo v0.4) Ping (Payload Type = 0x00) Estos mensajes no llevan Payload Cada nodo que reciba un mensaje Ping debe responder generando mensajes Pong (pueden ser n) donde anuncien su presencia ó de otros nodos que ellos conozcan Ejemplo mensaje Ping (hexadecimal) 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 00 07 00 00 00 00 00 Mensaje Message ID : 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 Payload Type : 00 TTL : 07 Hops : 00 Payload Lenght : 00 00 00 00 18

Gnutella (protocolo v0.4) Pong (Payload Type = 0x01) Emitidos en respuesta a un mensaje Ping. Un Ping puede provocar el envío de 1 o más mensajes Pong de respuesta Un nodo al recibir mensajes Pong puede abrir nuevas conexiones con otros nodos lo que le permite conocer más nodos de la red y darle una mayor estabilidad a su presencia en la red Gnutella La cabecera debe tener el mismo ID que la cabecera del Ping que ocasiona el Pong Payload (después de la cabecera): Port Number: puerto para las conexiones de entrada IP Address: dirección IP del host Shared Files Number: número de ficheros compartidos Shared Files Size: tamaño en KB s de ficheros compartidos 19 Gnutella (protocolo v0.4) Pong (Payload Type = 0x01) Ejemplo mensaje Pong (hexadecimal) 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 01 07 00 0E 00 00 00 CA 18 AA D2 62 95 03 00 00 00 0A 00 00 00 Mensaje Message ID : 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 Payload Type : 01 TTL : 07 Hops : 00 Payload Lenght : 0E 00 00 00 Carga Port Number : CA 18 IP Addres : AA D2 62 95 Shared Files Number : 03 00 00 00 Shared Files Size : 0A 00 00 00 20

Gnutella (protocolo v0.4) Uso del Ping y el Pong Cuando se recibe un Ping con TTL>1 y ha pasado más de 1 segundo desde el anterior se debe responder con 1 o más Pong. 10 es un número razonable. Los hosts deben minimizar el número de Pings y Pongs para no consumir bandwidth Un Ping con TTL=1 y Hops=0 se utiliza para probar al host remoto de una conexión. Debe responderse con un Pong Un Ping con TTL=2 y Hops = 0 se denomina Crawler Ping. Se debe responder con varios Pong que contengan la información del host que recibió el Ping y de sus vecinos. (La información de sus vecinos se puede generar en el propio host o bien reenviando el Ping original a sus vecinos.) 21 Gnutella (protocolo v0.4) Query (Payload Type = 0x80) Mecanismo para realizar búsquedas por la red. Si hay éxito se responde con un Query Hit Si no hay éxito el mensaje Query se reenvía a todos los nodos excepto al que nos lo envió Payload (después de la cabecera): Minimun Speed: velocidad mínima en kb/s a la que debe responder el receptor del mensaje Search Criteria: criterio de búsqueda de longitud variable. Terminado en 0x00 22

Gnutella (protocolo v0.4) Query (Payload Type = 0x80) Ejemplo mensaje Query (hexadecimal) 28 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 80 07 00 06 00 00 00 00 00 2A 2E 61 00 Mensaje Message ID : 28 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 Payload Type : 80 TTL : 07 Hops : 00 Payload Lenght : 06 00 00 00 Carga Minimun Speed : 00 00 Search Criteria : 2A 2E 61 00 (*.a + carácter nulo) 23 Gnutella (protocolo v0.4) QueryHit (Payload Type = 0x81) Los Query Hit deben enviarse como respuesta a un Query siempre que haya un matching entre la información local y el Search Criteria, por la misma ruta por la que llegó al nodo Un Query Hit tendrá el mismo Message ID que el Query que lo genera. El método de matching para el Search Criteria no se especifica. Un Query con TTL = 1, HOPS = 0 y Search Criteria = indica a un host que debe enviar toda la información sobre sus archivos compartidos a través de Query Hits Payload (después de la cabecera): Hits Number: número de Query Hits en el Result Set Port: el puerto por el que aceptar peticiones HTTP IP Address: dirección del responding host Speed: velocidad en KB/s del responding host... 24

Gnutella (protocolo v0.4) Evitando tráfico excesivo: Para evitar transmisiones duplicadas, cada nodo mantiene una lista de mensajes recibidos recientemente Los mensajes Query se reenvían a todos los nodos excepto al que nos lo envió Los mensajes QueryHits se encaminan sólo hacia el nodo del que se recibió el mensaje Query con el mismo campo ID Los duplicados con el mismo campo ID y tipo de mensaje se descartan Los mensajes QueryHits con un campo ID para el que no se haya visto un mensaje Query correspondiente se descartan 25 Gnutella (protocolo v0.4) Después de recibir mensajes QueryHits: El peticionario elige la mejor respuesta QueryHits. Inicia una petición HTTP directamente a la IP+puerto del nodo que contestó: GET /get/<índice fichero>/<nombre fichero>/http/1.0\r\n Connection: Keep-Alive\r\n Range: bytes=<desplazamiento desde comienzo>-\r\n User-Agent: Gnutella\r\n \r\n El nodo que lo recibe responde: HTTP/1.0 200 OK\r\n Server: Gnutella/0.4\r\n Content-Type: application/binary\r\n Content-Length: 4356789\r\n \r\n <datos del fichero> 26

Gnutella (protocolo v0.4) No hay servidores Los nodos en la red mantienen vecindades, constituyendo grafos superpuestos Los nodos almacenan sus propios ficheros Las peticiones (mensajes Query) se difunden, con TTL restringidos Las respuestas (mensajes QueryHits) se encaminan en sentido inverso al que llevaron las peticiones Soporta transferencia de ficheros a través de cortafuegos Ping-Pong periódicos para mantener la lista de vecinos al día, a pesar de los nodos uniéndose, abandonando o fallando. 27 BitTorrent BitTorrent es el nombre del protocolo de distribución de archivos mediante peer to-peer creado por Bram Cohen. Se refiere también a la aplicación cliente original. Y al tipo de archivos.torrent Servicio de localización La búsqueda es realizada por el usuario que consigue un archivo.torrent y lo carga en su aplicación cliente El archivo.torrent es creado por el usuario que quiere compartir un archivo El archivo.torrent enlaza al cliente con el fichero a descargar: Nombre del archivo, tamaño y el hash de cada bloque del archivo. La dirección de un servidor tracker. Otras informaciones, como instrucciones para el cliente Se distribuyen archivos.torrent mediante email o en websites 28

BitTorrent Cómo funciona? Seeds (semilla) Clientes que tienen un archivo completo compartido para que el resto de los usuarios lo puedan descargar Tracker (rastreador) servidores que recopilan información de los clientes que comparten un archivo (swarm), así como de todas las semillas que se están moviendo. El tracker indicado por el archivo mantiene un log de cuales usuarios están bajando el archivo y donde están el archivo y sus fragmentos. Los trackers son servicios que responden a HTTP/HTTPS request, usando un URL con método GET, la respuesta es en texto plano e incluye una lista de peers que ayudan al cliente a participar en el torrent Swarm (enjambre) Conjunto formado por todos los clientes que comparten un archivo.torrent, tanto los que aún tienen el archivo incompleto como las semillas 29 BitTorrent (Fuente: Keith W. Ross / Dan Rubenstein) url tracker 1. GET file.torrent 2. GET 3. list of peers 4. file.torrent info: length name hash urlof tracker 30

BitTorrent Transferencia de la información El archivo es roto en bloques pequeños (256 Kb estándar) los peers bajan los fragmentos entre ellos y mandan los que ya posean a los que lo requieran. El protocolo escoge la conexión más buena disponible para los fragmentos que requiere. Para incrementar la eficiencia los clientes piden los fragmentos que están disponibles en el menor número de peers, evitando cuellos de botella. Los clientes comienzan a mandar los fragmentos antes de terminar de bajar el archivo. 31 BitTorrent Los BitTorrent trackers asisten la comunicación entre peers. Los clientes deben comunicarse con estos para empezar a bajar los archivos. Si todas las semillas son quitadas, el archivo no podrá ser bajado nuevamente La propiedad leech resistance de BitTorrent provee a los que mandan más información el mejor desempeño al bajar los archivos Leech (sanguijuelas) Exprimir las descargas al máximo compartiendo lo mínimo posible. Al finalizar la descarga mueven el archivo para evitar la subida de partes. 32

Implementaciones Gnutella MLDonkey: Linux, Mac y Windows. Licencia GNU GPL Limewire: Java. Licencia GNU GPL Shareaza: Windows. Licencia GNU GPL BitTorrent azureus: Java. Licencia GNU GPL µtorrent: Windows. Código cerrado. BitTorrent y edonkey2000 Lphant: Linux, Mac y Windows. Licencia Freeware con Adware. Kadmelia y edonkey2000 emule: Windows. Licencia GNU GPL 33