Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... ·...

31
2: Capa Aplicación 1 Capítulo 2: Capa Aplicación Web y HTTP ELO322: Redes de Computadores Agustín J. González Este material está basado en: Material de apoyo al texto Computer Networking: A Top Down Approach Featuring the Internet. Jim Kurose, Keit.

Transcript of Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... ·...

Page 1: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 1

Capítulo 2: Capa AplicaciónWeb y HTTP

ELO322: Redes de ComputadoresAgustín J. González

Este material está basado en: Material de apoyo al texto Computer Networking: A Top Down Approach Featuring the Internet. Jim Kurose, Keit.

Page 2: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 2

Capítulo 2: Capa Aplicación

2.1 Principios de las aplicaciones de red

2.2 Web y HTTP 2.3 Correo Electrónico

SMTP, POP3, IMAP 2.4 DNS

2.5 P2P para archivos compartidos

2.6 Video streaming y redes de distribución de contenidos

2.6 Programación de sockets con UDP y TCP

Page 3: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 3

Web y HTTP Una página Web está compuesta de objetos En este contexto objetos pueden ser archivos HTML,

imágenes (JPEG, GIF,...), archivos de audio, archivos de vídeo,…

Páginas Web consisten generalmente de un archivo HTML base el cual incluye referencias a objetos.

Cada objeto es direccionable por un Universal Resource Locator (URL)

Ejemplo URL:

http://www.elo.utfsm.cl/imgmenu/header.jpghttp://www.elo.utfsm.cl:80/imgmenu/header.jpg

Nombre de la máquina y puerto Nombre de camino (path name)

Page 4: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 4

HTTP Generalidades

HTTP: hypertext transfer protocol

Es un protocolo de la capa aplicación usado por la Web

Usa modelo cliente/servidor

cliente: browser primero requiere, luego recibe (usando HTTP) y “despliega” objetos Web

servidor: Servidor Web envía (usando HTTP) objetos en respuesta a requerimientos

PC runningExplorer

Server running

Apache Webserver

Smartphone conNavegator

HTTP request

HTTP request

HTTP response

HTTP response

Page 5: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 5

HTTP generalidades (cont.)

Usa TCP:1) Cliente inicia conexión TCP

(crea socket) al servidor, puerto 80 (puede ser otro!)

2) Servidor acepta conexión TCP del cliente

3) Mensajes HTTP (mensajes del protocolo de capa aplicación) son intercambiados entre browser (cliente HTTP) y servidor Web (servidor HTTP)

4) Se cierra la conexión TCP

HTTP no guarda “estado” El servidor no mantiene

información sobre los requerimientos del clientes

Protocolos que mantienen “estado” son complejos!, ¿Por qué? Historia pasada (estado)

debe ser mantenida Si servidor o cliente se cae,

las vistas del estado pueden ser inconsistentes, y deben ser sincronizadas

Page 6: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 6

Conexiones HTTPHTTP No-persistente A lo más un objeto es

enviado por una conexión TCP.Luego conexión es cerrada.

Para bajar múltiples objetos se deben hacer múltiples conexiones.

HTTP Persistente Múltiples objetos pueden

ser enviados por una única conexión TCP entre el cliente y servidor.

PC runningNavegador

Server running

Apache Webserver

HTTP response

Request y response por la misma conexión

Page 7: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 7

HTTP no-persistenteSupongamos que el usuario ingresa URL

www.someSchool.edu/someDepartment/home/index

1a. Cliente HTTP inicia una conexión TCP al servidor HTTP (proceso) en www.someSchool.edu en puerto 80

2. Cliente HTTP envía mensaje de requerimiento (conteniendo el URL) por el socket de la conexión TCP. El mensaje indica que el cliente quiere el objeto someDepartment/home/index

1b. Servidor HTTP en host www.someSchool.edu esperando por conexiones TCP en puerto 80 “acepta” conexión, notifica al cliente

3. El servidor HTTP recibe el mensaje de requerimiento, forma el mensaje de respuesta que contiene el objeto requerido y envía el mensaje por su socket.tiempo

(contiene texto, yreferencias a 10 imágenes jpeg )

Page 8: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 8

HTTP no-persistente (cont.)

5. Cliente HTTP recibe el mensaje respuesta que contiene el archivo html y despliega el html. Analizando el archivo html file, encuentra 10 referencias a objetos jpeg

6. Pasos 1-5 son repetidos para cada uno de los 10 objetos jpeg.

4. Servidor HTTP cierra la conexión.

tiempo

Page 9: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 9

No-persistente: tiempo de Respuesta

Definición de RTT(round-trip time):

tiempo de ida y vuelta de un

paquete pequeño desde que sale

de cliente, llega al servidor, y hasta

que regresa.

Tiempo de respuesta:

Un RTT para iniciar la conexión

Un RTT por requerimiento

HTTP y primeros bytes de la

respuesta

Tiempo de transmisión del

archivo

Total HTTP no-persistente = 2RTT +

tiempo de transmisión

time to transmit file

initiate TCPconnection

RTT

requestfile

RTT

filereceived

time time

Page 10: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 10

HTTP PersistenteAnálisis de HTTP no-persistente:

requiere al menos 2 RTTs por objeto

el navegador abre conexiones paralelas generalmente para traer objetos referenciados.

OS debe trabajar y dedicar recursos para cada conexión TCP

HTTP Persistente

servidor deja las conexiones abiertas después de enviar la respuesta

mensajes HTTP siguientes entre los mismos cliente/servidor son enviados por la conexión

Clientes envían requerimientos tan pronto encuentra una referencia a objeto

Poco más de un RTT para solicitar todos los objetos

Page 11: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 11

HTTP No persistente: un .html chico con varios objetos en él

time to transmit file .html

Request file

File received

time time

time to transmit file

Initiate another TCP connection

Request file

File received

En todos estos diagramas suponemos que los objetos caben en un segmento (=paquete) TCP.

Conexiones posteriores podrían ser paralelas.

initiate TCPconnection

Page 12: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 12

HTTP persistente

time to transmit File html

initiate TCPconnection

Request file

File received

time time

time to transmit file

Request file

File received

Request file

File received

Page 13: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 13

Mensaje HTTP de requerimiento Dos tipos de mensajes HTTP: requerimiento y respuesta Mensaje de requerimiento HTTP:

ASCII (es decir, formato legible)

GET /somedir/page.html HTTP/1.1\r\nHost: www.someschool.edu\r\nUser-agent: Firefox/3.6.10.0\r\nConnection: keep-alive\r\nKeep-Alive: 115\r\nAccept-language:fr\r\nConnection: keep-alive\r\n\r\n

Carriage return, line feed al inicio de

la línea Indica fin de mensaje

Líneas de encabezado

Línea de requerimiento (métodos GET, POST,

HEAD, PUT, Delete)

Page 14: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 14

Mensaje HTTP de requerimiento: formato general

Page 15: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 15

Subiendo datos de formularioVía Método Post: Páginas Webs usualmente incluyen entradas de

formularios Los datos son subidos al servidor en el cuerpo del

mensaje

Vía Método URL: Usa método GET Entrada es subida en campos URL de la línea de

requerimiento:

www.somesite.com/animalsearch?monkeys&banana

Page 16: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 16

Tipos de Métodos

HTTP/1.0 GET POST HEAD

Pide al servidor que deje el objeto requerido afuera de la respuesta. Respuesta incluye sólo el encabezado.

HTTP/1.1 GET, POST, HEAD PUT

Sube archivos en cuerpo del requerimiento en localización indicada por el campo URL

DELETE Borra archivo especificado

en el campo URL

Page 17: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 17

Mensajes HTTP de respuesta

HTTP/1.1 200 OK\r\n Date: Thu, 06 Aug 1998 12:00:15 GMT\r\nServer: Apache/2.0.52 (CentosOS)\r\n Last-Modified: Sun, 30 Jun 2016 17:00:02 GMT\r\nContent-Length: 6821\r\n Content-Type: text/htmlConnection: Keep-Alive\r\nKeep-Alive: timeout=10, max=100\r\n\r\n data data data data data ...

Línea de estatus(código de estatus

del protocoloFrase de estatus)

data, e.g., archivo

HTML solicitado

Líneas deencabezado

Page 18: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 18

Códigos HTTP de respuesta

200 OK request exitoso, objeto requerido es incluido luego en mensaje

301 Moved Permanently Se movió el objeto requerido, nueva ubicación es especificada luego

en el mensaje (Location:)

400 Bad Request Requerimiento no entendido por el servidor

404 Not Found Documento no encontrado en servidor

505 HTTP Version Not Supported

En primera línea de respuesta del servidor al cliente.Algunos códigos de muestra:

Page 19: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 19

Probando HTTP (lado cliente) 1. Telnet a tu servidor favorito:

Telnet abre una conexión TCP al puerto 80 (puerto servidor HTTP poromisión) en profesores.elo.utfsm.cl.Cualquier cosa ingresada es enviadaa puerto 80 de mateo

telnet profesores.elo.utfsm.cl 80

2. Escribir un requerimiento GET HTTP:GET /~agv/elo322/HTTP/prueba.html HTTP/1.1Host: profesores.elo.utfsm.cl

NOTA: Campo Host es obligatorioen encabezado, requerido por proxy.

Tipeando esto (doble carriagereturn), enviamos un GET requestmínimo (pero completo) al servidorHTTP

3. Observar el mensaje de respuesta enviado por el servidor HTTP!

Hacer algo similar con navegador y wireshark

Page 20: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 20

Cómo conocer estado usuario-servidor: cookies

Muchos sitios Web importantes usan cookies Las cookies fueron implementadas para permitir

personalizar la información Web. Cookies es información generada por un Web server y

almacenada en el computador del usuario para acceso futuro.

Las cookies son trasportadas entre el computador del usuario y el servidor.

Por ejemplo, cookies son usadas para almacenar ítems en un carro de compra mientras recorres un mall virtual.

Page 21: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 21

Estado usuario-servidor: cookies

Cuatro Componentes:1) Línea encabezado

cookie en el mensaje respuesta HTTP

2) Archivo cookie es almacenado en la máquina del usuario y administrada por su navegador.

3) Línea de encabezado cookie en requerimiento HTTP

4) Base de datos en sitio Web

Ejemplo: Susan accede Internet siempre

desde el mismo PC Ella visita un sitio e-commerce

específico por primera vez. Cuando el requerimiento HTTP

inicial llega al sitio, éste crea un ID único y lo guarda en la base de datos para ese ID.

En mensaje respuesta va información del sitio e ID (cookie)

El navegador de Susan almacena la cookie en disco.

En nuevo acceso al sitio, el navegador incluye ID. Así ese sitio sabrá que el mismo usuario reaparece.

Page 22: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 22

Cookies: conservando el “estado” (cont.)

amazon

cliente servidor

respuesta http usual

Acciónespecífica

de la cookie

respuesta http usual

Acciónespecífica

de la cookie

Entrada en

base de datos

Requerimiento httpCookie fileEbay: 8734

acceso

requerimiento httpcookie: 1678

Servidor creaID 1678

para usuarioRespuesta http +Set-cookie: 1678

Cookie fileEbay: 8734

Amazon: 1678

acce

soUna semana más:

requerimiento httpcookie: 1678Cookie file

Ebay: 8734Amazon: 1678

Page 23: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 23

Cookies (cont.)Qué usos pueden tener las

cookies: Autorización Shopping carts Sugerencias Estado de la sesión del

usuario (Web e-mail)Cómo conservar estado:

Los de lados extremos mantienen el estado de Tx/Rx a través de transacciones múltiples usando cookies

Usando cookies mensajes HTTP llevan estado.

Cookies y privacidad: Cookies permiten que el

sitio aprenda mucho sobre uno.

Podríamos proveer nombre y correo al sitio, y éste lo recuerda.

Page 24: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 24

client

proxyserver

client

HTTP request

HTTP response

HTTP request HTTP request

origin server

origin server

HTTP response HTTP response

Objetivo: satisfacer el requerimiento del cliente sin involucrar al servidor destino.

Web caches (también servidores proxy)

Usuario configura el browser: Acceso Web vía proxy

Browser envía todos los requerimientos HTTP al proxy Si objeto está en cache:

cache retorna objeto Si no, cache requiere los

objetos desde el servidor Web, los almacena y retorna el objeto al cliente.

Page 25: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 25

Caches v/s proxy La idea del cache es almacenar “localmente” datos ya solicitados y

así poder acceder a éstos más rápidamente en el futuro. Un problema que debe atender el cache es la obsolescencia

que puede tener los datos locales. El cache puede usar tiempos de expiración, o consultar a la

fuente por vigencia del dato local.

Un proxy es un servicio que consiste en realizar una solicitud a pedido de otro.

¿Les ha pasado que para algunas cosas ustedes desean pedir a otro enviar un mensaje por ustedes?

Por ejemplo podemos usar proxy para acceder a servicios externos de una intranet, para que desde fuera no se sepa qué computadores hay dentro. Los servidores verán un mismo origen para todas las consultas de la intranet.

Es muy conveniente instalar un cache en un proxy.

Page 26: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 26

Más sobre Web caching

Un proxy-cache actúa como cliente y servidor

Típicamente el proxy-cache es instalado por ISP (universidad, compañía, ISP residencial)

Por qué Web caching? Reduce tiempo de

respuesta a las peticiones del cliente.

Reduce tráfico en el enlace de acceso al ISP.

Internet densa con caches permite a proveedores de contenido “chicos” (poco $$) entregar contenido en forma efectiva.

Page 27: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 27

Ejemplo de CacheSuposiciones Tamaño promedio de objetos = 100

Kbits Tasa de requerimientos promedio

desde browsers de la institución a servidores WEB = 15/sec

=> Datos promedios a browsers 1.50 Mbps (=15*100 kbps).

Retardo desde el router institucional a cualquier servidor web y su retorno = 2 sec

Consecuencias utilización de la LAN =0.15% utilización del enlace de acceso = 99% Retardo total = retardo Internet +

retardo de acceso + retardo LAN

= 2 sec + minutos + microsec

Servidoresweb

Internetpública

Red institucional

1 Gbps LAN

1.54 Mbps Enlace se acceso

Sin Cache institucional

Hay cuello de botella en la entrada.

Page 28: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 28

Ejemplo de Cache (cont)

Posible solución Aumentar ancho de banda del

enlace, por ejemplo, a 15.4Mbps

Consecuencias Utilización de la LAN = 0.15% Utilización del enlace de acceso

= 9.9% Retardo Total = Retardo

Internet + retardo de acceso + retardo LAN

= 2 sec + msec + microsecs A menudo un upgrade caro.

Servidoresweb

Internetpública

Red institucional

1 Gbps LAN

15.4 Mbps Enlace se acceso

Sin Cache institucional

Page 29: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 29

Ejemplo de cache (cont)Instalar un web Cache Supongamos tasa de éxito1 (acierto) de

0.4Consecuencias 40% de los requerimientos serán

satisfechos en forma casi inmediata (~ msec) + consulta por obsolescencia

60% de los requerimientos satisfechos por servidores WEB

Utilización del enlace de acceso por browsers = 0.6*1.5 Mbps=0.9 Mbps

Utilización enlace =0.9/1.54=0.58 Retardo total = Retardo Internet +

retardo acceso + retardo LAN = 0.6*(retardo de servidores web) + 0.4*(retardo respuesta cache)= 0.6*(2.xx) +0.4*(~msec) =~1.2 sec

ServidoresWeb

1Tasa de éxito: Fracción de los requerimientos satisfechos por el cache.

40% Se debe agregar tiempo paraconfirmar que dato en cache es vigente.

1 Gbps LAN

1.54 Mbps enlace de acceso

public Internet

Cacheinstitucional

Redinstitucional

Page 30: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 30

Get Condicional

Objetivo: verificar que el cache tiene la versión actualizada de un objeto

Cache: especifica la fecha de la copia en el requerimiento HTTPIf-modified-since: <date>

Servidor: responde sin el objeto si la copia de la cache es la última. : HTTP/1.0 304 Not Modified

cache servidor

HTTP request msgIf-modified-since:

<date>

HTTP responseHTTP/1.0

304 Not Modified

object no

modificado

HTTP request msgIf-modified-since:

<date>

HTTP responseHTTP/1.0 200 OK

<data>

object modificado

Page 31: Capítulo 2: Capa Aplicación Web y HTTPprofesores.elo.utfsm.cl/~agv/elo322/1s19/lectures/2.2... · 2019-03-18 · Es un protocolo de la capa aplicación usado por la Web Usa modelo

2: Capa Aplicación 31

Capítulo 2: Capa Aplicación

2.1 Principios de las aplicaciones de red

2.2 Web y HTTP 2.3 Correo Electrónico

SMTP, POP3, IMAP 2.4 DNS

2.5 P2P para archivos compartidos

2.6 Video streaming y redes de distribución de contenidos

2.6 Programación de sockets con UDP y TCP