Beruflich Dokumente
Kultur Dokumente
Aplicacin 2-1
Aprender ms sobre
protocolos estudiando
dos protocolos de la
capa de aplicacin de
internet
HTTP
DNS
Programando
aplicaciones en red
socket API
Aplicacin 2-2
Aplicacin 2-3
Aplicacin
transporte
red
enlace
fsico
Aplicacin
transporte
red
enlace
fsico
Aplicacin
transporte
red
enlace
fsico
Aplicacin 2-4
Aplicacin 2-5
Aplicacin 2-6
Arquitectura Cliente-servidor
Servidor:
Equipo siempre-ON
Direccin IP fija
Granjas de servidores
por escalabilidad
Clientes:
cliente/servidor
Se comunican con el
servidor
De manera intermitente
Con IPs dinmicas o fijas
No se comunican
directamente entre ellos
Aplicacin 2-7
Arquitectura P2P
El servidor no est
siempre-ON
Los sistemas finales se peer-peer
comunican entre si de
manera arbitraria
Los peers se comunican
de manera intermintente
y con direcciones IP
distintas en cada ocasin
muy escalable pero difcil
de gestionar
Aplicacin 2-8
Aplicacin
Interfaz Usuario
Protocolo aplicacin
A_PDU
T_SAP
Aplicacin
T_SAP
Transporte
Transporte
Internet
Internet
Reglas de cmo y
cundo los procesos
envan y responden a los
mensajes
Protocolos de dominio
pblico:
definidos en RFCs
Permiten la interoperatibilidad
Ej: HTTP, SMTP
Protocolos propietarios:
Ej: Skype
Aplicacin 2-11
Sockets (SAP)
Un proceso enva/recibe
mensajes a/de su socket
Analoga con una puerta:
El proceso emisor enva el
mensaje a travs de la
puerta de salida
El proceso emisor confa en
la infraestructura de
transporte que hay detrs
de la puerta, encargada de
llevar el mensaje hasta la
puerta del receptor
cliente o
servidor
cliente o
servidor
proceso
Controlado por
el desarrollador
proceso
socket
socket
TCP con
buffers,
variables
Internet
TCP con
buffers,
variables
Controlado
por el SO
Aplicacin 2-15
Ejemplo
Servidor web DTE
Interfaz Usuario
Interfaz Usuario
Aplicacin
Aplicacin
150.214.141.196, 80
Transporte
Transporte
Internet
Internet
Aplicacin 2-16
proceso1
proceso2
socket1
socket2
Servicio
Servicio de
de
Comunicacin
Comunicacin de
de
Internet
Internet S.O.
S.O.
P: Por qu el Servicio de
Comunicacin del sistema final
es capaz de distinguir a cada
proceso?
Aplicacin 2-17
Tasa de transferencia
Algunas requieren una
tasa mnima para
funcionar adecuadamente
(ej: multimedia)
Otras, conocidas como
aplicaciones elsticas,
hacen uso de la tasa
disponible en cada
momento
Seguridad
Encriptacin, integridad
de los datos,
Aplicacin 2-18
transferencia ficheros
e-mail
pginas web
audio/vdeo en
tiempo real
audio/vdeo archivado
juegos interactivos
mensajera instantnea
sin prdidas
sin prdidas
sin prdidas
tolerante
tolerante
tolerante
sin prdidas
elstica
elstica
elstica
audio: 5kbps-1Mbps
vdeo:10kbps-5Mbps
como la anterior
varios kbps
elstica
no
no
no
S, 100s ms
S, pocos segs
S, 100s ms
S y no
Aplicacin 2-19
Servicio UDP:
Transporte ligero, no
orientado a conexin y no
confiable entre procesos
emisor y receptor
No provee: acuerdo previo
entre procesos, fiabilidad,
contol de flujo, control de
congestin, temporizacin,
ancho de banda
garantizado, ni seguridad.
P: Qu utilidad tiene UDP?
Aplicacin 2-20
Protocolo del
nivel de aplicacin
Protocolo de
transporte
TCP
TCP
TCP
TCP
TCP
o UDP
usualmente UDP
Aplicacin 2-21
Aplicacin 2-22
equipos y routers de
Internet:
direcciones IP (32 bit)
sirven para direccionar
datagramas
nombre, ej:
www.google.com usado
por humanos
Aplicacin 2-23
DNS
por qu no centralizar el
Servicio DNS
Traduccin de nombre a IP servicio de DNS?
nico punto de falla
(directa)
Traduccin de IP a nombre Volumen de trfico
(inversa)
Distancia a la base de
Creacin de alias
datos
Mantenimiento
Alias de email
en definitiva...
@dominio
Distribucin de carga
no sera escalable!
Servidores web replicados: Usa UDP
conjunto de Ips para un nico
El cliente enva mensajes
nombre cannico
al puerto 53 del servidor
a travs del socket. Aplicacin 2-24
Aplicacin 2-25
no encuentre la entrada.
Enva un mensaje (DNS_PDU) de Solicitud de DNS al servidor de
DNS que tenga configurado y se espera a recibir la Respuesta de
DNS del servidor con la informacin solicitada que entregar a la
aplicacin que solicit su servicio.
En caso de que no sea posible resolver un nombre o una direccin IP
avisa a la aplicacin que solicit su servicio
Nota
Un servidor de DNS al recibir una Solicitud DNS se comporta como el
servicio de DNS en el sistema final, busca en su cach y consulta a otros
servidores de DNS si no encuentra la informacin solicitada.
Aplicacin 2-26
Servicio
Cliente
Servidor
Transporte
Nivel
Nivel
No fiable
Aplicacin
Aplicacin
Envo DNS_PDU
Servicio no confirmado
Recepcin DNS_PDU
Envo DNS_PDU
Recepcin DNS_PDU
tiempo
tiempo
Aplicacin 2-27
Aplicacin 2-28
WWW (World-Wide-Web)
Primero, un repaso
Una pgina web contiene una serie de objetos
Esos objetos pueden ser: fichero HTML, imagen
JPEG, applet Java, fichero audio,
Consiste en un fichero base HTML que incluye
objetos referenciados
Cada objeto es direccionable a travs de su URL
Ejemplo de URL (Uniform Resource Locator):
www.informatica.us.es/index.php/organizacion-docente
host name
path name
(nombre de la ruta
al objeto en el servidor)
Aplicacin 2-29
Nota
Vistazo de HTTP
HTTP: HyperText
Transfer Protocol
Protocolo de nivel de
aplicacin para la web
Modelo cliente/servidor
cliente: navegador que
pide, recibe y muestra
los objetos web
servidor: proceso que
enva los objetos
pedidos por los clientes
Pet
ici
nH
TT
R
PC corriendo esp
P
u
e
s
IExplorer
ta
HT
TP
TP
T
nH
TP Servidor
i
T
c
i
t
H
corriendo
a
Pe
t
s
e
servidor web
spu
e
R
Apache
Linux corriendo
Firefox
Aplicacin 2-31
HTTP persistente
Se pueden enviar
multiples objetos por
una misma conexin
TCP entre cliente y
servidor.
Aplicacin 2-33
HTTP No-persistente
Supongamos que un usuario introduce esta URL:
http://www.dte.us.es/personal/smartin/lab3/referencias.html
(contiene texto y
referencias a 13 objetos)
Cliente
1a.
Servidora
1b.
2.
3.
4.
Aplicacin 2-34
Servicio no confirmado
HTTP Persistente
Inconvenientes del HTTP nopersistente:
Requiere 2 RTTs por objeto
(ms lo que tarde en
transmitirse dicho objeto).
Sobrecarga SO con cada
conexin TCP
Nota
Conexiones HTTP en paralelo:
Los navegadores a menudo
abren varias conexiones TCP
en paralelo para obtener los
objetos referenciados ms
rpidamente, los cuales se
piden de forma simultnea por
cada conexin (sean estas
persistentes o no).
HTTP persistente
El servidor mantiene la
conexin abierta tras
enviar la respuesta
Los siguientes mensajes
HTTP entre el mismo
cliente y el servidor se
envan por la conexin
abierta
El cliente enva una nueva
peticin cuando acaba de
recibir el objeto anterior
Cada objeto referenciado
tarda slo 1 RTT (ms lo
que tarde en transmitirse
dicho objeto).
Aplicacin 2-36
Respuesta HTTP:
Enviada por el servidor
Transporta si procede el objeto (HTTP_UD)
solicitado por el cliente adems de informacin de
control (HTTP_PCI)
Aplicacin 2-37
<CR>: Carriage-Return : \r
<LF>: Line-Feed: \n
UD
Lnea de peticin
(comandos GET,
POST, HEAD)
Carcter retorno-de-carro
Carcter nueva-lnea
de cabecera
Aplicacin 2-38
Aplicacin 2-39
PDU
lneas de
cabecera
PCI
Cuerpo
UD
Aplicacin 2-40
Mtodo POST:
Los parmetros se suben al servidor
en el CUERPO de la peticin
Mtodo GET:
Las entradas se pasan al servidor en
la propia URL, con la lnea de peticin
(separado por ? y &):
GET /buscar?monos&platanos HTTP/1.1\r\n
Host: www.unbuscador.com\r\n
Aplicacin 2-41
Tipos de mtodos
HTTP/1.0 (RFC-1945)
GET
POST
HEAD
Idntico al GET, salvo
que no se incluye el
objeto en el cuerpo de
la respuesta (slo las
cabeceras
correspondientes)
HTTP/1.1 (RFC-2616)
GET, POST, HEAD
PUT
Sube el fichero en el
CUERPO de la peticin
al path especificado en
la URL
DELETE
Borra del servidor el
fichero especificado en
la URL
Aplicacin 2-42
CUERPO
ej: archivo
HTML pedido
Aplicacin 2-43
Aplicacin 2-46
Cliente visita
AMAZON
ebay 8734
Almacn cookies
ebay 8734
amazon 1678
Servidor de
AMAZON
Mensaje pet. normal
Mensaje resp. normal +
Set-cookie: 1678
Mensaje pet. Normal +
cookie: 1678
Amazon crea
el ID 1678
para el usuario creacin
entrada
accin
acceso
especfica
de la cookie
Back-end
acceso
Mensaje pet. normal +
cookie: 1678
accin
especfica
de la cookie
Aplicacin 2-48
Cookies: discusin
Posibles aplicaciones:
autorizacin
carritos de la compra
recomendaciones
mantenimiento de
sesin de usuario (ej:
webmail)
Nota
cookies y la intimidad:
las cookies permiten a
los sitios conocer
mucho sobre ti
puedes estar dando
informacin personal a
esas pginas: emails,
nombres, etc...
Aplicacin 2-49
i
P
TP
tic
cliente puest
T
e
P
aH
aH
t
todas las peticiones
TT
s
ue
P
p
s
Re
P
HTTP al Proxy
T
T
objeto en la cach: se
devuelve el objeto
si no: cach solicita el
objeto al servidor
original y lo devuelve al
cliente.
P
nH
T
i
c
T
ti
Pe
a H Proxy
t
s
ue
p
server
s
Re
cliente
servidor
original
Aplicacin 2-50
por qu es interesante?
Reducir el tiempo de
respuesta de la
peticin del cliente
Reducir el trfico de
enlace de datos de una
institucin
Permitir a proveedores
pequeos entregar
de forma eficiente los
contenidos (algo que
tambin permite P2P)
Aplicacin 2-51
GET Condicional
Objetivo
Que el servidor web no enve el objeto si
la cach tiene una versin
actualizada del mismo
Servidor
Proxy o Cach
Proxy (o cach del
navegador): especifica la
Peticin HTTP
fecha de la copia cacheada en
Si el objeto NO
If-modified-since:<fecha>
fue modificado
la peticin HTTP
If-modified-since: <date>
Respuesta HTTP
despus de
<fecha>
Peticin HTTP
If-modified-since:<fecha>
Last-modified:<fecha>
HTTP/1.0 200 OK
Last-modified:<fecha>
Respuesta HTTP
Si el objeto S
fue modificado
despus de
<fecha>
<data>
Aplicacin 2-52
Aplicacin 2-53
Programacin de Sockets
Objetivo: aprender cmo se programa una aplicacin
cliente/servidor que se comunique usando sockets
Socket API
Se introdujo en BSD4.1
UNIX, 1981
Los sockets se crean, usan y
liberan de forma explcita
por las aplicaciones
Paradigma cliente/servidor
2 tipos de servicios:
No fiable, orientado a
datagramas (UDP)
Fiable, orientado a flujo
de bytes (TCP)
socket
Un interfaz del equipo
local, creado por una
aplicacin y controlado
por el SO (una puerta)
por la que el proceso de
aplicacin puede tanto
envar/recibir mensajes
a/desde otros procesos
remotos (o incluso locales)
Aplicacin 2-54
Protocolo aplicacin
Cliente
Servidor
Interfaz Usuario
Interfaz Usuario
Aplicacin
Aplicacin
Dir IP servidor, puerto
Transporte
Transporte
Internet
Internet
Aplicacin 2-55
Controlado por el
desarrollador de
la aplicacin
Controlado por
el Sist.Operativo
proceso
proceso
socket
TCP con
buffers,
variables
socket
TCP con
buffers,
variables
Cliente o
servidor
internet
Controlado por el
desarrollador de
la aplicacin
Controlado por
el Sist.Operativo
Cliente o
servidor
Aplicacin 2-56
(corriendo en hostid)
crea socket-servidor,
puerto=x, para
recibir peticiones:
welcomeSocket =
ServerSocket()
Esperar primitiva:
Conexin.indication
Conexin.response
Esperar primitiva:
Data.indication
TCP setup
espera peticiones
de conexin entrantes establecimiento
connectionSocket =
de la conexin
welcomeSocket.accept()
Enviar primitiva:
lee peticin de
connectionSocket
escribe respuesta a
connectionSocket
cierra
connectionSocket
hostid = IP o nombre
Cliente
Enviar primitiva:
Conexin.request
Esperar primitiva:
Conexin .confirm
Enviar primitiva:
Data.request
lee respuesta de
clientSocket
cierra
clientSocket
Aplicacin 2-58
Process
proceso
cliente
output
output
stream
stream
monitor
monitor
inFromUser
inputinput
stream
stream
outToServer
keyboard
teclado
inFromServer
Stream de Java
inputinput
stream
stream
Socket
clientSocket
cliente TCP
to network
a la capa
de transporte
TCP
socket
from network
de la capa
de transporte
Aplicacin 2-59
Crea
input stream
Crea objeto
clientSocket
de tipo Socket,
conecta al servidor
Crea
output stream
conectado al socket
Aplicacin 2-61
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
Enviar primitiva:
Data.request
Envia lnea
al servidor
outToServer.writeBytes(sentence + '\n');
Lee lnea
del servidor
Esperar primitiva:
Data.indication
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
Cierra socket
clientSocket.close();
}
}
Aplicacin 2-62
Crea
socket de acogida
en el puerto 6789
El socket de acogida espera
con el mtodo accept()
al contacto de un cliente,
retorna un nuevo socket
Crea
input stream
conectado al socket
Aplicacin 2-63
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
PDU
Esperar primitiva:
clientSentence = inFromClient.readLine();
Data.indication
Lee lnea
del socket
outToClient.writeBytes(capitalizedSentence);
connectionSocket.close();
}
}
Enviar primitiva:
PDU
Data.request
Aplicacin 2-65
Aplicacin 2-66
(corriendo en hostid)
crea socket-datagrama,
puerto= x, para
solicitudes entrantes
serverSocket =
DatagramSocket()
crea socket-datagrama,
clientSocket =
DatagramSocket()
Esperar primitiva:
Data.indication
lee solicitud de
serverSocket
Cliente
escribe respuesta en
serverSocket
especificando
direccin IP
y n de puerto
hostid = IP o nombre
lee datagrama de
clientSocket
cierra
clientSocket
Aplicacin 2-67
proceso
Process
monitor
monitor
inFromUser
keyboard
teclado
Entrada: recibe
cliente
paquete (TCP
reciba streams
de bytes)
UDP
Paquete
packet
UDP
receivePacket
paquete (TCP
enviaba streams
de bytes)
sendPacket
Salida: enva
UDP
Paquete
packetUDP
Socket
cliente UDP
clientSocket
to network
a la capa
de transporte
UDP
socket
from network
de la capa
de transporte
Aplicacin 2-68
Crea
input stream
Crea socket UDP
en puerto libre
Traduce nombre
del servidor
a direccin IP
usando DNS
class UDPClient {
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("hostname");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
Aplicacin 2-69
A_PDU
T_ICI
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
Enva T_IDU
T_IDU
Creamos T_IDU
en blanco
Data.request
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
Recibimos
T_IDU
Enviar primitiva:
Esperar primitiva:
Data.indication
String modifiedSentence =
new String(receivePacket.getData(),0,
String(receivePacket.getLength());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
Aplicacin 2-70
class UDPServer {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
Creamos T_IDU
en blanco
Recibimos
T_IDU
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
Esperar primitiva:
Data.indication
Aplicacin 2-71
Obtiene de la
T_ICI la direccin
IP y n de puerto
del emisor
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Enva
T_IDU
serverSocket.send(sendPacket);
}
}
}
Departamento de
Tecnologa Electrnica
Redes de Computadores
Tema 2: Nivel de Aplicacin
EJERCICIOS
Aplicacin 2-73
Pr2: Aplicacin-Transporte
Un cliente HTTP desea recuperar un documento web que
se encuentra en una URL dada. Inicialmente, la direccin
IP del servidor HTTP es desconocida.
Aplicacin 2-75
Aplicacin 2-76
Aplicacin 2-77
Aplicacin 2-78
Aplicacin 2-79
En consecuencia tenemos:
Internet
institucional
Enlace de acceso
1,5 Mbps
10 Mbps LAN
Uso de la LAN ?
Uso del enlace?
Retardo total medio?
Comentarios?
Servidores
originales
Internet
Enlace de acceso
10Mbps
Red
institucional
10 Mbps LAN
Aplicacin 2-81
Instalar proxy-cach
Supongamos tasa xito 0.4:
Internet
Uso de la LAN ?
Uso del enlace?
Retardo total medio?
Comentarios?
Enlace de acceso
1,5 Mbps
Red
institutional
10 Mbps LAN
Proxy
institucional
Aplicacin 2-82