la capa de aplicaciones (pt. 2) - cs.uns.edu.arags/rc/downloads/handouts/módulo 02 - la... ·...
Post on 25-Sep-2018
221 Views
Preview:
TRANSCRIPT
Redes de ComputadorasRedes de ComputadorasDepto. de Cs. e Ing. de la Comp.Depto. de Cs. e Ing. de la Comp.Universidad Nacional del SurUniversidad Nacional del Sur
Módulo 02Módulo 02La Capa de AplicacionesLa Capa de Aplicaciones
(Pt. 2)(Pt. 2)
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 22
CopyrightCopyrightCopyright © 2010-2018 A. G. Stankevicius
Se asegura la libertad para copiar, distribuir y modificar este documento de acuerdo a los términos de la GNU Free Documentation License, versión 1.2 o cualquiera posterior publicada por la Free Software Foundation, sin secciones invariantes ni textos de cubierta delantera o trasera.
Una copia de esta licencia está siempre disponible en la página http://www.gnu.org/copyleft/fdl.html.
La versión transparente de este documento puede ser obtenida de la siguiente dirección:
http://cs.uns.edu.ar/~ags/teaching
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 33
ContenidosContenidosServicios que requiere la capa de aplicaciones.
Protocolos de la capa de aplicaciones.
HTTP.
SMTP, POP e IMAP.
DNS.
Arquitectura de las aplicaciones P2P.
Programación basada en sockets.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 44
Directorio de nombresDirectorio de nombresUno de los requerimientos de las aplicaciones de red es poder identificar unívocamente a cualquier computadora dentro de la red.
A nivel de hardware se usa una cadena de 32 bits denominada dirección IP.
Para facilitar la comunicación de direcciones IP se suele cortar la cadena en cuatro partes de 8 bits, expresadas en decimal y separadas por un punto.
Aún con esa convención, recordar múltiples direcciones IP se vuelve bastante complicado...
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 55
Directorio de nombresDirectorio de nombresLos humanos sin duda retenemos con más facilidad nombres simbólicos concretos.
Por caso, cs.uns.edu.ar.
Necesitamos un servicio que nos permita convertir nombre simbólicos en direcciones IP.
Características que debería tener este servicio:
El sistema de directorio de nombres de internet necesita ser confiable y eficiente.
La base de datos resultante es altamente dinámica, ya que se producen altas y bajas constantemente.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 66
Sistema centralizadoSistema centralizadoLa solución inmediata sería ensayar alguna forma de sistema centralizado.
El archivo /etc/hosts de los sistemas UNIX.
No obstante:
Poca tolerancia a fallos.
Volumen de tráfico astronómico.
Imposible estar cerca de todas partes a la vez.
Imposible mantener al día de la base de datos.
Alto costo para escalar el sistema.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 77
Domain Name SystemDomain Name SystemLa solución adoptada para este complicado problema es hacer uso de una base de datos distribuida junto con el correspondiente protocolo de la capa de aplicaciones.
Se denomina DNS (Domain Name System).
La base de datos distribuida está compuesta poruna jerarquía de servidores de dominio.
Computadoras, routers y servidores de dominiose comunican entre sí usando el protocolo DNS.
La complejidad se lleva a la frontera de la red.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 88
Domain Name SystemDomain Name SystemRol central:
Mapear nombres simbólicos a direcciones IP.
Roles secundarios:
Implementar sinónimos simbólicos. Nótese que para esto hace falta distinguir a uno de los sinónimoscomo el nombre canónico.
Usar estos sinónimos en los servidores de correo.
Posibilitar un esquema de distribución de carga (asociando las direcciones IP de múltiples servidores a un mismo nombre simbólico).
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 99
Domain Name SystemDomain Name SystemNingún servidor conoce la totalidad del mapeo bajo este esquema distribuido.
El servidor de dominio se denomina categórico cuando conoce de primera mano el mapeo paraun determinado conjunto de computadoras.
Los servidores, categóricos o no, se organizan jerárquicamente en función de la cantidadde computadoras a su cargo.
Los servidores en el tope de la jerarquíase denominan servidores raíz.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1010
Jerarquía de servidoresJerarquía de servidores
.gov
.
.edu.org.com ... .ar .za...
google.com amazon.com com.ar org.ar edu.ar gov.ar
unlp.edu.aruns.edu.ar
cs.uns.edu.ar www.uns.edu.ar
las hojas soncomputadoras
concretas
se denomina dominioa cada subárbolde la jerarquía
se denomina zonaa cada porción
asignada a un servidorautoritativo
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1111
Servidores raízServidores raízHay 13 servidores raíz en todo el mundo:
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1212
Entidades a cargoEntidades a cargoe NASA Mt View, CAf Internet Software C., Palo Alto, CA (y otros 48 lugares)
a Verisign, Los Angeles, CA (y otros 5 lugares)b USC-ISI, Marina del Rey, CAl ICANN, Los Angeles, CA (y otros 41 lugares)
k RIPE Londres (y otros 17 lugares)
i Netnod, Estocolmo (y otros 37 lugares)
m WIDE, Tokio (y otros 5 lugares)
c Cogent, Herndon, VA (y en otros 5 lugares)d U Maryland College Park, MDg US DoD Columbus, OH (y en otros 5 lugares)h ARL Aberdeen, MDj Verisign, Dulles, VA (y en otros 69 lugares)
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1313
DNS en la actualidadDNS en la actualidadLa carga en los servidores raíz creció de gran forma con el advenimiento de la web.
Los dominios de primer nivel (top-level domain) se solían clasificar en dos grandes categorías:
Por un lado están los dominios de primer nivel genéricos (.com, .edu, .gov, .org, .mil y .net).
Por otra parte están los dominios de primer nivelde países (por caso, .ar, .br, .cl, etc.).
En agosto de 2000 los servidores raíz pudieron delegar los dominios de primer nivel genéricos.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1414
DNS en la actualidadDNS en la actualidadEn la actualidad los dominios de primer nivelse clasifican en múltiples categorías.
Dominios sin una organización detrás:
.com, .edu, .gov, .org, .mil y .net
.biz (para las empresas)
.info (información en general)
.name (para personas individuales)
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1515
DNS en la actualidadDNS en la actualidadDominios con una organización detrás:
.aero (industria aeronáutica)
.coop (cooperativas)
.museum (museos)
.travel (industria del turismo)
Dominios nuevos que recién comienzan:
.mobi (dominios optimizados para celulares)
.tel (relativo a la industria telefónica)
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1616
DNS en la actualidadDNS en la actualidadLa situación en Argentina es muy buena,la gestión de los dominios .ar está a cargodel sitio nic.ar que depende del gobierno.
Por caso, hasta el año 2013 el registro y la delegación de los dominios .com.ar era gratuita, una excelente medida que propendía a fomentar la adopciónde estas tecnologías.
En la actualidad si bien se cobra un costo fijo porla mayoría de los trámites, el mismo sigue siendo relativamente accesible.
Por caso, $270 por una renovación de dominio.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1717
Domain Name SystemDomain Name SystemCada red local de computadoras cuenta conun servidor de dominio por defecto.
Las computadoras de la red acceden en primerlugar al servidor por defecto.
Si el servidor local no fuera capaz de resolver una consulta, se accederá a uno de los servidores raíz.
El servidor raíz contacta al servidor categórico correspondiente, a fin de poder acercarle al servidorlocal el mapeo que no había podido resolver.
Cada zona cuenta con su respectivo conjuntode servidores categóricos (principal y secundario).
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1818
Ejemplo de consulta DNSEjemplo de consulta DNSSupongamos que la computadoracs.uns.edu.ar quiere averiguarel IP de la computadoracs.uni-muenchen.de.
En primer lugar contactaa dns.cs.uns.edu.ar,su servidor DNS local
dns.cs.uns.edu.arcontacta a un servidorraíz, de ser necesario.
computadora que consultacs.uns.edu.ar cs.uni-muenchen.de
1
23
45
6
servidor de dominiolocal
dns.cs.uns.edu.ar
servidor de dominiocategórico
dns.cs.uni-muenchen.de
servidor dedomino raíz
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 1919
Ejemplo de consulta DNSEjemplo de consulta DNSEl servidor raíz se contacta conel servidor categórico, de sernecesario.
El servidor raíz es posibleque no conozca quién esel servidor categórico.
No obstante, si es usualque conozca a quiénpreguntar al respecto.
El nodo padre almacenaesa información.
computadora que consultacs.uns.edu.ar cs.uni-muenchen.de
1
2 3
6
7
8
servidor de dominiolocal
dns.cs.uns.edu.ar
servidor de dominiointermedio
dns.uni-muenchen.de
servidor dedomino raíz
4
servidor de dominiocategórico
dns.cs.uni-muenchen.de
5
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2020
Consultas iteradasConsultas iteradasEl servidor raíz tiene dos opciones a la hora de contestar a una consulta que no haya podido resolver apelando a sus propios registros:
Por un lado puede encargarse él mismo de averiguar cómo responder a la consulta. Esta modalidad se denomina resolución recursiva de consultas.
Otra alternativa es contestar simplemente “no lo sé, pero este servidor quizás si lo sepa”. Esta modalidad se denomina resolución iterada de consultas.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2121
Ejemplo de consulta iteradaEjemplo de consulta iteradaSupongamos nuevamente quela computadora cs.uns.edu.arquiere averiguar el IPde la computadoracs.uni-muenchen.de.
El servidor raíz no conoceel IP buscado, por loque contesta con ladirección del servidorque posiblemente siconozca ese IP.
computadora que consultacs.uns.edu.ar cs.uni-muenchen.de
1
2
4
5
3
6
servidor de dominiolocal
dns.cs.uns.edu.ar
servidor de dominiocategórico
dns.cs.uni-muenchen.de
servidor dedominio raíz
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2222
Cache DNS localCache DNS localToda vez que un servidor toma conocimiento de un nuevo mapeo actualiza su cache individual.
Las entradas de este cache cuentan con un atributo de tiempo de vida, es decir, pasado un cierto tiempo desaparecen.
Los mecanismos de actualización de la basede datos de registros y de propagación deestas modificaciones están especificadospor un grupo de trabajo de la IETF.
Este grupo de trabajo produjo el RFC 2136.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2323
Relación entre nombres e IPsRelación entre nombres e IPsEl sistema DNS tiene que contemplarun conjunto bastante flexible de relaciones entre nombres simbólicos y direcciones IP:
El caso básico es la relación uno-a-uno, por ejemplo cs.uns.edu.ar y 200.49.226.11.
También existe el caso muchos-a-uno, por caso pop3.cs.uns.edu.ar y smtp.cs.uns.edu.ar.
Finalmente tenemos el caso uno-a-muchos, por caso google.com está asociado a un conjunto bastante grande de direcciones IP.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2424
Registros DNSRegistros DNSLa base de datos distribuida DNS se componede un conjunto de registros DNS.
Los registros DNS son meras tuplas:
(nombre, valor, tipo, tiempo de vida)
El rol de cada uno de los campos difiere en función del valor contenido en el campo tipo.
Para el tipo A, nombre contiene el nombre simbólico de una computadora y valorsu dirección IP.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2525
Registros DNSRegistros DNSPara el tipo NS, nombre contiene un nombrede dominio y valor contiene la direccióndel servidor autoritativo para ese dominio.
Para el tipo CNAME, nombre contiene un alias simbólico que será asociado a un cierto nombre canónico y valor contiene ese nombre canónico.
Para el tipo MX, nombre contiene un dominioy valor contiene la dirección del servidorde mail que corresponde a ese dominio.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2626
El protocolo DNSEl protocolo DNSEl protocolo DNS usa un formato de mensaje fijo para consultas y respuestas.
Está especificado formalmente en el RFC 1034/5.
identificación
cant. de consultas
cant. de resp. autorit.
flags
cant. de respuestas
cant. de resp. adicionales
consultas
respuestas
respuestas categóricas
respuestas adicionales
12 bytes
tamaño variable
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2727
El protocolo DNSEl protocolo DNSSignificado de los distintos campos:
El encabezado tiene un tamaño fijo de de 12 bytes.
El cuerpo es de un tamaño variable (pues dependede la cantidad de respuestas incluidas).
El campo identificación contiene un valor de 16 bits con el cual se asocian las consultas a las respuestas.
El campo flags permite indicar si se trata de una consulta o una respuesta, si se prefiere o si está disponible una respuesta recursiva, o si la respuesta es autoritativa.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2828
El protocolo DNSEl protocolo DNSSignificado de los distintos campos (continúa):
Cada consulta indica el tipo de registro buscado así como el valor del campo nombre en cuestión.
Cada respuesta contiene el registro DNS deseado.
Cada respuesta categóricas contiene el registro DNS de un servidor categórico.
Cada respuesta adicional contiene información extra considerada de utilidad.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 2929
Incorporación de dominiosIncorporación de dominiosSupongamos que queremos arrancar una startup para desarrollar la próxima killer app…
Registramos el dominio killerapp.com con un gestor (conocidos como DNS registrar).
El gestor nos brinda el nombre y el IP del que será nuestro servidor categórico (primario y secundario)
A su vez, inserta dos registros en el server TLD .com:
(killerapp.com, dns1.killerup.com, NS, 86400)
(dns1.killerup.com, 1.2.3.4, A)
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3030
Vectores de ataqueVectores de ataqueCabe señalar que la jerarquía DNS constituye en principio un punto único de fallo de internet.
Como tal, ha resultado objeto de diferentes intentos de ataques, con diverso grado de éxito.
Ataques tipo DDoS a los servidores raíz:
La idea es tapar con pedidos espurios a uno o másde uno de los servidores raíz.
Al día de la fecha nunca funcionó…
...no obstante, ¡los servidores raíz están bajo estricta vigilancia armada las 24 horas del día!
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3131
Vectores de ataqueVectores de ataqueAtaques tipo DDoS a los servidores TLD:
¡Potencialmente más peligroso que el anterior!
Ataques de redirección:
Variante man-in-the-middle, interceptar y adulterarlas consultas y las respuesta a mitad de camino.
Variante envenenamiento: contaminar las respuestas almacenadas en el cache de los servidores.
Ataques tipo DDoS causados por el DNS:
Enviar en cantidad consultas espurias con el IPde origen adulterado.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3232
ConfiabilidadConfiabilidadLa alta replicación de la base de datos DNS aporta dos grandes beneficios:
Mejora notablemente la confiabilidad.
Permite implementar alguna forma de balancede carga a fin de obtener un mejor desempeño.
Se utiliza UDP como protocolo de transporte.
De hacer falta integridad, se debe implementara nivel de la aplicación.
¿Por qué razón no se usa TCP?
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3333
Herramientas DNSHerramientas DNSEl programa dig es una de las herramientas más usadas para diagnosticar errores enla configuración de los servidores DNS.
El parámetro @ permite enviar la consulta aun servidor en particular.
El parámetro +norecurse permite recorrer a manola jerarquía de servidores de dominio.
El parámetro +trace permite inspeccionarlas respuestas que recibe el servidor de dominiopor defecto al resolver la consulta efectuada.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3434
Arquitectura Arquitectura P2PP2P pura puraCaracterísticas de las aplicaciones que hacen uso del estilo arquitectónico P2P puro:
No requiere de servidores todo el tiempo en línea.
Las computadoras en la frontera de la redse comunican directamente entre sí.
Los pares se conectan y desconectan de la red P2P todo el tiempo, a veces modificando su dirección IP.
Analizaremos principalmente dos aspectos,la distribución de contenidos y la búsquedade información en redes P2P.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3535
Distribución de contenidosDistribución de contenidos¿Cuánto tiempo toma distribuir un documento de f bits de un servidor a n computadoras?
núcleo de la red
servidoru
sdn
un
d2
u2d
1
u1
clientes
(se asume que el núcleode la red cuenta conel suficiente ancho
de banda)
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3636
Distribución de contenidosDistribución de contenidosAnálisis (modelo cliente servidor):
El servidor debe enviar secuencialmente n vecesel documento de f bits a cada uno de los clientes.
Esto es, insume alrededor de nf/us segundos.
A un determinado cliente i le toma f/di segundos
el descargar el documento.
En síntesis, el tiempo que toma la distribucióndel documento bajo este modelo es:
Tc-s = máx( nf/us, f/mín(d
i) )Tc-s = máx( nf/u
s, f/mín(d
i) )
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3737
Distribución de contenidosDistribución de contenidosAnálisis (modelo P2P):
El servidor como mínimo debe enviar enviar al conjunto de clientes una copia entera de documento.
Esto es, insume alrededor de f/us segundos.
A un determinado cliente i le toma f/di segundos
el descargar el documento.
Los nf bits han de ser descargados de cualquier par, es decir, usando el ancho de banda agregado u
s+∑u
i.
Tp2p = máx( f/us, f/mín(d
i), nf/(u
s+∑u
i) )Tp2p = máx( f/u
s, f/mín(d
i), nf/(u
s+∑u
i) )
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3838
Distribución de contenidosDistribución de contenidos
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 3939
Protolo Bit TorrentProtolo Bit TorrentEl protocolo Bit Torrent ilustra el modelo P2Pde distribución de contenido antes analizado.
Un nodo destacado, denominado tracker, mantieneactualizado el listado de pares activos.
Los pares inter-cambian piezasdel torrent queestá siendocompartido.
el nuevo par descargael listado actualizado
tracker
intercambio de piezas
pares
paresnuevo par
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4040
Protocolo Bit TorrentProtocolo Bit TorrentCaracterísticas del protocolo:
El torrent se divide en piezas de 256 KB.
Al sumarse al torrent se debe registrar con el tracker, quien le acerca el listado de pares activos.
Cada par se conecta con un subconjunto de los pares activos (denominados vecinos).
Al mismo tiempo que descarga nuevas piezas va compartiendo las que ya tiene con sus vecinos.
Los pares pueden ingresar o salir del torrenta voluntad y en cualquier momento.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4141
Obtención de las piezasObtención de las piezasEn todo momento, los distintos pares cuentan con distintos subconjuntos de piezas.
Periódicamente cada par consulta a sus vecinos acerca del listado de piezas que poseen.
Cada par al recibir esa información de sus vecinos procede a encargar le envíenlas piezas que le estén faltando.
Las piezas faltantes se ordenan en función de su rareza, encargando primero las menos difundidas.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4242
Envío de las piezasEnvío de las piezasPara determinar que solicitudes priorizar,los pares ordenan a sus vecinos en funcióndel ancho de banda con el cual éstos le estén enviando piezas (favor con favor se paga).
Cada 10 segundos se eligen los mejores cuatro vecinos y se atiende sus primeros pedidos.
En simultáneo, cada 30 segundos se elige otro par al azar y se le envía lo que necesite.
La idea es agregarle dinamismo a la red de pares.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4343
Favor con favor se pagaFavor con favor se pagaSupongamos que Andrea elige al azar a Bruno.
Seguramente se convertirá en uno de los mejores vecinos de Bruno.
De ser así, Bruno le empezará a subir a Andrea, y quizás llegue a ser uno de sus vecinos preferido.
Andrea
Bruno¡al compartir másse descarga más!
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4444
Base de datos simpleBase de datos simpleUna base de datos en su versión más simple es en esencia un mapeo entre claves y valores:
Clave: apellido y nombre; Valor: número de teléfono
Clave: título de la película; Valor: dirección IP
clave valor
Palotes, Juan Dellos 154-354-3570
D'etal, Fulano 156-585-3791
Mengano, Evaristo 154-141-0902
……. ………
Zultano, Cástulo 155-341-0908
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4545
Tabla hashTabla hashCualquier clave puede ser indexada como si se tratara de una clave numérica:
clave numérica = hash(clave original)
clave original clave numérica valor
Palotes, Juan Dellos 8962458 154-354-3570
D'etal, Fulano 7800356 156-585-3791
Mengano, Evaristo 1567109 154-141-0902
……. ……. ………
Zultano, Cástulo 2360012 155-341-0908
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4646
Distributed Hash TableDistributed Hash TableUn aspecto nada trivial en las aplicaciones P2Pes la representación de bases de datos.
En contraste, en una aplicación cliente-servidor, podemos hacer uso del primer DMBS que se nos cruce por delante.
El mecanismo mayormente utilizado se denomina Distributed Hash Table (DHT).
La DHT hace las veces de base de datos distribuida.
Se compone de un conjunto de tuplas (clave, valor) repartidas entre los pares.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4747
Distributed Hash TableDistributed Hash TableCualquier par puede consultar la base de datos mediante una clave.
La DHT retornará el valor asociado a esa clave.
Para resolver la consulta, se intercambia un pequeño número de mensajes entre los pares.
Cada par necesita conocer sólo un pequeño número de su pares.
El algoritmo tolera que los pares entren y salgande la red P2P en cualquier momento.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4848
Identificadores DHTIdentificadores DHTLos pares de la red P2P se identifican a través de un entero en el rango [0, 2n-1].
Es decir, cada par se caracteriza mediante n bits.
A su vez, las claves de las tuplas tienen queser valores enteros tomados del mismo rango.
Como vimos, si las claves no fueran valores enteros, se puede simplemente calcular el valor de hashsobre la misma.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 4949
Asignación de claves a paresAsignación de claves a paresEl problema central al implementar una DHTes cómo repartir las tuplas entre los pares.
Como pares y claves comparten el mismo rango,se puede ensayar asignar cada tupla al par cuyo identificador sea el más próximo a su clave.
En los siguientes ejemplos consideraremos como par más próximo al sucesor inmediato.
Por ejemplo, con n = 4, para los pares 1, 3, 4, 5, 8,10, 12 y 14 definimos que para la clave 8 el sucesor inmediato es 8, pero para 13 es 14 y para 15 es 1.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5050
DHT circularDHT circular
Cada par sólo conoce los pares adyacentes.
Se conforma una red superimpuesta (overlay).
13
4
5
810
12
14
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5151
DHT circularDHT circular
La resolución de una consulta insume O(n) mensajes para una red de n pares.
13
4
5
810
12
14
¿quién se encarga dela tupla cuya clave
es “1101”?
¿110
1?
¿1101?¿1101?
¿1101?¿1101? ¿1
101?
¡yo!
esta consulta insumió6 mensajes + 1 respuesta
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5252
DHT circular con atajosDHT circular con atajos
Cada nodo registra la dirección de los nodos antecesor, sucesor y atajos.
Con log n atajos, se reduce a O(log n) mensajes.
13
4
5
810
12
14
¿quién se encarga dela tupla cuya clave
es “1101”?¡yo!
la consulta ahora insumió2 mensajes + 1 respuesta
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5353
Actualización del DHTActualización del DHTDada la naturaleza dinámica del conjuntode pares, también se debe contemplarla incorporación y la eliminación de pares:
Para esto, cada par registra no sólo uno sinodos antecesores y dos sucesores.
Periódicamente contacta al antecesor y al sucesor inmediato para ver si siguen en línea.
En caso de no contestar, actualiza los sucesores y antecesores de manera apropiada.
¿Cómo se resolverá la incorporación de nuevos pares?
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5454
Actualización del DHTActualización del DHT
El nodo 4 detecta que 5 no contesta, hace 8 su sucesor inmediato y al sucesor de 8 su segundo sucesor. El nodo 8 también hace lo propio.
13
4
5
810
12
14
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5555
Programación con socketsProgramación con socketsUn socket es una interfaz local, creada por una cierta aplicación y controlada por el sistema operativo, la cual permite enviar y recibir datos desde/hacia otro proceso.
controladopor el sistema
operativo
controlado porel programador
internet
transporte
aplicación
físicaenlace
red
proceso
transporte
aplicación
físicaenlace
red
procesosockets
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5656
SocketsSocketsLa API sockets fue introducida en la versión 4.1 del UNIX BSD.
Los sockets son creados, utilizados y destruidospor las aplicaciones.
Hacen uso del estilo arquitectónico cliente-servidor.
Pone a disposición del programador dos servicios de transporte:
Transporte no confiable de datagramas.
Transporte confiable de un flujo de bytes.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5757
Ejemplo de aplicaciónEjemplo de aplicaciónSe desea implementar una aplicación cliente servidor con las siguientes características:
El cliente lee lo ingresado por el usuario en el teclado y lo envía al servidor a través de un socket.
El servidor lee una línea de su socket y procede a mayusculizarla.
Luego, el servidor la envía de vuelta al cliente.
El cliente recibe la respuesta del servidor y finalmente la muestra por pantalla.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5858
Programación c/sockets UDPProgramación c/sockets UDPEl transporte UDP no hace uso de una conexión permanente entre cliente y servidor.
No requiere inicialización de la conexión.
Al mandar cada datagrama se debe indicar explícitamente el IP y puerto destino.
El receptor de un datagrama debe tomar notadel IP y puerto de origen con el objeto de poder responder al mismo.
Debemos recordar que UDP no asegurala transmisión ni el orden de los datagramas.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 5959
Bosquejo de interacciónBosquejo de interacción
crea un socket atado al puerto 12345 yqueda a la espera de requerimientos
serverSocket = socket(AF_INET, SOCK_DGRAM)
Server(127.0.0.1:12345)
lee un nuevo requerimiento desdeserverSocket
escribe el mensaje de respuestaindicando el IP y el puerto de origen en
serverSocket
Cliente(127.0.0.1)
crea el socket del clienteClientSocket = socket(AF_INET, SOCK_DGRAM)
crea un requerimiento con la dirección destino127.0.0.1, Puerto 12345 y envía la envía usando
clientSocket
lee la respuesta desdeclientSocket
cierra elclientSocket
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 6060
Cliente UDP en PythonCliente UDP en Pythonfrom socket import *
serverName = '127.0.0.1'serverPort = 12345
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = input('Ingrese un string: ')
clientSocket.sendto(bytes(message,'utf-8'), (serverName, serverPort))
modifiedMessage, serverAddress = \ clientSocket.recvfrom(2048)
print ('Recibido del servidor:', modifiedMessage.decode('utf-8'))
clientSocket.close()
from socket import *
serverName = '127.0.0.1'serverPort = 12345
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = input('Ingrese un string: ')
clientSocket.sendto(bytes(message,'utf-8'), (serverName, serverPort))
modifiedMessage, serverAddress = \ clientSocket.recvfrom(2048)
print ('Recibido del servidor:', modifiedMessage.decode('utf-8'))
clientSocket.close()
crea un socketpara datagramas
le agregamos nombre ypuerto y lo enviamos
por el socket
muestra la respuestapor pantalla y cierra
el socket
incluimos la libreríaSocket de python
leemos del teclado
recibimos la respuestageneradas por el servidor
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 6161
Servidor UDP en PythonServidor UDP en Pythonfrom socket import *
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('127.0.0.1', 12345))
print ('El servidor está listo...')
while 1:
message, clientAddress = \ serverSocket.recvfrom(2048)
modifiedMessage = message.upper()
serverSocket.sendto(modifiedMessage, clientAddress)
from socket import *
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('127.0.0.1', 12345))
print ('El servidor está listo...')
while 1:
message, clientAddress = \ serverSocket.recvfrom(2048)
modifiedMessage = message.upper()
serverSocket.sendto(modifiedMessage, clientAddress)
lo ata a la dirección127.0.0.1, puerto 12345
toma del socket el mensajerecibido y registra
el IP y puerto de origen
crea un socketpara datagramas
ciclo infinito
devuelve al clientela cadena mayusculizada
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 6262
Programación con sockets TCPProgramación con sockets TCPPasos involucrados en la interacción estándar entre cliente y servidor:
El proceso servidor debe estar corriendo al momento de iniciar la comunicación.
El servidor tiene que haber creado con anterioridadun socket especial que acepte los requerimientospor parte de los clientes.
El cliente crea un nuevo socket estándar TCP especificando la dirección IP y el puerto deseado.
Al crear este socket se establece la conexión TCP.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 6363
Programación con sockets TCPProgramación con sockets TCPContinúa:
En el momento de recibir una nueva conexión,el servidor crea un segundo socket a través del cual se comunicará con ese cliente en particular.
De esta manera, un servidor puede atender múltiples requerimientos de distintos clientes en simultáneo.
Los clientes se distinguen a través del número de puerto de origen que indican en sus requerimientos.
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 6464
Bosquejo de interacciónBosquejo de interacción
crea un socket en el puerto 54321 yqueda a la espera de requerimientosserverSocket = socket();
inicializaciónde la conexión TCP
Server(127.0.0.1:54321)
espera el arribo deun nuevo requerimiento
connectionSocket =serverSocket.accept();
lee el nuevo requerimiento desdeconnectionSocket
escribe el mensaje de respuesta enconnectionSocket
cierra aconnectionSocket
Cliente(127.0.0.1)
crea un socket y lo conectaal IP 127.0.0.1, puerto 54321clientSocket = socket();
envía un nuevo requerimiento usandoclientSocket
lee la respuesta desdeclientSocket
cierra aclientSocket
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 6565
Cliente TCP en PythonCliente TCP en Pythonfrom socket import *
serverName = '127.0.01'serverPort = 54321
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = input('Ingrese un string: ')
clientSocket.send(bytes(sentence, 'utf-8'))
modifiedMessage = clientSocket.recv(1024)
print ('Recibido del servidor: ', modifiedMessage.decode('utf-8'))
clientSocket.close()
from socket import *
serverName = '127.0.01'serverPort = 54321
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = input('Ingrese un string: ')
clientSocket.send(bytes(sentence, 'utf-8'))
modifiedMessage = clientSocket.recv(1024)
print ('Recibido del servidor: ', modifiedMessage.decode('utf-8'))
clientSocket.close()
lo conecta al servidorusando el puerto 54321
no hace falta indicarIP o puerto destino
crea un socket TCP
Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 6666
Servidor TCP en PythonServidor TCP en Pythonfrom socket import *
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind(('127.0.0.1',54321))
serverSocket.listen(1)
print ('El servidor está listo...')
while 1:
connectionSocket, addr = serverSocket.accept() sentence = connectionSocket.recv(1024) capitalizedSentence = sentence.upper() connectionSocket.send(capitalizedSentence) connectionSocket.close()
from socket import *
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind(('127.0.0.1',54321))
serverSocket.listen(1)
print ('El servidor está listo...')
while 1:
connectionSocket, addr = serverSocket.accept() sentence = connectionSocket.recv(1024) capitalizedSentence = sentence.upper() connectionSocket.send(capitalizedSentence) connectionSocket.close()
el servidor empieza arecibir requerimientos
se leen bytes del socket(pero ni IP ni puerto
de origen, ¡no hace falta!)
crea un socketde bienvenida
ciclo infinito
cierra el socket del cliente(no así el de bienvenida)
el servidor ante el arribode un requerimiento,crea un nuevo socket
top related