Vous êtes sur la page 1sur 104

Capa de Aplicacin

Redes de
computadores: un
enfoque descendente
basado en Internet,
2 edicin.
Jim Kurose, Keith Ross
Copyright 1996-2002.
J.F Kurose y K.W. Ross.
Todos los derechos reservados.

Capa de aplicacin
Nuestros objetivos:
Aprendizaje de
Aspectos conceptuales
protocolos por medio
y de implementacin de
del estudio de
los protocolos de las
protocolos a nivel de
aplicaciones de red.
aplicacin.
HTTP.
Modelos de servicio
FTP.
de la capa de
SMTP / POP3 / IMAP.
transportes
DNS.
Paradigma cliente Programacin de
servidor.
Paradigma entre iguales
aplicaciones de red.
(peer to peer).

Socket de API.

Tabla de contenidos
2.1 Principios de los

protocolos de la capa
de aplicacin.
2.2 La Web y HTTP.
2.3 Transferencia de
archivos: FTP.
2.4 Correo electrnico
en Internet.

SMTP, POP3, IMAP.

2.5 DNS: el servicio de

directorio de
Internet.

2.6 Programacin de

sockets con TCP.


2.7 Programacin de
sockets con UDP.
2.8 Construccin de un
servidor web sencillo.
2.9 Distribucin de
contenidos:

Cach web.
Redes de distribucin de
contenidos.
Comparticin de archivos
entre iguales.

Aplicaciones de red: jerga


Proceso: programa que se
Agentes de usuario:
ejecuta en un host.
interfaces con un
En el mismo host, dos
usuario por encima y
una red por debajo.
procesos se comunican
Implementa interfaces
utilizando comunicacin
interproceso (definidos
de usuario y protocolos
a nivel de aplicacin.
por un sistema operativo).
Web: navegador.
Los procesos que se
Correo electrnico:
ejecutan en diferentes
lector de correo.
hosts se comunican con un
Transmisin de
protocolo de capa de
audio/vdeo:
aplicacin.
reproductor multimedia.

Aplicaciones y protocolos de la capa de aplicacin


Aplicacin: comunicacin,
procesos distributivos.

Por ejemplo: correo electrnico,


web, comparticin de archivos entre
iguales, mensajera instantnea.
Funcionamiento en sistemas finales
(hosts).
Intercambio de mensajes para la
implementacin de aplicaciones.

Aplicacin

Transporte

Red

Enlace de datos

Fsica

Protocolos de capa de aplicacin

Una parte de la aplicacin.


Definicin de mensajes
intercambiados entre las
aplicaciones y las acciones tomadas.
Uso de servicios de comunicacin
proporcionados por los protocolos de
capas inferiores (TCP, UDP).

Aplicacin

Aplicacin

Transporte

Red

Enlace de datos

Transporte
Enlace de datos

Fsica

Red

Fsica

Caractersticas de los
protocolos de capa de aplicacin
Los tipos de mensajes

intercambiados, por
ejemplo, mensajes de
peticin y de respuesta.
Sintaxis de los tipos de
mensajes: qu campos hay
en los mensajes y cmo
estn delineados estos
campos.
Semntica de los campos,
por ejemplo, significado de
la informacin en los
campos.
Reglas que determinan
cundo y cmo los procesos
envan y responden a los
mensajes.

Protocolos de dominio
pblico:
Definidos en RFC.
Permiten
interoperabilidad.
Por ejemplo: HTTP,
SMTP.
Protocolos de propietarios:
Por ejemplo:

KaZaA,ARES,
LimeWire.

Paradigma del cliente-servidor


La aplicacin de red tpicamente tiene
dos partes: el cliente y el servidor

Aplicacin

Transporte

Red

Enlace de datos

Cliente:

Fsica

Inicia el contacto con el servidor


(habla primero).
Normalmente solicita un servicio
del servidor.
Web: cliente implementado en el
navegador; correo electrnico: en
el lector de correo.

Servidor:

Proporciona el servicio solicitado al cliente.


Por ejemplo, el servidor de Web enva la
pgina Web solicitada, el servidor de
correo entrega el correo electrnico.

Peticin

Respuesta
Aplicacin

Transporte

Red

Enlace de datos

Fsica

Procesos que se comunican a travs de la red


El proceso enva/recibe

mensajes a/de su socket.


El socket es anlogo 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 aplicacin y la capa de transporte

Host
o servidor

Host o
servidor

proceso

controlado por
el desarrollador
de la aplicacin

proceso
socket

socket
TCP con
bferes,
variables

Internet

TCP con
bferes,
variables

controlado
por el sistema
operativo

Tambien se le denomina API: (1) eleccin del protocolo de

transporte; (2) posibilidad de fijar algunos parmetros.

Direccionamiento de procesos:
Para que un proceso reciba

mensajes debe tener un


identificador.
Cada host tiene una nica
direccin IP de 32 bits.
Pregunta: Basta con la
direccin IP del host, en el
que el proceso se ejecuta,
para identificar el
proceso?
Respuesta: No, ya que
muchos procesos
diferentes pueden estar
ejecutndose en el mismo
host.

El identificador incluye

tanto la direccin IP
como los nmeros de
puerto asociados con el
proceso del host.
Ejemplos de nmeros
de puerto:

Servidor HTTP: 80.


Servidor de correo: 25.
Telnet : 23.
FTP: 20.

Ms adelante se

tratar este tema con


ms profundidad.

Qu servicio de transporte necesita una


aplicacin?
Prdida de datos
Ciertas aplicaciones (por
ejemplo, audio) pueden tolerar
algunas prdidas.
Otras aplicaciones (por
ejemplo, transferencia de
archivos, Telnet) requieren el
100 por ciento de
transferencia fiable de datos.

Temporizacin
Algunas aplicaciones (por
ejemplo, telefona de
Internet, juegos
interactivos) requieren un
retardo lento para ser
efectivas.

Ancho de banda
Algunas aplicaciones (por
ejemplo, multimedia)
requieren un mnimo de
ancho de banda para ser
efectivas.
Otras aplicaciones
(aplicaciones flexibles)
hacen uso de cualquier
ancho de banda que tengan
a su disposicin.

Requisitos de los servicios de transporte para


aplicaciones comunes
Prdida de datos Ancho de banda
Aplicacin
Transferencia de archivos

Correo electrnico
Documentos Web
Audio/vdeo de
tiempo real
Audio/vdeo almacenado

Juegos interactivos
Mensajera instantnea

No prdida
No prdida
No prdida
Tolerante
Tolerante
Tolerante
No prdida

Sensible al tiempo

flexible
flexible
flexible

No
No
No
Audio: 5Kbps-1Mbps S, 100 mseg
Vdeo:10Kbps5Mbps

S, pocos seg
Igual que el anterior S, 100 mseg
Pocos Kbps-10Kbps

Flexible

S y no

Servicios de los protocolos de


transporte de Internet
Servicio TCP:

Orientado a la conexin:
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 congestin:
regulacin del emisor si la red
se sobrecarga.
No proporciona:
temporizacin, garantas de un
ancho de banda mnimo.

Servicio UDP:

Transferencia de datos no

fiable entre el proceso


emisor y el receptor.
No proporciona: sistema
de conexin, fiabilidad,
control de flujo, control
de congestin,
temporizacin y garanta
de ancho de banda.

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

Aplicaciones de Internet: aplicacin, protocolos de


transporte
Aplicaciones
Correo electrnico
Acceso a terminales remotos

Web
Transferencia de archivos
Flujo de multimedia
Telefona Internet

Protocolo de la capa Protocolo de ransporte


subyacente
de aplicacin
TCP
SMTP [RFC 2821]
TCP
Telnet [RFC 854]
TCP
HTTP [RFC 2616]
TCP
FTP [RFC 959]
TCP o UDP
Propietario
(por ejemplo, Real Networks)
Propietario
Tpicamente UDP
(por ejemplo, Dialpad,
xLite)

Captulo 2: Tabla de contenidos


2.1 Principios de los

protocolos de la capa
de aplicacin.
2.2 La Web y HTTP.
2.3 Transferencia de
archivos: FTP.
2.4 Correo electrnico
en Internet.

SMTP, POP3, IMAP.

2.5 DNS: el servicio de

directorio de
Internet.

2.6 Programacin de

sockets con TCP.


2.7 Programacin de
sockets con UDP.
2.8 Construccin de un
servidor web sencillo.
2.9 Distribucin de
contenidos:

Cach web.
Redes de distribucin de
contenidos.
Comparticin de archivos
entre iguales.

La Web y HTTP
En primer lugar, un poco de jerga
Una pgina web consta de objectos.
Un objeto puede ser un archivo HTML, una imagen
JPEG,un applet Java, un archivo de audio, etc.
Una pgina 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

Introduccin a HTTP
HTTP: protocolo de
transferencia de
hipertexto:

Protocolo de la capa de

aplicacin de la Web.
Modelo cliente/servidor:
cliente: navegador que
solicita, recibe y
descarga objetos Web.
servidor: servidor Web
que enva los objetos
correspondientes en
respuesta a las peticiones.
HTTP 1.0: RFC 1945
HTTP 1.1: RFC 2068

Pet
ici
nH
TT
R
PC ejecutando es
P
pue
s
el Explorer
ta
HT
TP

TP
T
nH

TP Servidor
i
c
T
i
t
H
ejecutando
a
Pe
t
s
e
el servidor Web
spu
e
R
Apache

Mac ejecutando
el Navigator

Introduccin a HTTP
Usos de TCP:

El cliente inicia la conexin

TCP (crea un socket) al


servidor, puerto 80.
El servidor accepta la
conexin TCP del cliente.
Los mensajes HTTP
(mensajes de protocolo de la
capa de aplicacin)
intercambiados entre el
navegador ( cliente HTTP) y
el servidor Web (servidor
HTTP)
La conexin TCP se cierra.

HTTP est sin estado


El servidor no conserva

ninguna informacin sobre las


peticiones previas de clientes.

aparte

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.

Conexiones HTTP
Conexiones HTTP no
persistentes
Se enva un objeto
como mximo con una
conexin TCP.
HTTP/1.0 utiliza
conexiones HTTP no
persistentes.

Conexiones HTTP
persistentes
Se pueden enviar
mltiples objetos con
una sola conexin TCP
entre el cliente y el
servidor.
HTTP/1.1 utiliza
conexiones
persistentes en su
modo por defecto.

Conexiones HTTP no persistentes


(consta de texto
y referencias a 10
imgenes jpeg)

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

1a. El cliente HTTP inicia la

conexin TCP con el servidor


HTTP (proceso) de
www.escuela.edu en el puerto
80.

2. El cliente HTTP enva un

mensaje HTTP de peticin


(que contiene el URL) a
travs del socket de la
conexin TCP. El mensaje
indica que el cliente quiere el
objeto
departamento/home.index.

Tiempo

1b. El servidor HTTP en el host


www.escuela.edu espera la
conexin TCP del puerto 80 y
acepta la conexin,
notificando al cliente.

3. El servidor HTTP recibe el

mensaje de peticin,
compone un mensaje de
respuesta que contiene el
objeto solicitado, y lo enva
al socket.

Conexiones HTTP no persistentes


4. El servidor HTTP cierra la
5. El cliente HTTP recibe el

Tiempo

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.

conexin TCP.

Modelo del tiempo de respuesta


Definicin de RRT: tiempo
necesario para enviar un
paquete pequeo desde el
cliente hasta el servidor y
despus de vuelta al cliente.
Tiempo de respuesta:
Un RTT para iniciar la
conexin TCP.
Un RTT para la peticin HTTP
y los primeros bytes de
respuesta HTTP de vuelta.
Tiempo de transmisin del
archivo:
total = 2RTT+tiempo de transmisin

Inicio de
la conexin
TCP
RTT
Peticin
de archivo

Tiempo de
transmisin
del archivo

RTT
Archivo
recibido
Tiempo

Tiempo

Conexiones HTTP persistentes


Particularidades de HTTP no
persistente:
Requieren dos RTT por objeto.
El sistema operativo debe
funcionar y asignar los recursos
del host para cada conexin TCP.
Sin embargo, los navegadores
suelen abrir conexiones TCP
paralelas para traer los objetos
referenciados.
HTTP persistente:
El servidor deja la conexin
abierta tras enviar la respuesta.
Los mensajes HTTP posteriores
entre el mismo cliente/servidor
se envan por la misma conexin.

Conexiones persistentes sin


entubamiento:
El cliente slo emite una
nueva peticin 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 peticin
tan pronto como encuentra
un objeto referenciado.
Tan slo un RTT para todos
los objetos referenciados.

Mensaje HTTP de peticin


Hay dos tipos de mensajes HTTP:

respuesta.
Mensaje HTTP de peticin:

de peticin, de

ASCII (formato ledo por personas )


Lnea de peticin
(GET, POST,
GET /dir/pagina.html HTTP/1.1
comandos HEAD)
Host: www.escuela.edu
User-agent: Mozilla/4.0
Lneas de Connection: close
cabecera Accept-language:fr

Retorno de carro y
avance de lnea
que indican el final
del mensaje

(Retorno de carro extra, avance de lnea)

Mensaje HTTP de peticin: formato general


mtodo

versin

Nombre del campo de


cabecera

valor

Nombre del campo de


cabecera

valor

Lnea de
peticin
Lneas de
cabecera

Cuerpo de
entidad

Descarga de la entrada de formulario


Mtodo POST:
La pgina Web suele
incluir una entrada de
formulario.
La entrada se
descarga al servidor
en el cuerpo de
entidad.

Mtodo URL:
Utiliza el mtodo GET.
La entrada se descarga en
el campo URL de la lnea de
peticin:

www.somesite.com/animalsearch?monkeys&banana

Tipos de mtodos
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.

Mensaje HTTP de respuesta


Lnea de estatus
(protocolo del
cdigo de estatus
y la frase
de estatus)
Lneas de
cabecera

Datos, por ejemplo,


el archivo
HTML solicitado

HTTP/1.1 200 OK
Connection close
Date: 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 ...

Cdigo de estatus HTTP de respuesta


En la primera lnea en el mensaje de respuesta servidor -> cliente.
Algunos ejemplos de cdigos:
200 OK

peticin exitosa, el objeto requerido aparece


posteriormente en este mensaje.

301 Moved Permanently

el objeto demandado ha sido movido, su nueva localizacin


se especifica posteriormente en este mensaje (Location:).

400 Bad Request

el servidor no comprendi el mensaje de peticin.

404 Not Found

el documento pedido no existe en este servidor.

505 HTTP Version Not Supported

Ponga a prueba el HTTP (como cliente)


usted mismo
1. Telnet a su servidor web favorito:
telnet www.eurecom.fr 80 Abre la conexin TCP al puerto 80.
(por defecto puerto servidor HTTP) en
www.eurecom.fr.
Cualquier cosa que se escriba es enviada a
www.eurecom.fr

2. Escriba una peticin HTTP tipo GET:


GET /~ross/index.html HTTP/1.0 Escribiendo esto (con doble retorno

de carro), est enviando esta peticin


GET mnima (pero completa) al servidor
HTTP.

3. Mire el mensaje de respuesta enviado por el servidor


HTTP.

Interaccin usuario-servidor: autorizacin


Autorizacin : control al acceso del
contenido del servidor.
Credenciales de autorizacin,
normalmente son: nombre,
contrasea.
Sin estado: el cliente debe
presentar la autorizacin para
cada peticin:
Autorizacin: lnea de cabecera
en cada peticin.
Si no hay autorizacin:
cabecera, el servidor rechaza
el acceso y enva
WWW authenticate:
lnea de cabecera en
respuesta.

servidor

cliente

Tpico mensaje http de peticin

401: autorizacin solic.

WWW authenticate:
Tpico mensaje http de peticin

+ Autorizacin: <cred>
Tpico mensaje de respuesta

Tpico mensaje http de peticin

Autorizacin: <cred>
Tpico mensaje de respuesta

Tiempo

Cookies: mantenimiento del estado


Muchos sitios web importantes
utilizan cookies.
Cuatro componentes:
1) Lnea de cabecera de cookie en
el mensaje HTTP de respuesta.
2) Lnea de cabecera de cookie en
el mensaje HTTP de peticin.
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 electrnico
por primera vez.
Cuando la peticin HTTP
inicial llega al sitio, ste
crea un nmero de
identificacin nico y
tambin crea en su base
de datos una entrada
indexada por el nmero
de identificacin.

Cookies: mantenimiento del estado


cliente
Archivo
de cookie
ebay: 8734

servidor

Tpico msj http de peticin


Tpico mensaje de
respuesta +

en
de trad
el servidor dat a en
os
de la ba
crea un nmero
res se
de identificacin
pa
ldo

Set-cookie: 1678 1678 para el usuario


Tpico mensaje http de
peticin

cookie: 1678

Tpico mensaje de respuesta

una semana ms tarde:


Archivo
de cookie
amazon: 1678
ebay: 8734

Tpico mensaje http de


peticin

cookie: 1678

Tpico mensaje de respuesta

Accin
especfica
cookie
Accin
especfica
cookie

so
acce

ac
ce
so

Archivo
de cookie
amazon: 1678
ebay: 8734

Cookies
Qu aportan las cookies:
Autorizacin.
Carro de la compra.
Recomendaciones.
Sesin de usuario con
estado (correo
electrnico web)

aparte

Cookies y privacidad:

Las cookies permiten que

los sitios sepan mucho


sobre usted.
Puede proporcionar su
nombre y correo
electrnico a los sitios.
Los motores de bsqueda
utilizan el redireccin y las
cookies para saber an ms.
Las empresas de publicidad
consiguen informacin a
travs de los sitios.

GET condicional: cach por parte del cliente


servidor

cliente

Objetivo: no enviar objetos si

el cliente tiene una versin


cach actualizada.
Cliente: especifica la fecha
de la copia en cach en la
peticin HTTP:
If-modified-since:
<date>

Servidor: su respuesta no

contiene ningn objeto si la


copia en cach est
actualizada:
HTTP/1.0 304 Not
Modified

mensaje HTTP de
peticin
If-modified-since:
<date>

respuesta HTTP

objeto
no
modificado

HTTP/1.0
304 Not Modified

mensaje HTTP de
peticin
If-modified-since:
<date>

respuesta HTTP

HTTP/1.0 200 OK

<data>

objeto
modificado

Captulo 2:Tabla de contenidos


2.1 Principios de los

protocolos de la capa
de aplicacin.
2.2 La Web y HTTP.
2.3 Transferencia de
archivos: FTP.
2.4 Correo electrnico
en Internet.

SMTP, POP3, IMAP.

2.5 DNS: el servicio de

directorio de
Internet.

2.6 Programacin de

sockets con TCP.


2.7 Programacin de
sockets con UDP.
2.8 Construccin de un
servidor de web sencillo.
2.9 Distribucin de
contenidos:

Cach web.
Redes de distribucin de
contenidos.
Comparticin de archivos
entre iguales.

FTP: El protocolo de transferencia de archivos


Interfaz
Cliente
de usuario
FTP
FTP

usuario
o host

Transferencia de
archivo

Sistema
local de
archivos

Servidor
FTP
Sistema
remoto 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.

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 autorizacin
sobre la conexin de control.
El cliente navega por el directorio
remoto enviando comandos sobre
la conexin de control.
Cuando el servidor recibe un
comando para la transferencia de
archivos, el servidor abre la
conexin TCP de datos con el
cliente.
Despus de transferir un archivo,
el servidor cierra la conexin.

Conexin TCP de control


sobre el puerto 21

Cliente
FTP

Conexin TCP de control


sobre el puerto 20 Servidor

FTP

El servidor abre una segunda

conexin FTP de datos para


transferir otro archivo.
Conexin de control: fuera
de banda
El servidor FTP mantiene el
estado: directorio actual,
autentificacin anterior.

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.

Ejemplo de cdigos de
respuesta:
Cdigos de estatus y frase

RETR nombre de archivo

recupera el archivo.

STOR nombre de archivo

almacena el archivo en el
host remoto.

(como en HTTP).
331 Username OK,
password required
125 data connection
already open; transfer
starting
425 Cant open data
connection
452 Error writing file

Captulo 2: Tabla de contenidos


2.1 Principios de los

protocolos de la capa
de aplicacin.
2.2 La Web y HTTP.
2.3 Transferencia de
archivos: FTP.
2.4 Correo electrnico
en Internet.

SMTP, POP3, IMAP.

2.5 DNS: el servicio de

directorio de
Internet.

2.6 Programacin de

sockets con TCP.


2.7 Programacin de
sockets con UDP.
2.8 Construccin de un
servidor web sencillo.
2.9 Distribucin de
contenidos:

Cach Web.
Redes de distribucin de
contenidos.
Comparticin de archivos
entre iguales.

Cola de
mensajes
de salida

Correo electrnico
Los tres componentes
principales:
Agentes de usuario.
Servidores de correo.
Protocolo simple de

agente
de usuario
servidor
de correo

SMTP

transferencia de correo: SMTP.

Agente usuario
Tambin conocido como lector
de correo.
Composicin, edicin y lectura de
mensajes de correo.
Por ejemplo, Eudora, Outlook,
elm, Netscape Messenger.
Salida y entrada del los mensajes
almacenados en el servidor.

Buzn de correo
de usuario

SMTP

agente
de usuario
servidor
de correo

agente
de usuario

SMTP
agente
de usuario

servidor
de correo
agente
de usuario
agente
de usuario

Correo electrnico: servidores de correo


Servidores de correo:
Buzn 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
electrnico.
Cliente: enva correo al
servidor.
Servidor: recibe correo
de otro servidor.

servidor
de correo

agente
de usuario

agente
de usuario

SMTP
servidor
de correo

SMTP

agente
de usuario

SMTP
servidor
de correo

agente
de usuario
agente
de usuario

agente
de usuario

Correo electrnico: SMTP [RFC 2821]


Utiliza TCP para transferir con seguridad el mensaje de

correo electrnico del cliente al servidor, puerto 25.


Transferencia directa: del servidor que enva al servidor
que recibe.
Las tres fases de la transferencia son:
Acuerdo (saludo).
Transferencia de mensajes.
Cierre.
Interaccin comando/respuesta:
Comandos: texto ASCII.
Respuesta: cdigo de estatus y frase.

Los mensajes deben tener siete bits en ASCII.

Ejemplo: Alicia le enva un mensaje a Roberto


1) Alicia utiliza su agente usuario

4) El cliente SMTP enva el

para componer el mensaje a


bob@escuela.edu
2) El agente de usuario de Alicia
enva 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 conexin TCP con el
servidor de correo de Roberto.

mensaje de Alicia sobre la


conexin TCP.
5) El servidor de correo de
Roberto deposita el mensaje
en el buzn de correo de
Roberto.
6) Roberto recurre a su agente
de usuario para leer el
mensaje.

1
agente
de usuario

servidor
de correo
3

servidor
de correo

agente
de usuario

Ejemplo de interaccin SMTP


S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:

220 hamburger.edu
HELO crepes.fr
250 Hello crepes.fr, pleased to meet you
MAIL FROM: <alicia@crepes.fr>
250 alicia@crepes.fr... Sender ok
RCPT TO: <roberto@hamburger.edu>
250 roberto@hamburger.edu ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Te gusta el ketchup?
Y los encurtidos?
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection

Ponga a prueba la interaccin 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
electrnico sin utilizar el cliente de correo
electrnico (lector).

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.

Comparacin con HTTP:


HTTP: demanda.
SMTP: oferta.
Ambos utilizan interaccin

ASCII comando/respuesta
y cdigos de estatus.

HTTP: encapsula cada

objeto en su propio
mensaje de respuesta.
SMTP: enva mltiples
objetos en mensajes
multipart.

Formato de los mensajes de correo


SMTP: protocolo para
intercambiar mensajes de
correo electrnico.
RFC 822: estndar para el
formato de texto del
mensaje:
Lneas de cabecera, por
ejemplo:
Para:
De:
Asunto:
diferentes de los comandos
SMTP

Cuerpo:

el mensaje, slo
caracteres ASCII.

cabecera

cuerpo

Lnea en
blanco

Formato del mensaje: extensiones multimedia


MIME: extensiones de correo multimedia, RFC 2045,

2056
Las lneas adicionales en la cabecera del mensaje
declaran el tipo de contenido MIME.
Versin MIME
Mtodo utilizado
de datos codificados
Datos multimedia
tipo, subtipo,
declaracin de parmetros
Datos codificados

From: alicia@crepes.fr
To: roberto@hamburger.edu
Subject: Imagen de un delicioso
crepe.
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
datos codificados
base64........ ...................
............ .... datos
codificados base64

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).

Vdeo
Ejemplos de subtipos:

mpeg, quicktime

Aplicacin
Otros datos que deben ser

procesados por el lector


antes de ser visionados.
Ejemplos de subtipos:
msword, octet-stream

Tipo multipart
From: alicia@crepes.fr
To: roberto@hamburger.edu
Subject: Imagen de un delicioso crepe.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=StartOfNextPart
--StartOfNextPart
Querido Roberto, Te envo una imagen de un crepe.
--StartOfNextPart
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
datos codificados base64 .....
.........................
...datos codificados base64
--StartOfNextPart
Dime si quieres tener la receta

Protocolos de acceso al correo


SMTP

SMTP

Agente
de usuario

Servidor de correo
del emisor

Protocolo
de acceso

Servidor de correo
del destinatario

SMTP: envo/almacenamiento a/en el servidor del destinatario.


Protocolo de acceso al correo: recuperacin desde el servidor.
POP: Protocolo de Oficina Postal [RFC 1939]
Autorizacin (agente <-->servidor) y descarga.
IMAP: Protocolo de Acceso al Correo Internet [RFC 1730]
Ms caractersticas (ms complejo).
Manipulacin de los mensajes almacenados en el servidor.
HTTP: Hotmail , Yahoo! Mail, etc.

Agente
de usuario

Protocolo POP3
Fase de autorizacin
Comandos del cliente:

user: declaracin del nombre


de usuario.
pass: contrasea.
Respuestas del servidor:
+OK
-ERR

Fase de transaccin, cliente:

list: enumera los nmeros de

mensaje.
retr: recupera un mensaje
determinado por su nmero.
dele: borra.
quit

S:
C:
S:
C:
S:

+OK POP3 server ready


user bob
+OK
pass hungry
+OK user successfully logged

C:
S:
S:
S:
C:
S:
S:
C:
C:
S:
S:
C:
C:
S:

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

on

POP3 e IMAP
Ms informacin sobre
POP3:
El ejemplo anterior
utiliza el modo
descargar y borrar.
Roberto no puede volver
a leer el correo
electrnico 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 nmeros de identificacin
de los mensajes y el nombre
de la carpeta.

Captulo 2: Tabla de contenidos


2.1 Principios de los

protocolos de la capa
de aplicacin.
2.2 La Web y HTTP.
2.3 Transferencia de
archivos: FTP.
2.4 Correo electrnico
en Internet.

SMTP, POP3, IMAP.

2.5 DNS: el servicio de

directorio de
Internet.

2.6 Programacin de

sockets con TCP.


2.7 Programacin de
sockets con UDP.
2.8 Construccin de un
servidor web Sencillo.
2.9 Distribucin de
contenidos:

Cach web.
Redes de distribucin de
contenidos.
Comparticin de archivos
entre iguales.

DNS: sistema de nombres de dominio


Personas: muchos
identificadores:

SSN, nombre, pasaporte #

Hosts de Internet, routers:

Direccin 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 jerarqua de
muchos servidores de nombre.
Protocolo de capa de aplicacin:
host, routers, servidores de
nombre comunicndose para
resolver nombres
(direcciones/traduccin de
nombres).
Nota: funcin esencial de
Internet, implementada como
protocolo de capa de
aplicacin.
Complejidad en el lmite de la
red.

Servidores de nombre DNS

Ningn servidor contiene todas

las correspondencias para


direccionar los nombres IP.
Servidores de nombre locales:

Por qu no centralizar el
DNS ?
Cada ISP, cada empresa tiene un
nico punto de fallo.
servidor de nombre local (por
defecto).
Volumen de trfico.
La pregunta del host DNS primero
va al servidor de nombre local.
Base de datos
autorizado de nombre:
distanciada centralizada. Servidor
Para un host: almacena la direccin
IP de ese host y el nombre.
Mantenimiento.

No es escalable.

Puede representar la traduccin


del nombre/direccin para el
nombre de ese host.

DNS: servidores raz de nombres.


Contactados por los servidores de nombre locales que no pueden resolver
un nombre.
Servidores de raz 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.

a NSI Herndon, VA
c PSInet Herndon, VA
d U Maryland College Park, MD
g DISA Vienna, VA
h ARL Aberdeen, MD
j NSI (TBD) Herndon, VA

k RIPE London
i NORDUnet Stockholm
m WIDE Tokyo

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

b USC-ISI Marina del Rey, CA


l ICANN Marina del Rey, CA

Los 13 servidores de
raz de nombres del
mundo

Ejemplo sencillo de DNS


host surf.eurecom.fr
quiere la direccin IP de
gaia.cs.umass.edu

servidor raz de
nombres

2
5

1. Contacta con su servidor DNS


local, dns.eurecom.fr.
servidor local de
2. dns.eurecom.fr contacta
nombres
con el servidor raz de
dns.eurecom.fr
nombres, si es necesario.
1
6
3. El servidor raz de nombres
contacta con el servidor
autorizado de nombres,
Host peticionario
dns.umass.edu, si es
surf.eurecom.fr
necesario.

Servidor autorizado
de nombres
dns.umass.edu

gaia.cs.umass.edu

Ejemplo DNS

servidor raz de
nombres

Servidor raz 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.

servidor local de
nombres
dns.eurecom.fr

Host peticionario

servidor intermedio
de nombres
dns.umass.edu
5
4

Servidor autorizado
de nombres
dns.umass.edu

surf.eurecom.fr
gaia.cs.umass.edu

DNS: consultas iterativas


Consulta recursiva:

Pone el peso de la

resolucin 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.

servidor raz de
nombres
Consulta
iterativa

3
4
7

servidor local de
nombres
dns.eurecom.fr

Host peticionario

servidor intermedio
de nombres
dns.umass.edu
5
6
Servidor autorizado
de nombres
dns.umass.edu

surf.eurecom.fr
gaia.cs.umass.edu

DNS: cach y actualizacin 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 actualizacin/notificacin bajo
diseo de IETF.

RFC 2136

http://www.ietf.org/html.charters/dnsind-charter.html

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

Formato RR :

(nombre, valor, tipo,ttl)

Tipo=CNAME
Tipo=A
nombre es el alias de un nombre
nombre es un nombre de
cannico (verdadero).
host.
www.ibm.com en realidad es
valor es la direccin IP.
Tipo=NS
nombre es un dominio (por
ejemplo foo.com).
valor es la direccin IP de un
servidor de nombre autorizado
para ese dominio.

servereast.backup2.ibm.com
valor es el nombre cannico.

Tipo=MX
valor es el nombre de un

servidor de correo asociado a


nombre.

Protocolo y mensajes DNS


Protocolo DNS: mensajes de consulta y respuesta, ambos con el mismo formato de
mensaje.

Cabecera del mensaje:


Identificacin: 16 bits

para la consulta, que se


repiten en la respuesta a la
consulta.
Flags (seales):
consulta o respuesta.
recursin deseada.
recursin disponible.
respuesta es
autorizada.

Identificacin

Seales

nmero de cuestiones

Nmero de RR de
respuesta

Nmero de RR de
autorizacin

Nmero de RR
adicionales
Cuestiones

(nmero variable de cuestiones)


Respuestas
(nmero variable de registros de recurso )
Autorizacin
(nmero variable de registros de recurso)
Informacin adicional
(nmero variable de registros de recurso)

Protocolo y mensajes DNS


Nombre, campos de tipo
para una consulta.
RR en respuesta
a una consulta.
Registros para
servidores autorizados.

Seales

Identificacin
Nmero de cuestiones

Nmero de RR de
respuesta

Nmero de RR
autorizacin

Nmero de RR
adicionales
Cuestiones

(nmero variable de cuestiones)


Respuestas
(nmero variable de registros de recurso)
Autorizacin
(nmero variable de registros de recurso)
Informacin adicional

Informacin adicional
de ayuda que puede
ser utilizada.

(nmero variable de registros de recurso )

Diagrama una Solucin de DNS


ENTERPRISE 220R
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

SUNFire V240
500 GB HD 4 GB RAM

2 Servidores HP Proliant
1T HD 8 GB RAM

September 9, 2015

2 Balanceadores Brocade ADX 1000

2 Servidores SUNFire V240


500 GB HD 4 GB RAM

Captulo 2: Tabla de Contenidos


2.1 Principios de los

protocolos de la capa
de aplicacin.
2.2 La Web y HTTP.
2.3 Transferencia de
archivos: FTP.
2.4 Correo electrnico
en Internet.

SMTP, POP3, IMAP.

2.5 DNS: el servicio de

directorio de
Internet.

2.6 Programacin de

sockets con TCP.


2.7 Programacin de
sockets con UDP.
2.8 Construccin de un
servidor web sencillo.
2.9 Distribucin de
contenidos:

Cach web.
Redes de distribucin de
contenidos.
Comparticin de archivos
entre iguales.

Programacin de sockets
Objetivo: aprender cmo se construye una aplicacin
cliente/servidor que se comunique utilizando sockets.
Socket API

socket

UNIX, 1981
Creado, utilizado y puesto en
circulacin explcitamente por
aplicaciones.
Paradigma cliente/servidor.
Dos tipos de transporte de
servicio va socket API:
Datagrama poco fiable.
Orientacin del flujo de
bytes fiable.

Una interfaz controlada


por un sistema operativo,
creada por una aplicacin
y con un host local,
(una puerta) por la cual
el proceso de aplicacin
puede tanto enviar como
recibir mensajes de otro
proceso de aplicacin.

Introducido por BSD4.1

Programacin de sockets usando TCP


Socket: una puerta entre el proceso de aplicacin y el
protocolo de transporte final (UCP o TCP).
Servicio TCP: transferencia fiable de bytes de un
proceso a otro.

Controlado por el
desarrollador de
la aplicacin
Controlado por el
sistema operativo

Proceso

Proceso
Socket
TCP con
bferes y
variables

Host o
servidor

Internet

Socket
TCP con
bferes y
variables

Host o
servidor

Controlado por el
desarrollador de
la aplicacin
Controlado por el
sistema operativo

Programacin 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.

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 mltiples clientes.
Fuente de los nmeros de
puerto utilizados para
distinguir a los clientes (ms
en el Captulo 3).

El cliente contacta con el servidor:


Creando un socket TCP local del
cliente.
Especificando la direccin IP y el
nmero de puerto del proceso del
servidor.
Punto de vista de la aplicacin
Cuando el cliente crea un socket:
TCP propociona una transferencia
el cliente establece una conexin
TCP con el servidor.
de bytes en orden y fiable

(tubera) entre cliente y servidor.

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.

Programacin de sockets con TCP

Flujo de
entrada

Proceso
Proceso
cliente

salidaAServidor

1) El cliente lee una lnea de su


entrada estndar (flujo
inFromUser) , y se la enva al
servidor por su socket (flujo
outToServer).
2) El servidor lee una lnea en su
socket.
3) El servidor convierte la lnea a
maysculas y se la enva de
vuelta al cliente.
4) El cliente lee e imprime la
lnea modificada de su socket
(flujo inFromServer).

Flujo de
salida

entradaDesdeServidor

Ejemplo de aplicacin
cliente-servidor:

Monitor

entradaDesdeUsuario

Teclado

Flujo de
entrada

Socketcliente
TCP
Socket
TCP

Hacia la red Desde la red

Interaccin socket cliente/servidor: TCP


Servidor

(ejecutndose en hostid)

Cliente

crear socket,
port=x, para peticin
de entrada:
socketAcogida =
ServerSocket()
Establecimiento de conexin Crear socket
Esperar a la peticin
TCP
conectado a hostid, port=x
de conexin de entrada
socketCliente =
socketConexion=
Socket()
socketAcogida.accept()
Leer peticin de
socketConexion
Escribir respuesta a
socketConexion
Cerrar
socketConexion

Enviar peticin utilizando


socketCliente

Leer respuesta de
socketCliente
Cerrar
socketCliente

Ejemplo: Cliente Java (TCP)


import java.io.*;
import java.net.*;
class TCPCliente {
public static void main(String argv[]) throws Exception
{
String frase;
String fraseModificada;
Crea flujo
de entrada
Crea socket cliente,
conecta con
el servidor

Crea flujo de
salida relacionado
con el socket

BufferedReader entradaDesdeUsuario =
new BufferedReader(new InputStreamReader(System.in));
Socket socketCliente = new Socket(nombrehost", 6789);
DataOutputStream salidaAServidor =
new DataOutputStream(socketCliente.getOutputStream());

Ejemplo: Cliente Java (TCP)


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

Crea un flujo de salida


relacionado con el
socket

frase = entradaDesdeUsuario.readLine();
Lnea de envo
al servidor

salidaAServidor.writeBytes(frase + '\n');
fraseModificada= entradaDesdeServidor.readLine();

Lnea de lectura
del servidor

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


socketCliente.close();
}
}

Ejemplo: Servidor Java (TCP)


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

Crea
socket de acogida
en puerto 6789

Espera en el socket
de acogida al contacto
del cliente
Crea flujo de
entrada relacionado
con el socket

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()));

Ejemplo: Servidor Java (TCP)


Crea flujo de
salida relacionado
con el socket

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

Lee en lnea desde


el socket

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

Escribe lnea
al socket

salidaACliente.writeBytes(fraseMayusculas);
}
}

Acaba el bucle while y vuelve


al principio del bucle a esperar
otra conexin del cliente.

Captulo 2: Tabla de contenidos


2.1 Principios de los

protocolos de la capa
de aplicacin.
2.2 La Web y HTTP.
2.3 Transferencia de
archivos: FTP.
2.4 Correo electrnico
en Internet.

SMTP, POP3, IMAP.

2.5 DNS: el servicio de

directorio de
Internet.

2.6 Programacin de

sockets con TCP.


2.7 Programacin de
sockets con UDP.
2.8 Construccin de un
servidor web sencillo.
2.9 Distribucin de
contenidos:

Cach web.
Redes de distribucin de
contenidos.
Comparticin de archivos
entre iguales.

Programacin de sockets con UDP


UDP: no hay conexin entre el
cliente y el servidor.
No hay sincronizacin.
El remitente aade
Punto de vista de la aplicacin
explcitamente la direccin IP
y el puerto de destino a cada
UDP proporciona transferencia
paquete.
poco fiable de grupos de bytes
El servidor debe extraer la
(datagramas) entre cliente y servidor
direccin IP y el puerto del
remitente del paquete
recibido.
UDP: Los datos transmitidos
puede que se reciban
desordenados o que se
pierdan.

Interaccin socket cliente/servidor: UDP


Servidor

(ejecutndose en hostid)

Crear socket,
port=x, para peticin de entrada:
socketServidor=
DatagramSocket()

Leer peticin de
socketServidor
Escribir respuesta a
socketServidor
especificando direccin del host
cliente, nmero de puerto.

Cliente
Crear socket,
socketCliente =
DatagramSocket()
Crear direccin (hostid, port=x,
enviar peticin de datagrama
utilizando socketCliente

Leer respuesta de
socketCliente
Cerrar
socketCliente

Ejemplo: Cliente Java (UDP)


Flujo de
entrada

Proceso
Cliente

Proceso

Monitor

entradaDesdeUsuario

Teclado

Entrada: recibe

paquete (TCP
recibido por flujo
de bytes)

Paquete
UDP

paqueteRecibido

paquete (TCP
enviado por flujo
de bytes)

Paqueteenvo

Salida: enva

Paquete
UDP

Socketcliente
clientSocket
UDP
Hacia la red Desde la red

socket
UDP

Ejemplo: Cliente Java (UDP)


import java.io.*;
import java.net.*;

Crea
flujo de entrada
Crea
socket cliente
Traduce el nombre del
host a una direccin
IP utilizando DNS

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();

Ejemplo: Cliente Java (UDP)


Crea datagrama con los
datos para enviar,
longitud, direccin IP,
puerto

Enva datagrama
al servidor

DatagramPacket paqueteEnvio =
new DatagramPacket(datosEnvio, datosEnvio.length, DireccinIP, 9876);

socketCliente.send(paqueteEnvio);
DatagramPacket paqueteRecepcion =
new DatagramPacket(datosRecepcion, datosRecepcion.length);

Lee datagrama
del servidor

socketCliente.receive(paqueteRecepcion);
String fraseModificada =
new String(paqueteRecepcion.getData());
System.out.println(DEL SERVIDOR:" + fraseModificada);
socketCliente.close();
}
}

Ejemplo: Servidor Java (UDP)


import java.io.*;
import java.net.*;

Crea
socket datagrama
en puerto 9876

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)
{

Crea espacio para


datagrama recibido
Recibe
datagrama

DatagramPacket paqueteRecepcion =
new DatagramPacket(datosRecepcion, datosRecepcion.length);

socketServidor.receive(paqueteRecepcion);

Ejemplo: Servidor Java (UDP)


String frase = new String(paqueteRecepcion.getData());

Obtiene direccin
IP y puerto
del remitente

InetAddress DireccionIP = paqueteRecepcion.getAddress();


int puerto = paqueteRecepcion.getPort();
String fraseMayusculas = frase.toUpperCase();
datosEnvio = fraseMayusculas.getBytes();

Crea datagrama
para envar al cliente

DatagramPacket paqueteEnvio =
new DatagramPacket(datosEnvio, datosEnvio.length, DireccionIP,
puerto);

Escribe datagrama
en el socket

socketServidor.send(paqueteEnvio);
}
}

Acaba el bucle while y vuelve


al principio del bucle a esperar
otro datagrama

Construccin de un servidor Web sencillo


Maneja slo una peticin

HTTP.
Acepta la peticin.
Analiza la cabecera.
Recupera el archivo pedido
del sistema de archivos del
servidor.
Crea un mensaje HTTP de
respuesta:

lneas de cabecera + archivo

Enva 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 ms informacin.

Programacin 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-12sockets.html
Socket Programming in Java: a tutorial,
http://www.javaworld.com/javaworld/jw-12-1996/jw-12sockets.html

Captulo 2: Tabla de contenidos


2.1 Principios de los

protocolos de la capa
de aplicacin.
2.2 La Web y HTTP.
2.3 Transferencia de
archivos: FTP.
2.4 Correo electrnico
en Internet.

SMTP, POP3, IMAP.

2.5 DNS: el servicio de

directorio de
Internet.

2.6 Programacin de

sockets con TCP.


2.7 Programacin de
sockets con UDP.
2.8 Construccin de un
servidor web sencillo.
2.9 Distribucin de
contenidos:

Cach web.
Redes de distribucin de
contenidos.
Comparticin de archivos
entre iguales.

Cach Web (servidor proxy)


Objetivo: satisfacer la solicitud del cliente sin involucrar

al servidor de origen.
El usuario pone el
navegador: accesos web
va cach.
El navegador enva 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.

Servidor
origen

Servidor
Pet
TP
ici
T
proxy
H
nH
n
Res
TT
ci
TP
i
Cliente pue
t
T
P
e
H
P
sta
ta
s
e
HT
u
TP
esp
R
TP
T
nH
TP

i
T
c
i
H
t
Pe
ta
s
e
pu
s
Re
Cliente

Servidor
origen

Ms sobre el cach web


El cach acta tanto de

cliente como de servidor.


El cach puede hacer una
revisin actualizada
utilizando If-modifiedsince en la cabecera HTTP.

Asunto: Debera un cach


correr el riesgo de enviar
objetos en cach sin
revisar?
Se utiliza un mtodo
heurstico.

Normalmente, el cach se

instala por ISP (universidad,


empresa, ISP residencial).

Por qu usar cach web?


Porque reduce el tiempo de

respuesta por peticin del


cliente.
Porque reduce el trfico en el
enlance de acceso de una
institucin.
Porque si Internet est
poblada de cachs, permite
que los proveedores pobres
puedan efectivamente enviar
contenido.

Ejemplo de cach
Supuestos
Tamao medio de los objetos =
100.000 bits.
Tasa media por peticin por parte
del browser de la institucin a los
servidores de origen = 15/seg.
Retraso del router de la
institucin 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
pblica

Enlace de acceso
de 1.5 Mbps
Red
institucional

LAN de 10 Mbps

Cach
institucional

Ejemplo de cach
Solucin posible
Aumento del ancho de banda
del enlace de acceso a,
digamos, 10 Mbps.
Consecuencias

Servidores
origen
Internet
pblica

Uso del LAN = 15%

Enlace de acceso
de 1.5 Mbps

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.

Red
institucional

LAN de 10 Mbps

Cach
institucional

Ejemplo de cach
Instalacin del cach
Supongamos que la tasa de acierto
sea 0,4.
Consecuencias
40% de las peticiones sern
satisfechas casi inmediatamente.
60% de las peticiones sern
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

Servidores
origen
Internet
pblica

Enlace de acceso
de 1.5 Mbps
Red
institucional

LAN de 10 Mbps

Cach
institucional

Redes de distribucin de contenidos (CDNs)


Los proveedores de contenido

son los clientes CDN.


Rplica del contenido
Una empresa CDN instala
cientos de servidores CDN a
travs 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 Norteamrica

Nodo CDN de distribucin

Servidor CDN
en Sudamrica Servidor CDN
en Europa

Servidor CDN
en Asia

Ejemplo CDN

Peticin HTTP para


www.foo.com/sports/sports.html

Servidor origen

1
2
3

Consulta DNS para www.cdn.com

Servidor DNS
autorizado de la CDN
Peticin HTTP para
www.cdn.com/www.foo.com/sports/ruth.gif

Servidor origen
www.foo.com
Distribuye HTML.

Servidor CDN
cercano

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

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

Empresa CDN
cdn.com
Distribuye archivos gif.
Utiliza su servidor DNS
autorizado para
encaminar las peticiones
redireccionadas.

Ms sobre las CDN


Peticiones 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 slo pginas Web


Transmisin de
audio/vdeo
almacenado.
Transmisin de
audio/vdeo de tiempo
real.

Los nodos CDN crean


una red de
revestimiento de capa
de aplicacin.

Comparticin de archivos entre iguales


Ejemplo
Alicia ejecuta su
aplicacin cliente entre
iguales en el bloc de
notas de su computadora.
Intermitentemente,
conecta a Internet;
obtiene una nueva
direccin IP para cada
conexin.
Busca Hey Jude.
La aplicacin 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.

Directorio centralizado entre iguales


Roberto

Diseo original del Napster.Servidor directorio


centralizado
1) Cuando un igual se conecta,
informa al servidor central
de:

Su direccin IP.
Su contenido.

2) Alicia pregunta por Hey


Jude.
3) Alicia solicita un archivo de
Roberto.

1
Iguales
1
3

1
2

Alicia

Problemas con el directorio centralizado entre iguales


nico punto de fallo.
Cuello de botella de

rendimiento.
Infraccin del
copyright.

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

Directorio descentralizado entre iguales


Cada igual es o un lder

de su grupo o est
asignado a un lder de
grupo.
El lder del grupo
rastrea el contenido
de todos sus hijos.
Los iguales consultan al
lder del grupo y este
puede consultar a
otros lderes de grupo.

Igual ordinario
Igual lder de grupo
Relaciones de vecindad
en la red de superposicin

Ms sobre el directorio descentralizado


Red de superposicin
Los iguales son nodos.
Arcos entre los iguales
y sus lderes de grupo.
Arcos entre algunas
parejas de lderes de
grupo.
Vecinos virtuales.
Nodo de arranque
El igual conectado es
asignado a un lder de
grupo o nombrado lder.

Ventajas del acercamiento


No hay servidor de
directorio centralizado:

El servicio de localizacin
distribuido entre los iguales.
Ms difcil de cerrar.

Inconvenientes del
acercamiento
Es necesario el nodo de
arranque.
Los lderes de grupo pueden
sobrecargarse.

Inundacin de consultas entre iguales


Aplicacin Gnutella.
No hay jerarqua.
Utilizacin del nodo de

arranque para saber sobre los


otros.
Conexin del mensaje.

conexin

Envo 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.

Ms sobre la inundacin de
consultas entre iguales
Ventajas
Los iguales tienen
responsabilidades
similares: no hay
lderes de grupo.
Altamente
descentralizado.
Ningn igual mantiene
un directorio de
informacin.

Inconvenientes
Trfico de consultas
excesivo.
Radio de consultas:
puede no tener
contenido estando
presente.
Nodo de arranque.
Mantenimiento de la
red de superposicin.

Captulo 2: Resumen
Nuestro estudio sobre las aplicaciones de redes ahora est
completo.
Requerimientos de

servicios de aplicacin:

Fiabilidad, ancho de banda,


retraso.

Paradigma cliente-servidor.
Modelo de servicio de

transporte de Internet.

Orientado a la conexin,
fiable: TCP
Poco fiable, datagramas: UDP

Protocolos especficos:
HTTP.
FTP.
SMTP, POP, IMAP.
DNS.
Programacin de

sockets.
Distribucin de
contenidos.
Cachs, CDN.
Entre iguales.

Captulo 2: Resumen
Lo ms importante: lo aprendido sobre protocolos
Tpico intercambio de

mensajes peticin/
respuesta.

El cliente solicita una


informacin o un servicio.
El servidor contesta con
datos y un cdigo estatus.

Formatos del mensaje:


Cabeceras: campos que dan
la informacin sobre los
datos.
Datos: informacin que se
comunica.

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 lmite de la
red.
Seguridad: autentificacin.

Vous aimerez peut-être aussi