la capa de aplicaciones (pt. 2) - cs.uns.edu.arags/rc/downloads/handouts/módulo 02 - la... ·...

67
Redes de Computadoras Redes de Computadoras Depto. de Cs. e Ing. de la Comp. Depto. de Cs. e Ing. de la Comp. Universidad Nacional del Sur Universidad Nacional del Sur Módulo 02 Módulo 02 La Capa de Aplicaciones La Capa de Aplicaciones (Pt. 2) (Pt. 2)

Upload: truongkhuong

Post on 25-Sep-2018

221 views

Category:

Documents


0 download

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

Redes de Computadoras - Mg. A. G. StankeviciusRedes de Computadoras - Mg. A. G. Stankevicius 6767

¿¿Preguntas?Preguntas?