104
Capa de Aplicación Copyright 1996-2002. J.F Kurose y K.W. Ross. Todos los derechos reservados. Redes de computadores: un enfoque descendente basado en Internet, 2ª edición. Jim Kurose, Keith Ross

Clase 20 Capa de Aplicacion v.1

Embed Size (px)

DESCRIPTION

explicacion

Citation preview

Page 1: Clase 20 Capa de Aplicacion v.1

Capa de Aplicación

Copyright 1996-2002.J.F Kurose y K.W. Ross.Todos los derechos reservados.

Redes de computadores: un enfoque descendente basado en Internet, 2ª edición.Jim Kurose, Keith Ross

Page 2: Clase 20 Capa de Aplicacion v.1

Capa de aplicaciónNuestros objetivos: Aspectos

conceptuales y de implementación de los protocolos de las aplicaciones de red. Modelos de servicio

de la capa de transportes

Paradigma cliente-servidor.

Paradigma entre iguales (peer to peer).

Aprendizaje de protocolos por medio del estudio de protocolos a nivel de aplicación. HTTP. FTP. SMTP / POP3 / IMAP. DNS.

Programación de aplicaciones de red. Socket de API.

Page 3: Clase 20 Capa de Aplicacion v.1

Tabla de contenidos

2.1 Principios de los protocolos de la capa de aplicación.

2.2 La Web y HTTP. 2.3 Transferencia de

archivos: FTP. 2.4 Correo

electrónico en Internet. SMTP, POP3, IMAP.

2.5 DNS: el servicio de directorio de Internet.

2.6 Programación de sockets con TCP.

2.7 Programación de sockets con UDP.

2.8 Construcción de un servidor web sencillo.

2.9 Distribución de contenidos: Caché web. Redes de distribución de

contenidos. Compartición de archivos

entre iguales.

Page 4: Clase 20 Capa de Aplicacion v.1

Aplicaciones de red: jerga

Proceso: programa que se ejecuta en un host.

En el mismo host, dos procesos se comunican utilizando comunicación interproceso (definidos por un sistema operativo).

Los procesos que se ejecutan en diferentes hosts se comunican con un protocolo de capa de aplicación.

Agentes de usuario: interfaces con un usuario “por encima” y una red “por debajo”.

Implementa interfaces de usuario y protocolos a nivel de aplicación. Web: navegador. Correo electrónico:

lector de correo. Transmisión de

audio/vídeo: reproductor multimedia.

Page 5: Clase 20 Capa de Aplicacion v.1

Aplicaciones y protocolos de la capa de aplicaciónAplicación: comunicación,

procesos distributivos. Por ejemplo: correo electrónico,

web, compartición de archivos entre iguales, mensajería instantánea.

Funcionamiento en sistemas finales (hosts).

Intercambio de mensajes para la implementación de aplicaciones.

Protocolos de capa de aplicación Una “parte” de la aplicación. Definición de mensajes

intercambiados entre las aplicaciones y las acciones tomadas.

Uso de servicios de comunicación proporcionados por los protocolos de capas inferiores (TCP, UDP).

Aplicación

TransporteRed

Enlace de datos

Física

Aplicación

TransporteRed

Enlace de datos

Física

Aplicación

TransporteRed

Enlace de datos

Física

Page 6: Clase 20 Capa de Aplicacion v.1

Características de los protocolos de capa de aplicación Los tipos de mensajes

intercambiados, por ejemplo, mensajes de petición y de respuesta.

Sintaxis de los tipos de mensajes: qué campos hay en los mensajes y cómo están delineados estos campos.

Semántica de los campos, por ejemplo, significado de la información en los campos.

Reglas que determinan cuándo y cómo los procesos envían y responden a los mensajes.

Protocolos de dominio público:

Definidos en RFC. Permiten

interoperabilidad. Por ejemplo: HTTP,

SMTP.Protocolos de

propietarios: Por ejemplo:

KaZaA,ARES, LimeWire.

Page 7: Clase 20 Capa de Aplicacion v.1

Paradigma del cliente-servidorLa aplicación de red típicamente

tiene dos partes: el cliente y el servidor

Aplicación

TransporteRed

Enlace de datos

Física

Aplicación

TransporteRed

Enlace de datos

Física

Cliente: Inicia el contacto con el servidor

(“habla primero”). Normalmente solicita un servicio

del servidor. Web: cliente implementado en

el navegador; correo electrónico: en el lector de correo.Servidor:

Proporciona el servicio solicitado al cliente.

Por ejemplo, el servidor de Web envía la página Web solicitada, el servidor de correo entrega el correo electrónico.

Petición

Respuesta

Page 8: Clase 20 Capa de Aplicacion v.1

Procesos que se comunican a través de la red

El proceso envía/recibe mensajes a/de su socket.

El socket es análogo a una puerta: El proceso emisor empuja el

mensaje por su puerta. Este proceso asume la

existencia de una infraestructura de transporte al otro lado de la puerta que transportará el mensaje al socket en el proceso receptor.

Socket: interfeaz entre el proceso de aplicación y la capa de transporte

proceso

TCP con búferes,variables

socket

Host o servidor

proceso

TCP conbúferes,variables

socket

Host o servidor

Internet

controlado por el sistema operativo

controlado porel desarrollador de la aplicación

Tambien se le denomina API: (1) elección del protocolo de transporte; (2) posibilidad de fijar algunos parámetros.

Page 9: Clase 20 Capa de Aplicacion v.1

Direccionamiento de procesos: Para que un proceso

reciba mensajes debe tener un identificador.

Cada host tiene una única dirección IP de 32 bits.

Pregunta: ¿Basta con la dirección IP del host, en el que el proceso se ejecuta, para identificar el proceso?

Respuesta: No, ya que muchos procesos diferentes pueden estar ejecutándose en el mismo host.

El identificador incluye tanto la dirección IP como los números de puerto asociados con el proceso del host.

Ejemplos de números de puerto: Servidor HTTP: 80. Servidor de correo: 25. Telnet : 23. FTP: 20.

Más adelante se tratará este tema con más profundidad.

Page 10: Clase 20 Capa de Aplicacion v.1

¿Qué servicio de transporte necesita una aplicación?Pérdida de datos Ciertas aplicaciones (por

ejemplo, audio) pueden tolerar algunas pérdidas.

Otras aplicaciones (por ejemplo, transferencia de archivos, Telnet) requieren el 100 por ciento de transferencia fiable de datos.

Temporización Algunas aplicaciones

(por ejemplo, telefonía de Internet, juegos interactivos) requieren un retardo lento para ser “efectivas”.

Ancho de banda Algunas aplicaciones

(por ejemplo, multimedia) requieren un mínimo de ancho de banda para ser “efectivas”.

Otras aplicaciones (“aplicaciones flexibles”) hacen uso de cualquier ancho de banda que tengan a su disposición.

Page 11: Clase 20 Capa de Aplicacion v.1

Requisitos de los servicios de transporte para aplicaciones comunes

Aplicación

Transferencia de archivos

Correo electrónicoDocumentos Web

Audio/vídeo de tiempo real

Audio/vídeo almacenado

Juegos interactivosMensajería instantánea

Pérdida de datos

No pérdidaNo pérdidaNo pérdidaTolerante

ToleranteTolerante

No pérdida

Ancho de banda

flexibleflexibleflexibleAudio: 5Kbps-1MbpsVídeo:10Kbps-5MbpsIgual que el anteriorPocos Kbps-10KbpsFlexible

Sensible al tiempo

NoNoNoSí, 100 mseg

Sí, pocos segSí, 100 msegSí y no

Page 12: Clase 20 Capa de Aplicacion v.1

Servicios de los protocolos de transporte de Internet

Servicio TCP: Orientado a la conexión:

Sistema requerido entre el cliente y el servidor.

Transporte fiable entre el proceso emisor y el receptor.

Control de flujo: el emisor no debe sobrecargar al receptor.

Control de congestión: regulación del emisor si la red se sobrecarga.

No proporciona: temporización, garantías de un ancho de banda mínimo.

Servicio UDP: Transferencia de datos

no fiable entre el proceso emisor y el receptor.

No proporciona: sistema de conexión, fiabilidad, control de flujo, control de congestión, temporización y garantía de ancho de banda.

PREGUNTA: ¿Por qué tomarse la molestia? ¿Por qué existe un UDP?

Page 13: Clase 20 Capa de Aplicacion v.1

Aplicaciones de Internet: aplicación, protocolos de transporte

Aplicaciones

Correo electrónicoAcceso a terminales remotos

Web Transferencia de archivos

Flujo de multimedia

Telefonía Internet

Protocolo de la capa de aplicación

SMTP [RFC 2821]Telnet [RFC 854]HTTP [RFC 2616]FTP [RFC 959]Propietario(por ejemplo, Real Networks)Propietario(por ejemplo, Dialpad, xLite)

Protocolo de ransporte subyacente

TCPTCPTCPTCP

TCP o UDP

Típicamente UDP

Page 14: Clase 20 Capa de Aplicacion v.1

Capítulo 2: Tabla de contenidos 2.1 Principios de los

protocolos de la capa de aplicación.

2.2 La Web y HTTP. 2.3 Transferencia de

archivos: FTP. 2.4 Correo

electrónico en Internet. SMTP, POP3, IMAP.

2.5 DNS: el servicio de directorio de Internet.

2.6 Programación de sockets con TCP.

2.7 Programación de sockets con UDP.

2.8 Construcción de un servidor web sencillo.

2.9 Distribución de contenidos: Caché web. Redes de distribución de

contenidos. Compartición de archivos

entre iguales.

Page 15: Clase 20 Capa de Aplicacion v.1

La Web y HTTPEn primer lugar, un poco de jerga Una página web consta de objectos. Un objeto puede ser un archivo HTML, una

imagen JPEG,un applet Java, un archivo de audio, etc.

Una página web está formada por un archivo HTML base, que incluye diversos objetos referenciados.

Cada objeto es direccionable por un URL. Ejemplo de URL:www.escuela.edu/departamento/imagen.gif

nombre de host nombre de ruta

Page 16: Clase 20 Capa de Aplicacion v.1

Introducción a HTTPHTTP: protocolo de

transferencia de hipertexto:

Protocolo de la capa de aplicación de la Web.

Modelo cliente/servidor: cliente: navegador que

solicita, recibe y “descarga” objetos Web.

servidor: servidor Web que envía los objetos correspondientes en respuesta a las peticiones.

HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068

PC ejecutandoel Explorer

Servidor ejecutando

el servidor Web Apache

Mac ejecutando el Navigator

Petición HTTP

Petición HTTP

Respuesta HTTP

Respuesta HTTP

Page 17: Clase 20 Capa de Aplicacion v.1

Introducción a HTTP

Usos de TCP: El cliente inicia la

conexión TCP (crea un socket) al servidor, puerto 80.

El servidor accepta la conexión TCP del cliente.

Los mensajes HTTP (mensajes de protocolo de la capa de aplicación) intercambiados entre el navegador ( cliente HTTP) y el servidor Web (servidor HTTP)

La conexión TCP se cierra.

HTTP está “sin estado” El servidor no conserva

ninguna información sobre las peticiones previas de clientes.

Los protocolos que conservan “estado” son complicados

La historia previa (estado) debe conservarse.

Si el servidor/cliente se bloquea, sus visiones del “estado” pueden ser inconsistentes y deben ser recompuestas.

aparte

Page 18: Clase 20 Capa de Aplicacion v.1

Conexiones HTTP

Conexiones HTTP no persistentes

Se envía un objeto como máximo con una conexión TCP.

HTTP/1.0 utiliza conexiones HTTP no persistentes.

Conexiones HTTP persistentes

Se pueden enviar múltiples objetos con una sola conexión TCP entre el cliente y el servidor.

HTTP/1.1 utiliza conexiones persistentes en su modo por defecto.

Page 19: Clase 20 Capa de Aplicacion v.1

Conexiones HTTP no persistentes

Supongamos que el usuario entra en el URL: www.escuela.edu/departamento/home.index

1a. El cliente HTTP inicia la conexión TCP con el servidor HTTP (proceso) de www.escuela.edu en el puerto 80.

2. El cliente HTTP envía un mensaje HTTP de petición (que contiene el URL) a través del socket de la conexión TCP. El mensaje indica que el cliente quiere el objeto departamento/home.index.

1b. El servidor HTTP en el host www.escuela.edu espera la conexión TCP del puerto 80 y “acepta” la conexión, notificando al cliente.

3. El servidor HTTP recibe el mensaje de petición, compone un mensaje de respuesta que contiene el objeto solicitado, y lo envía al socket.

Tiempo

(consta de texto y referencias a 10

imágenes jpeg)

Page 20: Clase 20 Capa de Aplicacion v.1

Conexiones HTTP no persistentes

5. El cliente HTTP recibe el mensaje de respuesta que contiene el archivo html y descarga el html. Analizando el archivo html, se encuentran referenciados 10 objetos jpeg.

6. Se repiten los pasos del 1 al 5 para cada uno de los 10 objetos jpeg.

4. El servidor HTTP cierra la conexión TCP.

Tiempo

Page 21: Clase 20 Capa de Aplicacion v.1

Modelo del tiempo de respuesta

Definición de RRT: tiempo necesario para enviar un paquete pequeño desde el cliente hasta el servidor y después de vuelta al cliente.

Tiempo de respuesta: Un RTT para iniciar la

conexión TCP. Un RTT para la petición HTTP

y los primeros bytes de respuesta HTTP de vuelta.

Tiempo de transmisión del archivo:

total = 2RTT+tiempo de transmisión

Tiempo de transmisión del archivo

Inicio de la conexión TCP RTT

Petición de archivo

RTT

Archivo recibido

Tiempo Tiempo

Page 22: Clase 20 Capa de Aplicacion v.1

Conexiones HTTP persistentesParticularidades de HTTP no

persistente: Requieren dos RTT por objeto. El sistema operativo debe

funcionar y asignar los recursos del host para cada conexión TCP.

Sin embargo, los navegadores suelen abrir conexiones TCP paralelas para traer los objetos referenciados.

HTTP persistente: El servidor deja la conexión

abierta tras enviar la respuesta.

Los mensajes HTTP posteriores entre el mismo cliente/servidor se envían por la misma conexión.

Conexiones persistentes sin entubamiento:

El cliente sólo emite una nueva petición una vez que ha recibido la anterior respuesta.

Un RTT por cada objeto referenciado.

Conexiones persistentes con entubamiento:

Por defecto en HTTP/1.1 El cliente hace su petición

tan pronto como encuentra un objeto referenciado.

Tan sólo un RTT para todos los objetos referenciados.

Page 23: Clase 20 Capa de Aplicacion v.1

Mensaje HTTP de petición

Hay dos tipos de mensajes HTTP: de petición, de respuesta.

Mensaje HTTP de petición: ASCII (formato leído por personas )

GET /dir/pagina.html HTTP/1.1Host: www.escuela.edu User-agent: Mozilla/4.0Connection: close Accept-language:fr

(Retorno de carro extra, avance de línea)

Línea de petición(GET, POST,

comandos HEAD)

Líneas de cabecera

Retorno de carro y avance de línea

que indican el final del mensaje

Page 24: Clase 20 Capa de Aplicacion v.1

Mensaje HTTP de petición: formato general

Línea de petición

Cuerpo de entidad

Líneas de cabecera

método

versiónLínea de petición

valor

valor

Nombre del campo de cabecera

Nombre del campo de cabecera

Page 25: Clase 20 Capa de Aplicacion v.1

Descarga de la entrada de formulario

Método POST: La página Web suele

incluir una entrada de formulario.

La entrada se descarga al servidor en el cuerpo de entidad.

Método URL: Utiliza el método GET. La entrada se descarga

en el campo URL de la línea de petición:

www.somesite.com/animalsearch?monkeys&banana

Page 26: Clase 20 Capa de Aplicacion v.1

Tipos de métodos

HTTP/1.0 GET. POST. HEAD.

Pide al servidor que excluya el objeto solicitado de la respuesta.

HTTP/1.1 GET, POST, HEAD. PUT:

Descarga el archivo en el cuerpo de entidad a la ruta especificada en el campo URL.

DELETE: Borra el archivo

especificado en el campo URL.

Page 27: Clase 20 Capa de Aplicacion v.1

Mensaje HTTP de respuesta

HTTP/1.1 200 OK Connection closeDate: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html datos datos datos datos datos ...

Línea de estatus(protocolo del

código de estatusy la frase

de estatus)

Líneas de cabecera

Datos, por ejemplo, el archivo

HTML solicitado

Page 28: Clase 20 Capa de Aplicacion v.1

Código de estatus HTTP de respuesta

200 OK petición exitosa, el objeto requerido aparece

posteriormente en este mensaje.

301 Moved Permanently el objeto demandado ha sido movido, su nueva

localización se especifica posteriormente en este mensaje (Location:).

400 Bad Request el servidor no comprendió el mensaje de petición.

404 Not Found el documento pedido no existe en este servidor.

505 HTTP Version Not Supported

En la primera línea en el mensaje de respuesta servidor -> cliente.

Algunos ejemplos de códigos:

Page 29: Clase 20 Capa de Aplicacion v.1

Ponga a prueba el HTTP (como cliente) usted mismo

1. Telnet a su servidor web favorito:

Abre la conexión TCP al puerto 80.(por defecto puerto servidor HTTP) en www.eurecom.fr.Cualquier cosa que se escriba es enviada a www.eurecom.fr

telnet www.eurecom.fr 80

2. Escriba una petición HTTP tipo GET:

GET /~ross/index.html HTTP/1.0Escribiendo esto (con doble retorno de carro), está enviando esta petición GET mínima (pero completa) al servidorHTTP.

3. Mire el mensaje de respuesta enviado por el servidor HTTP.

Page 30: Clase 20 Capa de Aplicacion v.1

Interacción usuario-servidor: autorización

Autorización : control al acceso del contenido del servidor.

Credenciales de autorización, normalmente son: nombre, contraseña.

Sin estado: el cliente debe presentar la autorización para cada petición: Autorización: línea de

cabecera en cada petición. Si no hay autorización:

cabecera, el servidor rechaza el acceso y envíaWWW authenticate: línea de cabecera en

respuesta.

cliente servidorTípico mensaje http de petición

401: autorización solic.WWW authenticate:

Típico mensaje http de petición

+ Autorización: <cred>

Típico mensaje de respuesta

Típico mensaje http de petición + Autorización: <cred>

Típico mensaje de respuesta

Tiempo

Page 31: Clase 20 Capa de Aplicacion v.1

Cookies: mantenimiento del “estado”Muchos sitios web importantes

utilizan cookies.Cuatro componentes:

1) Línea de cabecera de cookie en el mensaje HTTP de respuesta.

2) Línea de cabecera de cookie en el mensaje HTTP de petición.

3) Archivo de cookie que se almacena en el host del usuario y que es gestionado por el navegador del usuario.

4) Base de datos de respaldo en el sitio Web.

Ejemplo: Susana siempre

accede a Internet desde el mismo PC.

Visita un sitio de comercio electrónico por primera vez.

Cuando la petición HTTP inicial llega al sitio, éste crea un número de identificación único y también crea en su base de datos una entrada indexada por el número de identificación.

Page 32: Clase 20 Capa de Aplicacion v.1

Cookies: mantenimiento del “estado”

cliente servidorTípico msj http de petición

Típico mensaje de respuesta +

Set-cookie: 1678

Típico mensaje http de petición

cookie: 1678Típico mensaje de

respuesta

Típico mensaje http de petición

cookie: 1678Típico mensaje de

respuesta

Acción específica

cookie

Acciónespecífica

cookie

el servidorcrea un númerode identificación

1678 para el usuario

entrada en la base

de datos de respaldo

acceso

acce

so

Archivo de cookie

amazon: 1678ebay: 8734

Archivo de cookie

ebay: 8734

Archivo de cookie

amazon: 1678ebay: 8734

una semana más tarde:

Page 33: Clase 20 Capa de Aplicacion v.1

Cookies

Qué aportan las cookies:

Autorización. Carro de la compra. Recomendaciones. Sesión de usuario

con estado (correo electrónico web)

Cookies y privacidad: Las cookies permiten que

los sitios sepan mucho sobre usted.

Puede proporcionar su nombre y correo electrónico a los sitios.

Los motores de búsqueda utilizan el redirección y las cookies para saber aún más.

Las empresas de publicidad consiguen información a través de los sitios.

aparte

Page 34: Clase 20 Capa de Aplicacion v.1

GET condicional: caché por parte del cliente

Objetivo: no enviar objetos si el cliente tiene una versión caché actualizada.

Cliente: especifica la fecha de la copia en caché en la petición HTTP:If-modified-since:

<date> Servidor: su respuesta no

contiene ningún objeto si la copia en caché está actualizada: HTTP/1.0 304 Not

Modified

cliente servidor

mensaje HTTP de petición

If-modified-since: <date>

respuesta HTTP HTTP/1.0

304 Not Modified

objeto no

modificado

mensaje HTTP de petición

If-modified-since: <date>

respuesta HTTPHTTP/1.0 200 OK

<data>

objeto modificado

Page 35: Clase 20 Capa de Aplicacion v.1

Capítulo 2:Tabla de contenidos 2.1 Principios de los

protocolos de la capa de aplicación.

2.2 La Web y HTTP. 2.3 Transferencia de

archivos: FTP. 2.4 Correo

electrónico en Internet. SMTP, POP3, IMAP.

2.5 DNS: el servicio de directorio de Internet.

2.6 Programación de sockets con TCP.

2.7 Programación de sockets con UDP.

2.8 Construcción de un servidor de web sencillo.

2.9 Distribución de contenidos: Caché web. Redes de distribución de

contenidos. Compartición de archivos

entre iguales.

Page 36: Clase 20 Capa de Aplicacion v.1

Servidor FTP

Interfaz de

usuario FTP

Cliente FTP

FTP: El protocolo de transferencia de archivos

Transferencia de archivo a/desde un host remoto. Modelo cliente/servidor:

Cliente: es el que inicia la tranferencia (bien a o desde el host remoto).

Servidor: host remoto. FTP: RFC 959. Servidor FTP: puerto 21.

Transferencia de archivo

Sistema local de archivos

Sistema remoto de archivos

usuario o host

Page 37: Clase 20 Capa de Aplicacion v.1

FTP: control separado, conexiones de datos

El cliente FTP contacta con el servidor FTP en el puerto 21, especificando el TCP como protocolo de transporte.

El cliente consigue la autorización sobre la conexión de control.

El cliente navega por el directorio remoto enviando comandos sobre la conexión de control.

Cuando el servidor recibe un comando para la transferencia de archivos, el servidor abre la conexión TCP de datos con el cliente.

Después de transferir un archivo, el servidor cierra la conexión.

Cliente FTP

ServidorFTP

Conexión TCP de control sobre el puerto

21

Conexión TCP de control sobre el puerto

20

El servidor abre una segunda conexión FTP de datos para transferir otro archivo.

Conexión de control: “fuera de banda”

El servidor FTP mantiene el “estado”: directorio actual, autentificación anterior.

Page 38: Clase 20 Capa de Aplicacion v.1

Comandos y respuestas FTP Ejemplo de comandos: Enviado como texto ASCII

por el canal de control. USER nombre del

usuario. PASS palabra clave. LIST devuelve la lista del

archivo al directorio en curso.

RETR nombre de archivo recupera el archivo.

STOR nombre de archivo almacena el archivo en el host remoto.

Ejemplo de códigos de respuesta:

Códigos de estatus y frase (como en HTTP).

331 Username OK, password required

125 data connection already open; transfer starting

425 Can’t open data connection

452 Error writing file

Page 39: Clase 20 Capa de Aplicacion v.1

Capítulo 2: Tabla de contenidos 2.1 Principios de los

protocolos de la capa de aplicación.

2.2 La Web y HTTP. 2.3 Transferencia de

archivos: FTP. 2.4 Correo

electrónico en Internet. SMTP, POP3, IMAP.

2.5 DNS: el servicio de directorio de Internet.

2.6 Programación de sockets con TCP.

2.7 Programación de sockets con UDP.

2.8 Construcción de un servidor web sencillo.

2.9 Distribución de contenidos: Caché Web. Redes de distribución de

contenidos. Compartición de archivos

entre iguales.

Page 40: Clase 20 Capa de Aplicacion v.1

Correo electrónicoLos tres componentes

principales: Agentes de usuario. Servidores de correo. Protocolo simple de

transferencia de correo: SMTP.

Agente usuario También conocido como

“lector de correo”. Composición, edición y lectura

de mensajes de correo. Por ejemplo, Eudora, Outlook,

elm, Netscape Messenger. Salida y entrada del los

mensajes almacenados en el servidor.

Buzón de correo de usuario

Cola de mensajes de salida

servidor de correo

agente de usuario

SMTP

SMTP

SMTP

agente de usuario

agente de usuario

agente de usuario

agente de usuario

agente de usuario

servidor de correo

servidor de correo

Page 41: Clase 20 Capa de Aplicacion v.1

Correo electrónico: servidores de correo

Servidores de correo: Buzón de correo: contiene

los mensajes de entrada del usuario.

Cola de mensajes: mensajes de correo de salida (para ser enviados).

Protocolo SMTP: entre servidores para mandar mensajes de correo electrónico. Cliente: envía correo al

servidor. “Servidor”: recibe

correo de otro servidor.

SMTP

SMTP

SMTP

agente de usuario

agente de usuario

servidor de correo

servidor de correo

servidor de correo

agente de usuario

agente de usuario

agente de usuario

agente de usuario

Page 42: Clase 20 Capa de Aplicacion v.1

Correo electrónico: SMTP [RFC 2821]

Utiliza TCP para transferir con seguridad el mensaje de correo electrónico del cliente al servidor, puerto 25.

Transferencia directa: del servidor que envía al servidor que recibe.

Las tres fases de la transferencia son: “Acuerdo” (saludo). Transferencia de mensajes. Cierre.

Interacción comando/respuesta: Comandos: texto ASCII. Respuesta: código de estatus y frase.

Los mensajes deben tener siete bits en ASCII.

Page 43: Clase 20 Capa de Aplicacion v.1

servidor de correo

servidor de correo

Ejemplo: Alicia le envía un mensaje a Roberto

1) Alicia utiliza su agente usuario para componer el mensaje “a” [email protected]

2) El agente de usuario de Alicia envía un mensaje a su servidor de correo; y el mensaje es ubicado en la cola de mensajes.

3) El lado cliente del SMTP abre una conexión TCP con el servidor de correo de Roberto.

4) El cliente SMTP envía el mensaje de Alicia sobre la conexión TCP.

5) El servidor de correo de Roberto deposita el mensaje en el buzón de correo de Roberto.

6) Roberto recurre a su agente de usuario para leer el mensaje.

1

2 3 4 56agente

de usuario

agente de usuario

Page 44: Clase 20 Capa de Aplicacion v.1

Ejemplo de interacción SMTP S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]> S: 250 [email protected] ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: ¿Te gusta el ketchup? C: ¿Y los encurtidos? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection

Page 45: Clase 20 Capa de Aplicacion v.1

Ponga a prueba la interacción SMTP por usted mismo:

Telnet nombreServidor 25. Mire la respuesta 220 del servidor. Introduzca los comandos HELO, MAIL FROM,

RCPT TO, DATA, QUIT. Lo arriba mencionado le permite enviar el correo

electrónico sin utilizar el cliente de correo electrónico (lector).

Page 46: Clase 20 Capa de Aplicacion v.1

SMTP: últimos comentarios

SMTP utiliza conexiones persistentes.

SMTP requiere que el mensaje (cabecera y cuerpo) esté contenido en siete bits de ASCII.

El servidor SMTP utiliza CRLF.CRLF para determinar el final del mensaje.

Comparación con HTTP: HTTP: demanda. SMTP: oferta.

Ambos utilizan interacción ASCII comando/respuesta y códigos de estatus.

HTTP: encapsula cada objeto en su propio mensaje de respuesta.

SMTP: envía múltiples objetos en mensajes multipart.

Page 47: Clase 20 Capa de Aplicacion v.1

Formato de los mensajes de correoSMTP: protocolo para

intercambiar mensajes de correo electrónico.

RFC 822: estándar para el formato de texto del mensaje:

Líneas de cabecera, por ejemplo: Para: De: Asunto:diferentes de los comandos

SMTP Cuerpo:

el “mensaje”, sólo caracteres ASCII.

cabecera

cuerpo

Línea en blanco

Page 48: Clase 20 Capa de Aplicacion v.1

Formato del mensaje: extensiones multimedia

MIME: extensiones de correo multimedia, RFC 2045, 2056

Las líneas adicionales en la cabecera del mensaje declaran el tipo de contenido MIME.

From: [email protected] To: [email protected] Subject: Imagen de un delicioso crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg

datos codificados base64........ ....................…........... .... datos codificados base64

Datos multimediatipo, subtipo,

declaración de parámetros

Método utilizadode datos codificados

Versión MIME

Datos codificados

Page 49: Clase 20 Capa de Aplicacion v.1

Tipos de MIME Content-Type: tipo/subtipo; parametros

Texto Ejemplos de subtipos:

plain, html

Imagen Ejemplos de subtipos:

jpeg, gif

Audio Ejemplos de subtipos:

basic (codificados en ocho bits mu-law), 32kadpcm (32 kbps codificado).

Vídeo Ejemplos de subtipos:

mpeg, quicktime

Aplicación Otros datos que deben

ser procesados por el lector antes de ser “visionados”.

Ejemplos de subtipos: msword, octet-stream

Page 50: Clase 20 Capa de Aplicacion v.1

Tipo multipart

From: [email protected] To: [email protected] Subject: Imagen de un delicioso crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=StartOfNextPart --StartOfNextPartQuerido Roberto, Te envío una imagen de un crepe.--StartOfNextPartContent-Transfer-Encoding: base64Content-Type: image/jpegdatos codificados base64 ..... ......................... ...…datos codificados base64 --StartOfNextPartDime si quieres tener la receta

Page 51: Clase 20 Capa de Aplicacion v.1

Servidor de correodel emisor

Protocolos de acceso al correo

SMTP: envío/almacenamiento a/en el servidor del destinatario. Protocolo de acceso al correo: recuperación desde el servidor.

POP: Protocolo de Oficina Postal [RFC 1939]• Autorización (agente <-->servidor) y descarga.

IMAP: Protocolo de Acceso al Correo Internet [RFC 1730]• Más características (más complejo).• Manipulación de los mensajes almacenados en el servidor.

HTTP: Hotmail , Yahoo! Mail, etc.

SMTP SMTP Protocolo de acceso

Servidor de correodel destinatario

Agente de usuario

Agente de usuario

Page 52: Clase 20 Capa de Aplicacion v.1

Protocolo POP3Fase de autorización Comandos del cliente:

user: declaración del nombre de usuario.

pass: contraseña. Respuestas del servidor:

+OK -ERR

Fase de transacción, cliente: list: enumera los números

de mensaje. retr: recupera un mensaje

determinado por su número. dele: borra. quit

C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> S: . C: dele 1 C: retr 2 S: <message 1 contents> S: . C: dele 2 C: quit S: +OK POP3 server signing off

S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged on

Page 53: Clase 20 Capa de Aplicacion v.1

POP3 e IMAPMás información sobre

POP3: El ejemplo anterior

utiliza el modo “descargar y borrar”.

Roberto no puede volver a leer el correo electrónico si cambia de cliente.

“Descargar y guardar”: copias de mensajes en diferentes clientes.

POP3 está sin estado entre sesiones.

IMAP: Guarda todos los

mensajes en un mismo lugar: el servidor.

Permite al usuario organizar sus mensajes en carpetas.

IMAP mantiene el estado de usuario entre sesiones: Los nombres de las

carpetas y la correspondencia entre los números de identificación de los mensajes y el nombre de la carpeta.

Page 54: Clase 20 Capa de Aplicacion v.1

Capítulo 2: Tabla de contenidos 2.1 Principios de los

protocolos de la capa de aplicación.

2.2 La Web y HTTP. 2.3 Transferencia de

archivos: FTP. 2.4 Correo

electrónico en Internet. SMTP, POP3, IMAP.

2.5 DNS: el servicio de directorio de Internet.

2.6 Programación de sockets con TCP.

2.7 Programación de sockets con UDP.

2.8 Construcción de un servidor web Sencillo.

2.9 Distribución de contenidos: Caché web. Redes de distribución de

contenidos. Compartición de archivos

entre iguales.

Page 55: Clase 20 Capa de Aplicacion v.1

DNS: sistema de nombres de dominio

Personas: muchos identificadores: SSN, nombre, pasaporte

#

Hosts de Internet, routers: Dirección IP (32 bits) -

utilizada para direccionar datagramas.

“Nombre”, por ejemplo, gaia.cs.umass.edu - utilizado por personas.

Pregunta: ¿Existe una correspondencia entre direcciones IP y nombres?

Sistema de nombres de dominio:

Base de datos distribuida: implementada en jerarquía de muchos servidores de nombre.

Protocolo de capa de aplicación: host, routers, servidores de nombre comunicándose para resolver nombres (direcciones/traducción de nombres). Nota: función esencial de

Internet, implementada como protocolo de capa de aplicación.

Complejidad en el “límite” de la red.

Page 56: Clase 20 Capa de Aplicacion v.1

Servidores de nombre DNS Ningún servidor contiene

todas las correspondencias para direccionar los nombres IP.

Servidores de nombre locales: Cada ISP, cada empresa tiene un

servidor de nombre local (por defecto).

La pregunta del host DNS primero va al servidor de nombre local.

Servidor autorizado de nombre: Para un host: almacena la

dirección IP de ese host y el nombre.

Puede representar la traducción del nombre/dirección para el nombre de ese host.

¿Por qué no centralizar el DNS ?

Único punto de fallo. Volumen de tráfico. Base de datos

distanciada centralizada.

Mantenimiento.

No es escalable.

Page 57: Clase 20 Capa de Aplicacion v.1

DNS: servidores raíz de nombres. Contactados por los servidores de nombre locales que no pueden

resolver un nombre. Servidores de raíz de nombres:

Contacta el servidor autorizado de nombre si la correspondencia del nombre no se conoce.

Obtiene correspondencia. Devuelve la correspondencia al servidor de nombre local.

b USC-ISI Marina del Rey, CAl ICANN Marina del Rey, CA

e NASA Mt View, CAf Internet Software C. Palo Alto, CA

i NORDUnet Stockholm

k RIPE London

m WIDE Tokyo

a NSI Herndon, VAc PSInet Herndon, VAd U Maryland College Park, MDg DISA Vienna, VAh ARL Aberdeen, MDj NSI (TBD) Herndon, VA

Los 13 servidores de raíz de nombres del mundo

Page 58: Clase 20 Capa de Aplicacion v.1

Ejemplo sencillo de DNS

host surf.eurecom.fr quiere la dirección IP de gaia.cs.umass.edu

1. Contacta con su servidor DNS local, dns.eurecom.fr.

2. dns.eurecom.fr contacta con el servidor raíz de nombres, si es necesario.

3. El servidor raíz de nombres contacta con el servidor autorizado de nombres, dns.umass.edu, si es necesario.

Host peticionariosurf.eurecom.fr

gaia.cs.umass.edu

servidor raíz de nombres

Servidor autorizado de nombres

dns.umass.edu

servidor local de nombres

dns.eurecom.fr

1

23

4

5

6

Page 59: Clase 20 Capa de Aplicacion v.1

Ejemplo DNS

Servidor raíz de nombres:

Puede que no conozca el servidor autorizado de nombres.

Puede que conozca el servidor de nombres intermedio: con el que contactará para encontrar al servidor autorizado de nombres.

gaia.cs.umass.edu

1

23

4 5

6

servidor intermediode nombres

dns.umass.edu

7

8

servidor raíz de nombres

servidor local de nombres

dns.eurecom.fr

Host peticionariosurf.eurecom.fr

Servidor autorizado de nombres

dns.umass.edu

Page 60: Clase 20 Capa de Aplicacion v.1

DNS: consultas iterativas

Consulta recursiva: Pone el peso de la

resolución del nombre en el servidor de nombre contactado.

¿Demasiada responsabilidad?

Consulta iterativa: El servidor contactado

responde con el nombre al servidor que contacta.

“No conozco ese nombre, pero puedo consultar ese servidor.”

gaia.cs.umass.edu

1

23

4

5 6

7

8

Consulta iterativa

servidor raíz de nombres

servidor local de nombres

dns.eurecom.fr

servidor intermediode nombres

dns.umass.edu

Host peticionariosurf.eurecom.fr

Servidor autorizado de nombres

dns.umass.edu

Page 61: Clase 20 Capa de Aplicacion v.1

DNS: caché y actualización de registros

Una vez que un servidor de nombres (cualquiera) conoce la correspondencia, hace una copia caché. La copia caché se queda en punto muerto

(desaparece) tras un cierto tiempo. Mecanismos de actualización/notificación

bajo diseño de IETF. RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.html

Page 62: Clase 20 Capa de Aplicacion v.1

Registros DNSDNS: Base de datos distribuida que almacena registros de recursos (RR).

Tipo=NS nombre es un dominio (por

ejemplo foo.com). valor es la dirección IP de

un servidor de nombre autorizado para ese dominio.

Formato RR : (nombre, valor, tipo,ttl)

Tipo=A nombre es un nombre

de host. valor es la dirección

IP.

Tipo=CNAME nombre es el alias de un

nombre “canónico” (verdadero).

www.ibm.com en realidad es servereast.backup2.ibm.com valor es el nombre

canónico. Tipo=MX valor es el nombre de un

servidor de correo asociado a nombre.

Page 63: Clase 20 Capa de Aplicacion v.1

Protocolo y mensajes DNSProtocolo DNS: mensajes de consulta y respuesta, ambos con el mismo

formato de mensaje.

Cabecera del mensaje: Identificación: 16 bits

para la consulta, que se repiten en la respuesta a la consulta.

Flags (señales): consulta o respuesta. recursión deseada. recursión disponible. respuesta es

autorizada.

Identificación Señales

número de cuestiones

Número de RR de respuesta

Número de RR de autorización

Número de RR

adicionales Cuestiones

(número variable de cuestiones)

Respuestas

(número variable de registros de recurso )

Autorización

(número variable de registros de recurso)

Información adicional

(número variable de registros de recurso)

Page 64: Clase 20 Capa de Aplicacion v.1

Protocolo y mensajes DNS

Nombre, campos de tipo para una consulta.

RR en respuestaa una consulta.

Registros paraservidores autorizados.

Información adicional“de ayuda” que puede

ser utilizada.

Identificación Señales

Número de cuestiones Número de RR de respuesta

Número de RR autorización

Número de RR adicionales

Cuestiones

(número variable de cuestiones)

Respuestas

(número variable de registros de recurso)

Autorización

(número variable de registros de recurso)

Información adicional

(número variable de registros de recurso )

Page 65: Clase 20 Capa de Aplicacion v.1

Diagrama una Solución de DNS

April 18, 2023

ENTERPRISE 220R

500 GB HD  4 GB RAM

SUNFire V240 500 GB HD  4 GB RAM

ENTERPRISE 220R 500 GB HD  4 GB RAM

ENTERPRISE 220R 500 GB HD  4 GB RAM

SUNFire V440 500 GB HD  4  GB RAM

2 Servidores HP Proliant1T HD  8 GB RAM

2 Servidores SUNFire V240 500 GB HD  4 GB RAM2 Balanceadores Brocade ADX

1000

Page 66: Clase 20 Capa de Aplicacion v.1

Capítulo 2: Tabla de Contenidos 2.1 Principios de los

protocolos de la capa de aplicación.

2.2 La Web y HTTP. 2.3 Transferencia de

archivos: FTP. 2.4 Correo

electrónico en Internet. SMTP, POP3, IMAP.

2.5 DNS: el servicio de directorio de Internet.

2.6 Programación de sockets con TCP.

2.7 Programación de sockets con UDP.

2.8 Construcción de un servidor web sencillo.

2.9 Distribución de contenidos: Caché web. Redes de distribución de

contenidos. Compartición de archivos

entre iguales.

Page 67: Clase 20 Capa de Aplicacion v.1

Programación de sockets

Socket API Introducido por BSD4.1

UNIX, 1981 Creado, utilizado y puesto en

circulación explícitamente por aplicaciones.

Paradigma cliente/servidor. Dos tipos de transporte de

servicio vía socket API: Datagrama poco fiable. Orientación del flujo de

bytes fiable.

Una interfaz controlada por un sistema

operativo, creada por una aplicación y con un

host local, (una “puerta”) por la

cual el proceso de aplicación puede tanto

enviar como recibir mensajes de otro

proceso de aplicación.

socket

Objetivo: aprender cómo se construye una aplicación cliente/servidor que se comunique utilizando sockets.

Page 68: Clase 20 Capa de Aplicacion v.1

Programación de sockets usando TCPSocket: una puerta entre el proceso de aplicación

y el protocolo de transporte final (UCP o TCP).Servicio TCP: transferencia fiable de bytes de un

proceso a otro.

Proceso

TCP conbúferes yvariables

Socket

Controlado por el desarrollador de

la aplicación

Controlado por el sistema operativo

Host o servidor

Proceso

TCP conbúferes yvariables

Socket

Controlado por el desarrollador de la aplicación

Controlado por el sistema operativo

Host o servidor

Internet

Page 69: Clase 20 Capa de Aplicacion v.1

Programación de sockets con TCP

El cliente debe contactar con el servidor:

El proceso del servidor en principio debe estar funcionando.

El servidor debe haber creado un socket (puerta) para dar la bienvenida al contacto del cliente.

El cliente contacta con el servidor: Creando un socket TCP local del

cliente. Especificando la dirección IP y el

número de puerto del proceso del servidor.

Cuando el cliente crea un socket: el cliente establece una conexión TCP con el servidor.

Cuando el cliente contacta con él, el servidor TCP crea un nuevo socket para que el proceso servidor se comunique con el cliente. Permite al servidor hablar

con múltiples clientes. Fuente de los números de

puerto utilizados para distinguir a los clientes (más en el Capítulo 3).

TCP propociona una transferencia de bytes en orden y fiable

(“tubería”) entre cliente y servidor.

Punto de vista de la aplicación

Page 70: Clase 20 Capa de Aplicacion v.1

Jerga relacionada con el flujo

Un flujo es una secuencia de caracteres que fluye hacia o desde un proceso.

Un flujo de entrada está relacionado con una fuente de entrada del proceso, por ejemplo, el teclado o un socket.

Un flujo de salida está relacionado con una fuente de salida, por ejemplo, el monitor o un socket.

Page 71: Clase 20 Capa de Aplicacion v.1

Programación de sockets con TCPEjemplo de aplicación

cliente-servidor:1) El cliente lee una línea de

su entrada estándar (flujo inFromUser) , y se la envía al servidor por su socket (flujo outToServer).

2) El servidor lee una línea en su socket.

3) El servidor convierte la línea a mayúsculas y se la envía de vuelta al cliente.

4) El cliente lee e imprime la línea modificada de su socket (flujo inFromServer).

salid

aAS

ervi

dor

Hacia la red Desde la red

entr

adaD

esde

Ser

vido

r

entr

adaD

esde

Usu

ario

Teclado Monitor

Proceso

Flujo deentrada

Flujo deentrada

Flujo desalida

SocketTCP

Proceso cliente

Socketcliente TCP

Page 72: Clase 20 Capa de Aplicacion v.1

Interacción socket cliente/servidor: TCP

Esperar a la petición de conexión de entradasocketConexion=socketAcogida.accept()

crear socket,port=x, para petición de entrada:socketAcogida =

ServerSocket()

Crear socket conectado a hostid, port=x

socketCliente = Socket()

Cerrar socketConexion

Leer respuesta desocketCliente

CerrarsocketCliente

Servidor (ejecutándose en hostid) Cliente

Enviar petición utilizandosocketClienteLeer petición de

socketConexion

Escribir respuesta asocketConexion

Establecimiento de conexión TCP

Page 73: Clase 20 Capa de Aplicacion v.1

Ejemplo: Cliente Java (TCP)

import java.io.*; import java.net.*; class TCPCliente {

public static void main(String argv[]) throws Exception { String frase; String fraseModificada;

BufferedReader entradaDesdeUsuario = new BufferedReader(new InputStreamReader(System.in));

Socket socketCliente = new Socket(”nombrehost", 6789);

DataOutputStream salidaAServidor = new DataOutputStream(socketCliente.getOutputStream());

Crea flujo de entrada

Crea socket cliente, conecta con

el servidor

Crea flujo de salida relacionado

con el socket

Page 74: Clase 20 Capa de Aplicacion v.1

Ejemplo: Cliente Java (TCP)

BufferedReader entradaDesdeServidor = new BufferedReader(new InputStreamReader(socketCliente.getInputStream()));

frase = entradaDesdeUsuario.readLine();

salidaAServidor.writeBytes(frase + '\n');

fraseModificada= entradaDesdeServidor.readLine();

System.out.println(“DEL SERVIDOR: " + fraseModificada);

socketCliente.close(); } }

Crea un flujo de salidarelacionado con el

socket

Línea de envío al servidor

Línea de lectura del servidor

Page 75: Clase 20 Capa de Aplicacion v.1

Ejemplo: Servidor Java (TCP)import java.io.*; import java.net.*;

class TCPServidor {

public static void main(String argv[]) throws Exception { String fraseCliente; String fraseMayusculas;

ServerSocket socketAcogida = new ServerSocket(6789); while(true) { Socket connectionSocket = socketAcogida.accept();

BufferedReader entradaDesdeCliente = new BufferedReader(new InputStreamReader(socketConexion.getInputStream()));

Creasocket de acogida

en puerto 6789

Espera en el socket de acogida al contacto

del cliente

Crea flujo de entrada relacionado

con el socket

Page 76: Clase 20 Capa de Aplicacion v.1

Ejemplo: Servidor Java (TCP)

DataOutputStream salidaACliente= new DataOutputStream(socketConexion.getOutputStream());

fraseCliente = entradaDesdeCliente.readLine();

fraseMayusculas = fraseCliente.toUpperCase() + '\n';

salidaACliente.writeBytes(fraseMayusculas); } } }

Lee en línea desde el socket

Crea flujo de salida

relacionado con el socket

Escribe línea al socket

Acaba el bucle while y vuelve al principio del bucle a esperar otra conexión del cliente.

Page 77: Clase 20 Capa de Aplicacion v.1

Capítulo 2: Tabla de contenidos 2.1 Principios de los

protocolos de la capa de aplicación.

2.2 La Web y HTTP. 2.3 Transferencia de

archivos: FTP. 2.4 Correo

electrónico en Internet. SMTP, POP3, IMAP.

2.5 DNS: el servicio de directorio de Internet.

2.6 Programación de sockets con TCP.

2.7 Programación de sockets con UDP.

2.8 Construcción de un servidor web sencillo.

2.9 Distribución de contenidos: Caché web. Redes de distribución de

contenidos. Compartición de archivos

entre iguales.

Page 78: Clase 20 Capa de Aplicacion v.1

Programación de sockets con UDPUDP: no hay “conexión” entre

el cliente y el servidor. No hay sincronización. El remitente añade

explícitamente la dirección IP y el puerto de destino a cada paquete.

El servidor debe extraer la dirección IP y el puerto del remitente del paquete recibido.

UDP: Los datos transmitidos puede que se reciban desordenados o que se pierdan.

Punto de vista de la aplicación

UDP proporciona transferencia poco fiable de grupos de bytes

(“datagramas”) entre cliente y servidor

Page 79: Clase 20 Capa de Aplicacion v.1

Interacción socket cliente/servidor: UDP

CerrarsocketCliente

Servidor (ejecutándose en hostid)

Leer respuesta desocketCliente

Crear socket,socketCliente = DatagramSocket()

Cliente

Crear dirección (hostid, port=x,enviar petición de datagrama utilizando socketCliente

Crear socket,port=x, para petición de entrada:

socketServidor= DatagramSocket()

Leer petición desocketServidor

Escribir respuesta asocketServidorespecificando dirección del hostcliente, número de puerto.

Page 80: Clase 20 Capa de Aplicacion v.1

Ejemplo: Cliente Java (UDP)

Paq

uete

enví

o

Hacia la red Desde la red

paqu

eteR

ecib

ido

entr

adaD

esde

Usu

ario

Teclado Monitor

Proceso

clientSocket

PaqueteUDP

Flujo de

entrada

PaqueteUDP

socketUDP

Salida: envía paquete (TCP enviado por “flujo de bytes”)

Entrada: recibe paquete (TCP recibido por “flujo de bytes”)

Proceso Cliente

Socketcliente UDP

Page 81: Clase 20 Capa de Aplicacion v.1

Ejemplo: Cliente Java (UDP)

import java.io.*; import java.net.*; class UDPCliente { public static void main(String args[]) throws Exception { BufferedReader entradaDesdeUsuario = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket socketCliente = new DatagramSocket(); InetAddress direccionIP = InetAddress.getByName(”nombrehost"); byte[] datosEnvio= new byte[1024]; byte[] datosRecepcion = new byte[1024]; String frase = entradaDesdeUsuario.readLine();

datosEnvio = frase.getBytes();

Creaflujo de entrada

Crea socket cliente

Traduce el nombre del host a una dirección

IP utilizando DNS

Page 82: Clase 20 Capa de Aplicacion v.1

Ejemplo: Cliente Java (UDP)

DatagramPacket paqueteEnvio = new DatagramPacket(datosEnvio, datosEnvio.length, DirecciónIP, 9876); socketCliente.send(paqueteEnvio); DatagramPacket paqueteRecepcion = new DatagramPacket(datosRecepcion, datosRecepcion.length); socketCliente.receive(paqueteRecepcion); String fraseModificada = new String(paqueteRecepcion.getData()); System.out.println(”DEL SERVIDOR:" + fraseModificada); socketCliente.close(); }

}

Crea datagrama con los datos para enviar,longitud, dirección IP,

puerto

Envía datagrama al servidor

Lee datagrama del servidor

Page 83: Clase 20 Capa de Aplicacion v.1

Ejemplo: Servidor Java (UDP)

import java.io.*; import java.net.*; class UDPServidor { public static void main(String args[]) throws Exception { DatagramSocket socketServidor = new DatagramSocket(9876); byte[] datosRecepcion = new byte[1024]; byte[] datosEnvio = new byte[1024]; while(true) { DatagramPacket paqueteRecepcion = new DatagramPacket(datosRecepcion, datosRecepcion.length);

socketServidor.receive(paqueteRecepcion);

Creasocket datagrama

en puerto 9876

Crea espacio para datagrama recibido

Recibe datagrama

Page 84: Clase 20 Capa de Aplicacion v.1

Ejemplo: Servidor Java (UDP)

String frase = new String(paqueteRecepcion.getData()); InetAddress DireccionIP = paqueteRecepcion.getAddress(); int puerto = paqueteRecepcion.getPort(); String fraseMayusculas = frase.toUpperCase();

datosEnvio = fraseMayusculas.getBytes(); DatagramPacket paqueteEnvio = new DatagramPacket(datosEnvio, datosEnvio.length, DireccionIP, puerto); socketServidor.send(paqueteEnvio); } }

}

Obtiene dirección IP y

puertodel remitente

Escribe datagramaen el socket

Acaba el bucle while y vuelve al principio del bucle a esperar otro datagrama

Crea datagramapara envíar al cliente

Page 85: Clase 20 Capa de Aplicacion v.1

Construcción de un servidor Web sencillo

Maneja sólo una petición HTTP.

Acepta la petición. Analiza la cabecera. Recupera el archivo

pedido del sistema de archivos del servidor.

Crea un mensaje HTTP de respuesta: líneas de cabecera +

archivo Envía la respuesta al

cliente.

Tras crear el servidor, puede solicitar el archivo utilizando un browser (por ejemplo, el explorador Internet Explorer).

Lea el libro de texto para más información.

Page 86: Clase 20 Capa de Aplicacion v.1

Programación de sockets: referencias

Tutorial de C (audio/diapositivas): “Unix Network Programming” (J. Kurose),http://manic.cs.umass.edu/~amldemo/courseware/

Tutorial de Java: “All About Sockets” (Sun tutorial),

http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html

“Socket Programming in Java: a tutorial”, http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html

Page 87: Clase 20 Capa de Aplicacion v.1

Capítulo 2: Tabla de contenidos 2.1 Principios de los

protocolos de la capa de aplicación.

2.2 La Web y HTTP. 2.3 Transferencia de

archivos: FTP. 2.4 Correo

electrónico en Internet. SMTP, POP3, IMAP.

2.5 DNS: el servicio de directorio de Internet.

2.6 Programación de sockets con TCP.

2.7 Programación de sockets con UDP.

2.8 Construcción de un servidor web sencillo.

2.9 Distribución de contenidos: Caché web. Redes de distribución de

contenidos. Compartición de archivos

entre iguales.

Page 88: Clase 20 Capa de Aplicacion v.1

Caché Web (servidor proxy)

El usuario pone el navegador: accesos web vía caché.

El navegador envía todas las peticiones HTTP al caché. Objecto en caché: el

caché devuelve el objecto.

Otro caché solicita el objeto de su servidor de origen y luego devuelve el objeto al cliente.

Objetivo: satisfacer la solicitud del cliente sin involucrar al servidor de origen.

Cliente

Servidor proxy

Cliente

Petición HTTP

Petición HTTP

Respuesta HTTP

Respuesta HTTP

Petición HTTP

Respuesta HTTP

Servidor origen

Servidor origen

Page 89: Clase 20 Capa de Aplicacion v.1

Más sobre el caché web El caché actúa tanto de

cliente como de servidor. El caché puede hacer

una revisión actualizada utilizando If-modified-since en la cabecera HTTP. Asunto: ¿Debería un

caché correr el riesgo de enviar objetos en caché sin revisar?

Se utiliza un método heurístico.

Normalmente, el caché se instala por ISP (universidad, empresa, ISP residencial).

¿Por qué usar caché web? Porque reduce el tiempo de

respuesta por petición del cliente.

Porque reduce el tráfico en el enlance de acceso de una institución.

Porque si Internet está poblada de cachés, permite que los proveedores “pobres” puedan efectivamente enviar contenido.

Page 90: Clase 20 Capa de Aplicacion v.1

Ejemplo de cachéSupuestos Tamaño medio de los objetos =

100.000 bits. Tasa media por petición por parte

del browser de la institución a los servidores de origen = 15/seg.

Retraso del router de la institución a cualquier servidor origen y vuelta al router = 2 seg.

Consecuencias Uso del LAN = 15% Uso del enlace de acceso = 100% Retraso total = retraso de

Internet + retraso del acceso + retraso del LAN =

= 2 seg + minutos + milisegundos.

Servidores origen

Internet pública

Red institucional LAN de 10 Mbps

Enlace de acceso de 1.5 Mbps

Caché institucional

Page 91: Clase 20 Capa de Aplicacion v.1

Ejemplo de caché

Solución posible Aumento del ancho de

banda del enlace de acceso a, digamos, 10 Mbps.

Consecuencias Uso del LAN = 15% Uso del enlace de acceso =

15% Retraso total = retraso de

Internet + retraso del acceso + retraso del LAN =

= 2 seg + msegs + msegs Suele suponer una mejora

costosa.

Servidoresorigen

Internet pública

Red institucional LAN de 10 Mbps

Enlace de acceso de 1.5 Mbps

Caché institucional

Page 92: Clase 20 Capa de Aplicacion v.1

Ejemplo de cachéInstalación del caché Supongamos que la tasa de

acierto sea 0,4.Consecuencias 40% de las peticiones serán

satisfechas casi inmediatamente. 60% de las peticiones serán

satisfechas por el servidor de origen.

EL uso del enlace de acceso se reduce al 60%, lo cual tiene como resultado retrasos insignificantes (digamos 10 mseg).

Retraso total = retraso de Internet + retraso del acceso + retraso del LAN =

= 0,6*2 seg + 0,6*0,01 segs + milisegundos < 1,3 segs

Servidoresorigen

Internet pública

Red institucional LAN de 10 Mbps

Enlace de acceso de 1.5 Mbps

Caché institucional

Page 93: Clase 20 Capa de Aplicacion v.1

Redes de distribución de contenidos (CDNs)

Los proveedores de contenido son los clientes CDN.

Réplica del contenido Una empresa CDN instala

cientos de servidores CDN a través de Internet. En ISP de capas bajas,

cerca de los usuarios. CDN contesta a los

contenidos de los clientes en servidores CDN. Cuando un proveedor actualiza el contenido, CDN actualiza los servidores.

Servidor origen en Norteamérica

Nodo CDN de distribución

Servidor CDNen Sudamérica Servidor CDN

en Europa

Servidor CDN en Asia

Page 94: Clase 20 Capa de Aplicacion v.1

Ejemplo CDN

Servidor origen www.foo.com Distribuye HTML. Reemplaza: http://www.foo.com/sports.ruth.gif

por

http://www.cdn.com/www.foo.com/sports/ruth.gif

Petición HTTP para

www.foo.com/sports/sports.html

Consulta DNS para www.cdn.com

Petición HTTP para

www.cdn.com/www.foo.com/sports/ruth.gif

1

2

3

Servidor origen

Servidor DNS autorizado de la CDN

Servidor CDN cercano Empresa CDN

cdn.com Distribuye archivos gif. Utiliza su servidor DNS

autorizado para encaminar las peticiones redireccionadas.

Page 95: Clase 20 Capa de Aplicacion v.1

Más sobre las CDNPeticiones dirigidas La CDN crea un “mapa”,

indicando las distancias entre las hojas ISP y los nodos CDN.

Cuando una consulta llega a un servidor DNS autorizado: El servidor determina el

ISP desde el que se origina la consulta.

Utiliza el “mapa” para determinar el mejor servidor CDN.

No sólo páginas Web Transmisión de

audio/vídeo almacenado.

Transmisión de audio/vídeo de tiempo real. Los nodos CDN crean

una red de revestimiento de capa de aplicación.

Page 96: Clase 20 Capa de Aplicacion v.1

Compartición de archivos entre iguales

Ejemplo Alicia ejecuta su

aplicación cliente entre iguales en el bloc de notas de su computadora.

Intermitentemente, conecta a Internet; obtiene una nueva dirección IP para cada conexión.

Busca “Hey Jude”. La aplicación presenta

otros iguales que tienen copia de “Hey Jude”.

Alicia escoge uno de los iguales, Roberto.

El archivo se copia desde el PC de Roberto al bloc de notas de Alicia: HTTP.

Mientras Alicia hace la descarga, otros usuarios cargan desde el PC de Alicia.

El igual de Alicia es tanto un cliente Web como un servidor Web pasajero.

Todos los iguales son servidores = altamente escalable.

Page 97: Clase 20 Capa de Aplicacion v.1

Directorio centralizado entre iguales

Diseño original del “Napster”.

1) Cuando un igual se conecta, informa al servidor central de: Su dirección IP. Su contenido.

2) Alicia pregunta por “Hey Jude”.

3) Alicia solicita un archivo de Roberto.

Servidor directorio centralizado

Iguales

Alicia

Roberto

1

1

1

12

3

Page 98: Clase 20 Capa de Aplicacion v.1

Problemas con el directorio centralizado entre iguales

Único punto de fallo. Cuello de botella de

rendimiento. Infracción del

copyright.

La transferencia de archivos está descentralizada, pero el contenido localizado está altamente descentralizado.

Page 99: Clase 20 Capa de Aplicacion v.1

Directorio descentralizado entre iguales

Cada igual es o un líder de su grupo o está asignado a un líder de grupo.

El líder del grupo rastrea el contenido de todos sus “hijos”.

Los iguales consultan al líder del grupo y este puede consultar a otros líderes de grupo.

Igual ordinario

Igual líder de grupo

Relaciones de vecindad

en la red de superposición

Page 100: Clase 20 Capa de Aplicacion v.1

Más sobre el directorio descentralizado

Red de superposición Los iguales son nodos. Arcos entre los iguales

y sus líderes de grupo. Arcos entre algunas

parejas de líderes de grupo.

Vecinos virtuales.Nodo de arranque El igual conectado es

asignado a un líder de grupo o nombrado líder.

Ventajas del acercamiento No hay servidor de

directorio centralizado: El servicio de localización

distribuido entre los iguales. Más difícil de cerrar.

Inconvenientes del acercamiento

Es necesario el nodo de arranque.

Los líderes de grupo pueden sobrecargarse.

Page 101: Clase 20 Capa de Aplicacion v.1

Inundación de consultas entre iguales

Aplicación Gnutella. No hay jerarquía. Utilización del nodo de

arranque para saber sobre los otros.

Conexión del mensaje.

Envío de consulta a los vecinos.

Los vecinos responden a la consulta.

Si el igual consultado tiene el objeto, manda mensaje de vuelta al igual que pregunta.

conexión

Page 102: Clase 20 Capa de Aplicacion v.1

Más sobre la inundación de consultas entre igualesVentajas Los iguales tienen

responsabilidades similares: no hay líderes de grupo.

Altamente descentralizado.

Ningún igual mantiene un directorio de información.

Inconvenientes Tráfico de consultas

excesivo. Radio de consultas:

puede no tener contenido estando presente.

Nodo de arranque. Mantenimiento de la

red de superposición.

Page 103: Clase 20 Capa de Aplicacion v.1

Capítulo 2: Resumen

Requerimientos de servicios de aplicación: Fiabilidad, ancho de banda,

retraso.

Paradigma cliente-servidor. Modelo de servicio de

transporte de Internet. Orientado a la conexión,

fiable: TCP Poco fiable, datagramas: UDP

Nuestro estudio sobre las aplicaciones de redes ahora está completo.

Protocolos específicos: HTTP. FTP. SMTP, POP, IMAP. DNS.

Programación de sockets.

Distribución de contenidos. Cachés, CDN. Entre iguales.

Page 104: Clase 20 Capa de Aplicacion v.1

Capítulo 2: Resumen

Típico intercambio de mensajes petición/ respuesta. El cliente solicita una

información o un servicio. El servidor contesta con

datos y un código estatus. Formatos del mensaje:

Cabeceras: campos que dan la información sobre los datos.

Datos: información que se comunica.

Lo más importante: lo aprendido sobre protocolos

Mensajes de control frente a mensajes de datos. En banda, fuera de

banda. Centralizado frente a

descentralizado. Sin estado frente a en

estado. Transferencia de mensajes

fiable frente a poco fiable. “Complejidad al límite de la

red”. Seguridad: autentificación.