82
The Architecture of Internet Applications Prof. Juan Quemada UPM Friday, March 4, 2011

La Arquitectura de las Aplicaciones de Internet

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: La Arquitectura de las Aplicaciones de Internet

The Architecture of Internet Applications

Prof. Juan QuemadaUPM

Friday, March 4, 2011

Page 2: La Arquitectura de las Aplicaciones de Internet

El Modelo Cliente - Servidor

Programación de aplicaciones distribuidas en TCP/IP 4Clientes: dan acceso a los servicios

4Servidores: proveen datos, información, servicios, ...• Son públicos (dirección fija y conocida: URL, ..)

Cliente y Servidor son roles en una aplicación4Un ordenador puede ser cliente y servidor simultaneamente

Conexión

Friday, March 4, 2011

Page 3: La Arquitectura de las Aplicaciones de Internet

Servicios TCP-UDP/IP

Servicio TCP4Servicio fiable orientado a conexión

• Denominado también de “circuitos virtuales”

Servicio UDP4Servicio no fiable de envío de datagramas (paquetes)

• Puede haber perdida, desorden o duplicación de datagramas

4Denominado también servicio “sin conexión” (connectionless)

Friday, March 4, 2011

Page 4: La Arquitectura de las Aplicaciones de Internet

Dirección de Máquina y de Aplicación

Dirección IP (o de red): 4identifica una máquina (host)

• 192.2.3.122, 98.8.77.66, ...• dit.upm.es, google.com, ..• “localhost” (mi maquina): 127.0.0.1

Puerto: dirección de aplicación4Tienen 16 bits de longitud

• Los servidores usan direcciones prefijadas– HTTP: puerto 80– Daytime: puerto 13

...

...

Ordenador(host)

red

...

Aplic. 1dir. IP ...

puerto 0

puerto n

Aplic. 2

Friday, March 4, 2011

Page 5: La Arquitectura de las Aplicaciones de Internet

Arquitectura TCP/IP

5

Friday, March 4, 2011

Page 6: La Arquitectura de las Aplicaciones de Internet

Circuitos Virtuales y Sockets TCP

Socket TCP: transporte fiable de datos4orientado a conexión

• Las conexiones se denominan tambien circuitos virtuales

Cada circuito transporta datos de forma fiable4Envía flujos de datos, streams de bytes4Garantiza la entrega

• pero no un plazo de entrega

4Imposibilidad de entregar los datos • provoca la liberación del circuito

Conexión (circuito virtual)

Friday, March 4, 2011

Page 7: La Arquitectura de las Aplicaciones de Internet

Puertos y ServidoresCada “puerto” se asigna a un servidor

4Una misma maquina puede albergar varios servidores• En puertos diferentes

Los clientes tambien utilizan “puertos” 4Se suelen asociar solo para un acceso al servidor

...

...

máquina servidora

red ... ...

puerto 0

...

máquina de cliente

...

progr.serv. l

progr.serv. n

...cliente

m dir. IP1

dir. IP2 ...

puerto 0

puerto n

Friday, March 4, 2011

Page 8: La Arquitectura de las Aplicaciones de Internet

Sockets TCP de servidor y cliente

Existen 2 tipos de sockets4Socket de servidor

• Espera solicitudes de establecimiento de conexión– Las acepta cuando llegan si tiene recursos

4Socket de cliente• Gestiona la conexión, tanto en el cliente, como en el servidor

Un servidor acepta múltiples conexiones4Una para cada cliente que se conecte

• Cada conexión posee una cola de información independiente

Conexión (circuito virtual)

Conexión (circuito virtual)

Friday, March 4, 2011

Page 9: La Arquitectura de las Aplicaciones de Internet

Las aplicaciones de Internet

Friday, March 4, 2011

Page 10: La Arquitectura de las Aplicaciones de Internet

Las Aplicaciones de InternetLas aplicaciones son el motor del tráfico de Internet: Las mas usadas: Web (23%), P2P (23%) y Video (51%)

El mayor incremento de tráfico actual se debe al Video IP: YouTube, streaming, IP TV, …

Tráfico P2P y el Web estan perdiendo peso en el porcentaje global, aunque no importancia

Friday, March 4, 2011

Page 11: La Arquitectura de las Aplicaciones de Internet

Las primeras aplicaciones de InternetEl éxito de Internet se debe a sus aplicaciones

El carácter abierto de Internet produjo nuevas aplicaciones Los usuarios las creaban extendiendo aplicaciones existentes

e-mail: Evolución de mensajería entre usuarios de “mainfarmes” FTP (Transferencia de Ficheros): Evolución de COPY Otros:

Terminal Virtual, News, Gopher (pre–Web), ….

Los S.O. de entonces eran orientados a comando

Intercambian datos en ASCII (o ristras de octetos) Son legibles y fáciles de procesar

pero la compresión no es óptima11

Friday, March 4, 2011

Page 12: La Arquitectura de las Aplicaciones de Internet

Correo electrónico

Correo electrónico (email) Primer motor de uso de Internet

Todavía es una de las aplicaciones más utilizadas

Envía un mensaje electrónico entre dos buzones Dirección de buzón/usuario: “[email protected]

Protocolo SMTP (Simple Mail Trans. Prot., RFC821) Con el tiempo surgen otros protocolos: POP3, IMAP, ...

12

Friday, March 4, 2011

Page 13: La Arquitectura de las Aplicaciones de Internet

Ejemplo de mensaje

Asunto: Se han integrado los tunelesDe: Enrique Lopez <[email protected]>Fecha: Tue, 11 Sep 2007 10:49:08 +0200Para: [email protected], ....Message-ID: <[email protected]>Agente de usuario:: Thunderbird 1.5.0.13 (X11/20070824)…….Content-Length: 532

Hola a todos:

Esta mañana he terminado de integrar ……………..........Un saludoEnrique

Formato de mensaje definido en RFC 822 (1982) Solo permite texto ASCII en Cabecera y Cuerpo

Línea en blanco: separa Cabecera de Cuerpo

Friday, March 4, 2011

Page 14: La Arquitectura de las Aplicaciones de Internet

MIME

MIME (Multipurpose Internet Mail Extensions) Mensajes como acarreadores de contenidos

Múltiples formatos: texto, imágenes, aplicaciones, … Contenidos no-ASCII se encapsulan y se trans-codifican en

hexadecimal, uuencode, base 64, …

Definido en RFCs 2045-6, 2077, 3023, …. http://www.iana.org/assignments/media-types/

El uso de MIME se ha extendido a otros ámbitos: HTTP y Web, S.O., ...

14

Friday, March 4, 2011

Page 15: La Arquitectura de las Aplicaciones de Internet

Extensiónes MIME

MIME introduce 5 nuevos campos en un mensaje MIME-Version: indica la versión MIME utilizada

Ejemplo: “MIME-Version: 1.0” (acorde RFC1521) Content-Type: indica el tipo de contenido acarreado

Ejemplo: “Content-Type: text/html” Content-Transfer-Encoding: de octetos a ASCII

Códigos típicos: hexadecimal, uuencode, base 64, … Ejemplo: “Content-Transfer-Encoding: base64”

Content-ID: identificador único en la redEjemplo: “Content-ID: <[email protected]>”

Content-Description: texto descriptivo Ejemplo: “Content-Description: Pagina de prueba del servicio”

Friday, March 4, 2011

Page 16: La Arquitectura de las Aplicaciones de Internet

Tipos de contenidos MIMECampo Content-Type Tiene dos partes: tipo / subtipo

Tipos: “application”, “audio”, “image”, “message”, “model”, “multipart”, “text”, “video”,

extension-token IANA coordina la definicion de nuevos tipos/subtipos

http://www.iana.org/assignments/media-types/

Ejemplos: image/gif, image/jpeg, image/png, ... text/plain, text/html, message/rfc822, ...... application/postcript, application/msword, application/x-www-form-urlencoded, multipart/form-data, ...

Friday, March 4, 2011

Page 17: La Arquitectura de las Aplicaciones de Internet

Ejemplo de mensajeAsunto: Se han integrado los tunelesDe: Enrique Lopez <[email protected]>Fecha: Tue, 11 Sep 2007 10:49:08 +0200Para: [email protected], ....Message-ID: <[email protected]>Agente de usuario:: Thunderbird 1.5.0.13 (X11/20070824)MIME-Version: 1.0Content-Type: text/plain; charset="iso-8859-1"Content-Transfer-Encoding: 8bit…….Content-Length: 532

Hola a todos:

Esta mañana he terminado de integrar ……………..........Un saludoEnrique

Friday, March 4, 2011

Page 18: La Arquitectura de las Aplicaciones de Internet

Los 90: El WebInventado/propuesto por Tim Berners Lee (1989)

Es el almacén de contenidos que la red necesitaba Crece incesantemente hasta convertirse en

el mayor repositorio de información que haya existido nunca

Es un Servicio “Abierto”, “Escalable” y “Descentralizado” para Publicación de documentos “hypertexto” en la red

Alta usabilidad: “se navega haciendo click en enlaces”

Permite modelar las relaciones sociales Es un universo de mundos interconectados

Cada página es el comienzo de un mundo El dueño (autor) publica y enlaza con otras páginas libremente

18

Friday, March 4, 2011

Page 19: La Arquitectura de las Aplicaciones de Internet

Navegación Web: URLs, HTTP y HTML

Cada página HTML se identifica por un URL, por ejemplo http://mail.google.com/PaginaWeb.html

Cliente Web

Servidor Web

HTTP (URL)

El cliente recibe

y presenta página HTML

en Visor..

Servidor envía pag.

Web a cliente.

ClienteSolicita pag.con click en hiperenlace

HTTP - GET PaginaWeb.html HTTP 1.1

<PaginaWeb.html>

Friday, March 4, 2011

Page 20: La Arquitectura de las Aplicaciones de Internet

Los componentes del primer WebURI (URL) Dirección en la red de un documento o recurso

Ejemplo: http://www.upm.es/centros/etsit/personal.html Los hiperenlaces modelan

Relaciones o interacciones entre personas, información, empresas, … ¡¡Todo recurso Web posee un URL que lo identifica!!

HTML Lenguaje abierto de

descripción de documentos hipermedia, formularios, … ¡¡Permite navegación Web muy sencilla!!

HTTP Protocolo transaccional genérico

Protocolo sin estado (Stateless) -> ¡¡Servidores y servicio escalables!!

20

Friday, March 4, 2011

Page 21: La Arquitectura de las Aplicaciones de Internet

Evolución: Aplicaciones WebAplicaciones de servidor El Web permite acceso remoto a aplicaciones interactivas

Consulta y actualización de bases de datos

Aplicaciones de cliente HTML no es suficiente

Hay que mejorar la experiencia de usuario (velocidad, interactividad) Aparecen: CSS, Javascript, XML, AJAX, ....

“RIA: Rich Internet Applications” (Flex) Arquitecturas de objetos distribuidos (nuevo paradigma)

21

HTTP (URL)

HTML, XML, ..

Friday, March 4, 2011

Page 22: La Arquitectura de las Aplicaciones de Internet

El  Web• En  1989  Tim  Berners  Lee  comienza  el  desarrollo  del  Web

– Nivel  que  permite  construir  aplicaciones• Se  convierte  en  el  interfaz  universal  de  acceso  a  aplicaciones  

Friday, March 4, 2011

Page 23: La Arquitectura de las Aplicaciones de Internet

Clientes Web: Visor o NavegadorPrograma de acceso al Web Mucha funcionalidad y complejidad

Presentan HTML, XML o CSS, ejecutan Javascript, .... Se estan convirtiendo en S.O. Ejemplos: Explorer, Firefox, Chrome, Safari, Opera, …

23

Friday, March 4, 2011

Page 24: La Arquitectura de las Aplicaciones de Internet

Servidor WebGestor de recursos Web con HTTP Deben ofrecer servicios escalables que atiendan muchos usuarios

Servicios en la nube (cloud-computing) Google, Apple o Amazón tienen granjas de miles de servidores

Servicios en Ruby on Rails, Java Restlet, PHP Symphony, ..... Ejemplos: Apache, Tomcat, Microsoft IIS, …

24

Friday, March 4, 2011

Page 25: La Arquitectura de las Aplicaciones de Internet

Las  grandes  empresas  de  Internet  uClizan  “Cloud  CompuCng”  y  suelen  revenderlo  como  servicio: Amazon, Google, Facebook, Yahoo, Youtube, …

Paradigma  emergente  de  creación  de  servicios  escalables,  fiables,  ……  y  baratos– Con acceso ubicuo y global a través de Web– Minimiza costes con componentes baratos

– Utilizando tecnologías de virtualización

Cloud  Compu)ng  (Computación  en  la  Nube)

Friday, March 4, 2011

Page 26: La Arquitectura de las Aplicaciones de Internet

Amazon  Cloud  Compu-ng  Services

• La  Nube  permite  crear  servicios  virtualizados

– Pago  por  uso,  sin  inversión  inicial• Solo  3ene  costes  variables

– Accesible  con  interfaz  Web  Services

• Amazón  Web  Services

– Plataformas  virtualizadas:• Servidores,  computo,  bases  de  datos,  …

– Oferta  variada:  • S3,  EC2,  SQS,  RDS,  Elas3c  Map-­‐Reduce,  ….

Friday, March 4, 2011

Page 27: La Arquitectura de las Aplicaciones de Internet

Mobile  Internet  Compu2ng

Friday, March 4, 2011

Page 28: La Arquitectura de las Aplicaciones de Internet

Terminales:  evolución

Friday, March 4, 2011

Page 29: La Arquitectura de las Aplicaciones de Internet

Los componentes del Web: Resources, URL, HTML, CSS, Javascript, HTTP, ...

Friday, March 4, 2011

Page 30: La Arquitectura de las Aplicaciones de Internet

Recursos y URLs

Un recurso es cualquier cosa en Internet que “merezca la pena ser referenciada por si misma”

Un fichero, un mapa, un libro, una foto, un video, una base de datos, …..

Cada recurso se identifica con un URI El URI identifica y da acceso al recurso (HTTP)

El URI define también el formato del recurso

Un recurso debe tener un formato “conocido” Texto ASCII, HTML, XML, JSON, ….

Friday, March 4, 2011

Page 31: La Arquitectura de las Aplicaciones de Internet

URL: ejemplos

<prot>:<//><authority>/<path>?<query>#<frag> <authority> = <UserInfo@><host><:port>

prot: protocolo o esquema de acceso: http:, mailto:, ftp:, telnet:, ..

authority: identificación de servidor (host), puerto (port) y usuario Dirección de correo electrónico: mailto:[email protected] URLs Web con dominio o IP: http://dit.upm.es, http://138.15.12.223:8080

path: identificación de recurso (dentro el servidor) URL Web: http://www.bb.es/archivo/doc1.html URL de fichero: file:///usr/lib/registro.txt

query: Define valores de parámetros en formularios URL Web: http://www.bb.es/foto?nombre=Paco&apellido=Perez

frag: sección de un recurso (se denomina también: anchor, fragment, ref, …) URL Web: http://www.bb.es/archivo/doc1.html#seccion

Friday, March 4, 2011

Page 32: La Arquitectura de las Aplicaciones de Internet

Identificación de recursos

URI: Identificador de recurso uniforme Uniformiza el acceso a cualquier recurso de Internet

Definido en: RFC 2396 (98), RFC 2732 (99) y RFC 3986 (05) T. Berners-Lee, R. Fielding, L. Masinter, B. Carpenter

http://www.faqs.org/rfcs/rfc2396.html http://www.faqs.org/rfcs/rfc3986.html

Tipos de URI URL: Uniform Resource Locator

Localiza un recurso unívocamente en un lugar físico de la red Lugar físico: Recurso en un “host” de Internet

URN: Uniform Resource Name Nombre de un recurso, independiente de posición Se definió en la norma, pero se utiliza escasamente

Friday, March 4, 2011

Page 33: La Arquitectura de las Aplicaciones de Internet

Tecnologías de cliente para “Web as platform” Paradigma de aplicaciones desplegadas desde un servidor

Soportadas en visores Web: IE, Firefox, Safari, Chrome, ......

Tecnologías mas importantes HTML(HyperText Markup Language), HTML5

Lenguaje de marcado de texto para definir su estructura CSS (Cascading Style Sheets)

Lenguaje de definición de presentación visual Javascript

Lenguaje de programación de aplicaciones de cliente

Plataforma HTML o (HTML5)

33

Friday, March 4, 2011

Page 34: La Arquitectura de las Aplicaciones de Internet

Lenguaje de marcado: Define la estructura de un documento con marcas de texto

SGML (Standard Generalized Markup Language) Utilizado por la industria editorial: Norma ISO 8879:1986

HTML (HyperText Markup Language) Documentos Web con hiperenlaces, derivado de SGML Evolución de HTML

IETF publica: HTML (1993) y HTML2 (1995) W3C publica: HTML3.2 y 4.0 en 1997 y HTML 4.01 en 1999

Se promueve XHTML hasta 2008 W3C estima: HTML5 en 2012 (candidate rec.) y 2022 (prop. rec.)

Tutorial: http://www.dit.upm.es/~santiago/docencia/master/web/web.html http://www.w3schools.com/html/

Lenguaje de Marcado HTML

34

Friday, March 4, 2011

Page 35: La Arquitectura de las Aplicaciones de Internet

Marcado HTML Las marcas delimitan el principio y fin de un elemento: <TITLE> Titulo .. </TITLE> <H1> Cabecera nivel 1 </H1>, ...

Las marcas pueden llevar atributos <A HREF="http://www.dit.upm.es"> Dept. Ing. Telemática</A>

Algunas marcas de HTML pueden omitir el terminador <P> indica separador de párrafo en HTML

En XML, XHTML el terminador es obligatorio </P> o se puede utilizar una marca con sintaxis especial <P />

Algunos tutoriales http://www.dit.upm.es/~santiago/docencia/master/web/web.html http://www.w3schools.com/html/ http://www.html.net/tutorials/html/

Friday, March 4, 2011

Page 36: La Arquitectura de las Aplicaciones de Internet

Ejemplo de pagina HTML <HTML> <HEAD><TITLE>Ejemplo página HTML</TITLE></HEAD>

<BODY> <!-- Esto es un comentario -->

<H1> Ejemplo de Cabecera </H1>

Acceda al <A HREF="http://www.w3schools.com/html/"> tutorial de HTML de W3C Schools</A>. <p>

A continuación aparece una lista y una tabla

<UL id="lista" > <LI> elemento <FONT COLOR=red>rojo</FONT> </LI> <LI> elemento <STRONG>en negrita</STRONG> </LI><LI> elemento <SUB>con subíndice</SUB> </LI></UL>

<TABLE BORDER id="tabla"> <TR> <TD>Primera celda <br> de la tabla</TD> <TD><IMG SRC="iconos.gif"></TD> </TR> <TR> <TD>Celda 21</TD> <TD>Celda 22</TD> </TR></TABLE>

</BODY> </HTML>

Friday, March 4, 2011

Page 37: La Arquitectura de las Aplicaciones de Internet

Elementos HTML del ejemplo<HTML>: declaración de página HTML<HEAD>: cabecera no visible<BODY>: cuerpo visible<H1>: titulo de nivel 1

Sub-niveles: <H2>, <H3>, …<A HREF="http://....>: hipervínculo

El URL va en el atributo HREF <P> párrafo

Ejemplo de atributo: ALIGN=“center”<UL>: lista no numerada<OL>: lista numerada<LI>: elemento de lista <OL> o <UL><DL> Lista definida:

Tipo de elemento <dt> .... </dt> Definición de elemento <dd> ... </dd>

<.... id=“referencia”> fragment referencia a este elemento en URL como: #referencia

<FONT>: tipo de fuente<STRONG>: resaltar, mas fuerte que el resto

Otros: <SMALL>, <BIG>, <TT>, <Q>, ..<SUB>: subíndice

Superíndice: <SUP><TABLE BORDER>: definicion de tabla con borde

BORDER es un atributo opcional<TR>: fila de tabla<TD>: celda de tabla<IMG src=”URL”>: imagen

El URL de la imagen va en el atributo SRC

El ejemplo ilustra

Texto EnlacesListas Tablas

Se pueden encontrar masdetalles sobre HTML oXHTML en el Tutorial.

Forms y objetos (ejecutables)de ven más adelante. No serecomienda usar Frames.

Friday, March 4, 2011

Page 38: La Arquitectura de las Aplicaciones de Internet

HTML

HEAD BODY

TITLE

Ejemplo página HTML

H1 <!– --!>

Ejemplo decabecera

Accedaal A P

A cont. .....una lista y una tabla

UL TABLE.

HREF= http://ww ..” LI

FONT

COLOR=”red” rojo

LI

elemento STRONG

en negrita

LI

SUB

con subíndice

TR TR

TD TD TD TD

Primera celda BR de la

tabla IMG Celda21

Celda22

Esto es un comentario

Árbol sintáctico del ejemploÁrbol sintactico: Árbol definido por anidamientos de marcas

Cada bloque (<..> …. <..>) es un sub-arbol 3 tipos principales de nodos:

elemento: amarillo atributo: rosa texto: blanco

BORDERTutorial de

HTML de W3CSchools

elemento elemento

SRC=“Icono.gif”

Friday, March 4, 2011

Page 39: La Arquitectura de las Aplicaciones de Internet

Representación en arbol de HTMLUn marcado HTML bien construido genera un arbol sintactico Es utilizado por programas y herramientas para procesar HTML

Javascript: lenguaje para procesar paginas Web en HTML CSS: lenguaje de visualización “bonita” de páginas HTML

Un marcado bien construido debe anidar unas marcas dentro de otras Preservando la estructura de arbol

Ejemplo de marcado correcto: <H1> El <EM> Titulo </EM> es lo mas <B> importante </B> </H1>

Nunca deben solapse Ejemplo de marcado erróneo:

<H1> El <EM> Titulo </EM> es lo mas <B> importante </H1> </B>

DOM: Document Object Model API Javascript para acceder al arbol sintáctico de HTML

Friday, March 4, 2011

Page 40: La Arquitectura de las Aplicaciones de Internet

Javascript

Friday, March 4, 2011

Page 41: La Arquitectura de las Aplicaciones de Internet

JavascriptJavascript Lenguaje por excelencia de aplicaciones de cliente Sintaxis muy similar a Java

Pero la semantica es diferente Nombre:

inicialmente “LifeScript”, pasó a “JavaScript” al triunfar Java

Lenguaje de scripting integrado en código HTML Diseñado para ser ejecutado en el visor Web

Interprete analiza el código fuente Javascript Si es correcto lo ejecuta, sinó genera una excepción

Tutoriales http://wwwwww.dit.upm.es/~santiago/docencia/master/web/web.html http://www.w3schools.com/js/, http://www.w3schools.com/jsref/

Friday, March 4, 2011

Page 42: La Arquitectura de las Aplicaciones de Internet

Ejemplo Javascript: Factorial<html><head><title> Ejemplo 1 Javascript</title></head>

<body><h2> Tabla de Factorial </h2>

<!-- Un script es un nodo mas del arbol html. --> <!-- Ejecución de script genera HTML, que --> <!-- document.write(..) inserta en su nodo DOM. -->

<script> var fact = 1; // Define variable fact y asigna el entero 1

for(i = 1; i < 10; i++) { // bucle for similar a Java fact = fact*i; // calcula el factorial iterativamente document.write(i + "! = " + fact + "<br \\/>") ; // Inserta string (argumento) en codigo HTML // Transformación automatica de enter (i, fact) a string }</script>

</body></html>

Friday, March 4, 2011

Page 43: La Arquitectura de las Aplicaciones de Internet

Ejemplo Javascript: Fecha

<html><head><title> Hora y Fecha</title></head>

<body><h1>The date and time are:</h1>

<script language="JavaScript"> document.write(new Date( )); // Date(): objeto predefinido // al crearlo se inicializa con fecha y hora actual</script>

</body></html>

Friday, March 4, 2011

Page 44: La Arquitectura de las Aplicaciones de Internet

HTML5

Friday, March 4, 2011

Page 45: La Arquitectura de las Aplicaciones de Internet

1999: HTML deja de actualizarse por W3C W3C promueve XHTML (redefinición de HTML en XML)

Sustitución muy compleja -> no aceptada por usuarios XHTML tiene demasiadas variantes:

transitional, frameset, strict, basic, .......

Aparecen tecnologías propietarias para nuevas aplicaciones Adobe Flash

para Webs dinámicas con gráficos bonitos para video

Se consolida plataforma HTML Javascript, CSS, XML, JSON, ...

XML y XHTML

Friday, March 4, 2011

Page 46: La Arquitectura de las Aplicaciones de Internet

2004: Desarradores de “Browsers” crean WHATWG Para definir nueva versión de HTML: HTML5

Debido a la no actualización de HTML en W3C

Objetivo HTML5: Desarrollo de nueva versión de HTML para aplicaciones Web actuales y futuras

2008: W3C finaliza actividad en XHTML 2 Debido a rechazo de fabricantes de browsers

2008: W3C confluye con WHATWG y HTML5 Publica “Working Draft” de HTML5 en W3C

Calendario de HTML5 2012: Candidate Recommendation 2022: Proposed Recommendation

HTML5

Friday, March 4, 2011

Page 47: La Arquitectura de las Aplicaciones de Internet

HTML5: Primera revisión de HTML en una década Para diseñar las aplicaciones Web mas avanzadas

video, redes sociales, móviles, juegos, gráficos, 3D, .. Sustituira a: HTML4, XHTML1.0 y DOM2-HTML

http://www.w3schools.com/html5/ http://diveintohtml5.org/table-of-contents.html http://www.w3.org/TR/html5/

Soporte a HTML5 debe preceder a las normas (y validarlas) Alto soporte en Firefox, Safari, Chrome, Opera, IE, ..

http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5%29

HTML4 Polyglot Subconjunto compatible con HTML y XHTML (transicional)

Características HTML5

Friday, March 4, 2011

Page 48: La Arquitectura de las Aplicaciones de Internet

Paginas Web bien estructuradas

Formularios muy enriquecidos

Gráficos vectoriales

Formulas matematicas

CANVAS para juegos y animaciones

Geolocalicación y sensores

Video y audio nativo

Almacenamiento de datos local y en BD

Web & Offline Web workers

.......

Plataforma HTML5: principales novedades

Friday, March 4, 2011

Page 49: La Arquitectura de las Aplicaciones de Internet

HTML5: se diseño como plataforma en WHATWG Incluyendo todos los componentes

marcas HTML, APIs Javascript y comandos CSS Partes iniciales de HTML5 son ahora normas separadas

Almacenamiento local (Local storage) Web Sockets Geolocation SVG MathML HttpXMLRequest Level 2 microdatos ......

Plataforma HTML5 Todo lo necesario para crear nuevas aplicaciones sin plugins

Paradigma “Web as Platform”:

Plataforma HTML5

Friday, March 4, 2011

Page 50: La Arquitectura de las Aplicaciones de Internet

*From Peter Lubers, Kaazing: HTML5 The 30,000’ View, http://www.slideshare.net/peterlubbers/html5-4378635

Friday, March 4, 2011

Page 51: La Arquitectura de las Aplicaciones de Internet

*From Peter Lubers, Kaazing: HTML5 The 30,000’ View, http://www.slideshare.net/peterlubbers/html5-4378635

Friday, March 4, 2011

Page 52: La Arquitectura de las Aplicaciones de Internet

Listado de marcas de HTML5 incluyendo las nuevas y las deprecadas:por Antonio Lupetti http://woorkup.com/wp-content/uploads/2009/12/HTML5-Visual-Cheat-Sheet.pdf

Friday, March 4, 2011

Page 53: La Arquitectura de las Aplicaciones de Internet

HTTP

Friday, March 4, 2011

Page 54: La Arquitectura de las Aplicaciones de Internet

HTTP

Friday, March 4, 2011

Page 55: La Arquitectura de las Aplicaciones de Internet

Métodos mas utilizados GET: Pedir un fichero al servidor

Se invoca desde HTML HEAD: Pedir la cabecera de un fichero al servidor POST: Enviar un formulario al servidor

Se invoca desde HTML PUT: Cargar un recurso en el servidor DELETE: Borrar un recurso del servidor

Otros métodos OPTIONS: Determinar que métodos acepta un servidor TRACE: Trazar mensaje a través de proxies hasta el servidor CONNECT: Conectar a un servidor a través de un proxy

Metodos de HTTP

Friday, March 4, 2011

Page 56: La Arquitectura de las Aplicaciones de Internet

Transacción HTTP GET

GET /index.html HTTP/1.0Accept: text/html, text/plain, image/gif, image/jpegUser-Agent: Netscape-Navigator/4.03 // linea en blanco indica final de cabecera // POST y PUT pueden llevar cuerpo

HTTP/1.0 200 OKServer: NCSA/1.2.3Content-type: text/htmlContent-length: 608 // tamaño cuerpo en bytes // linea en blanco hace de separador entre cabecera y cuerpo pregunta<html>....... // fichero html</html>

Acceso a página Web -> http://scom.dit.upm.es/index.html

Friday, March 4, 2011

Page 57: La Arquitectura de las Aplicaciones de Internet

Formato de cabeceras HTTP GET

HTTP/1.1 200 OK

Server: Apache/1.3.6 (Unix)Content-type: text/html, …Content-length: 608

<html> …….. </html>

1) Solicitud del Cliente

2) Respuesta del Servidor: scom.dit.upm.es

Comienzo

Cabecera

Cuerpo

Acceso a página Web -> http://scom.dit.upm.es/lib/ej.html

GET /lib/ej.html HTTP/1.1

Host: scom.dit.upm.es Accept: text/*, image/*Accept-language: en, spUser-Agent: Mozilla/5.0 (WinNT)

Comienzo

Cabecera

Cuerpo

Comando, camino-recurso, versión-HTTP

Sentencias de cabecera: dan información al servidor

GET no incluye cuerpo en la solicitud

Versión-HTTP, resultado, frase-adicional

Sentencias de cabecera: dan información al cliente

Cuerpo con fichero HTML

Friday, March 4, 2011

Page 58: La Arquitectura de las Aplicaciones de Internet

Cabeceras HTTP POST

HTTP/1.1 200 OK

Server: Apache/1.3.6 (Unix)MIME-version: 1.0Content-type: text/html, …Last-modified: Wed, 14-Mar-95 18:15:23 GMT Content-length: 608

<html> …….. </html>

1) Solicitud del Cliente

2) Respuesta del Servidor: scom.dit.upm.es

Comienzo

Cabecera

Cuerpo

<FORM METHOD=post ACTION="http://scom.dit.upm.es/cgi-bin/aut">

POST cgi-bin/aut HTTP/1.1

Host: scom.dit.upm.es Accept: text/*, imag/gif, image/jpeg, imag/pngAccept-language: en, spUser-Agent: Mozilla/5.0 (WinNT)Content-type: application/x-www-form-urlencodedContent-length: 30

color=blue&msg=Deje+su+mensaje

Comienzo

Cabecera

Cuerpo

Friday, March 4, 2011

Page 59: La Arquitectura de las Aplicaciones de Internet

Figura tomada de “HTTP: The Definite Guide” de D. Gourley & B. Toty

Friday, March 4, 2011

Page 60: La Arquitectura de las Aplicaciones de Internet

Carga de una página típica

Un pagina (X)HTML contiene habitualmente otros objetos que se cargan en transacciones separadas. Conexiones persistentes y transacciones concurrentes aceleran mucho la

descarga de la página completa

Pagina Objetos asociados

Friday, March 4, 2011

Page 61: La Arquitectura de las Aplicaciones de Internet

Conexión persistente y en paralelo

La conexión TCP en HTTP 1.1 es persistente Queda establecida al finalizar una transacción

Hasta que cliente o servidor solicitan el cierre con Connection: close

Permite múltiples transacciones con una única conexión TCP

Las conexiones HTTP 1.0 no son persistentesSe puede mantener la conexión TCP establecida con

Connection: keep-alive

HTTP 1.1 permite transacciones en paralelo (pipelined) Una transacción puede comenzar sin que finalice la anterior

La finalización de las transacciones debe seguir el orden de comienzo Aumenta mucho la velocidad de carga de páginas Web

Friday, March 4, 2011

Page 62: La Arquitectura de las Aplicaciones de Internet

Ejercicio aplicación-2• Installar Mozilla Firefox y añadirle el Add-On “Live HTTP

Header” que permite ver las cabeceras HTTP intercambiadas con un servidor. Acceder a un servidor e interpretar las cabeceras intercambiadas.

• Hacer un telnet al puerto 80 y simular comandos HTTP introduciendolos a través del teclado > telnet <host> <port> ....

Friday, March 4, 2011

Page 63: La Arquitectura de las Aplicaciones de Internet

Rest: Restful Web Services

Friday, March 4, 2011

Page 64: La Arquitectura de las Aplicaciones de Internet

ÍndiceREST o WSPrincipios de REST Direccionabilidad Interfaz uniforme Sin estado Representación abierta Hipertexto

Conclusiones

Friday, March 4, 2011

Page 65: La Arquitectura de las Aplicaciones de Internet

Servicios o Recursos

Friday, March 4, 2011

Page 66: La Arquitectura de las Aplicaciones de Internet

Friday, March 4, 2011

Page 67: La Arquitectura de las Aplicaciones de Internet

Que es REST

Friday, March 4, 2011

Page 68: La Arquitectura de las Aplicaciones de Internet

REST: Principios

Friday, March 4, 2011

Page 69: La Arquitectura de las Aplicaciones de Internet

Interfaz uniforme

Friday, March 4, 2011

Page 70: La Arquitectura de las Aplicaciones de Internet

Ejemplo: Amazon S3Servicio de almacenamiento de objetos: “Disco Virtual”Arquitectura Cloud Computing http://aws.amazon.com/s3/

Autenticación: “AWS Access Key” o “Certificado X.509”Tiene 3 tipos de recursos:

Bucket-list: conjunto de buckets* de un usuario https://s3.amazonaws.com/

Bucket en particular: repositorio de objetoshttps://s3.amazonaws.com/{Bucket}/

Objeto: posee metadato y valorhttps://s3.amazonaws.com/{Bucket}/{Objeto}

*Bucket: disco o repositorio virtual accesible a través de HTTP

Friday, March 4, 2011

Page 71: La Arquitectura de las Aplicaciones de Internet

REST,  reu-lización  y  mashups

Friday, March 4, 2011

Page 72: La Arquitectura de las Aplicaciones de Internet

Cachés y Gestión del tráfico Web

Friday, March 4, 2011

Page 73: La Arquitectura de las Aplicaciones de Internet

Los Clicks y el tráfico de InternetCada click en un URL de una página Web

Desencadena una acceso Web (HTTP)

El tráfico actual de Internet se mide en clicks Es decir: Transacciones HTTP

Todos los portales de Internet Intentan maximizar el número de accesos recibidos

Sus ingresos de publicidad dependen del número de accesos

Atractores de clicks El tráfico (clicks) depende de los enlaces a una página

Desde blogs, Google o sistemas de recomendación

Friday, March 4, 2011

Page 74: La Arquitectura de las Aplicaciones de Internet

Descargas de Páginas Web

Friday, March 4, 2011

Page 75: La Arquitectura de las Aplicaciones de Internet

Optimización del TráficoSe realiza con caches en dispositivos proxy o pasarela

Interceptan los accesos Y sirven el contenido solicitado de la cache, si no ha cambiado en el servidor

Una cache se situa en ciente, servidor o punto intermedio estratégicoProxy: dispositivo intermedio elegido por el cliente Pasarela: dispositivo intermedio elegido por el servidor o la red

Figura tomada de “HTTP Developer’s Handbook” de Chris Shiflett

Friday, March 4, 2011

Page 76: La Arquitectura de las Aplicaciones de Internet

Identificador de recurso: Etag

HTTP/1.1 304 Not Modified

Content-type: text/html, …Content-length: 0Date: Wed, 03 Jul 2002, 19:18:23 GMTEtag: “V45789099”Cache-Control: max-age=36000 // cachear 36000 segundos

2) Respuesta confirmando

Comienzo

Cabecera

Cuerpo

Acceso a página Web -> http://scom.dit.upm.es/lib/ej.html

GET /lib/ej.html HTTP/1.1

Accept: text/*Accept-language: en, spIf-None-Match: “V45789099”

Comienzo

Cabecera

Cuerpo

1) Solicitud condicional de recurso

Friday, March 4, 2011

Page 77: La Arquitectura de las Aplicaciones de Internet

Control de Última Modificación

HTTP/1.1 304 Not Modified

Content-type: text/html, …Content-length: 0Date: Wed, 03 Jul 2002, 19:18:23 GMTExpires: Fri, 05 Jul 2002, 19:18:23 GMT

2) Respuesta confirmando

Comienzo

Cabecera

Cuerpo

Acceso a página Web -> http://scom.dit.upm.es/lib/ej.html

GET /lib/ej.html HTTP/1.1

Accept: text/*Accept-language: en, spIf-Modified-Since: Wed, 21 Jun 2002, 12:11:23 GMT

Comienzo

Cabecera

Cuerpo

1) Solicitud condicional de recurso

Friday, March 4, 2011

Page 78: La Arquitectura de las Aplicaciones de Internet

Gestión de Cache

Las cabeceras informan al gestor de una cache si los recursos son “frescos” o “caducados”

Cabeceras de gestión de cache mas comunes If-Non-Match: <versión Etag de un recurso> // Cliente Etag: <version del objeto para determinar si ha cambiado> // Servidor

If-Modified-Since: <Enviar solo si modificado desde xxx> // Cliente Last-Modified: <Fecha de ultima de última modificación> // Servidor

Cache-Control: max-age=3600 // Servidor Otros parametros de Cache-Control:

max-age=0 // no guardar no-store // no guardar No-cache // guaradar, pero no utilizar sin comprobar que

Friday, March 4, 2011

Page 79: La Arquitectura de las Aplicaciones de Internet

Redes  de  Distribución  de  Contenidos

• Internet  no  fue  diseñada  para  realizar  transacciones

– TCP/IP  es  muy  ineficaz  para  esta  funcion

• No  opCmiza  el  tráfico

– Se  diseño  para  crear  aplicaciones  extremo-­‐a-­‐extremo

• Clientes  dialogan  con  el  servidor

• Son  necesarias  CDNs  (Content  Delivery  Networks)

– OpCmizan  el  uso  del  ancho  de  banda  con  “caches”

• Evitando  retransmiCr  el  mismo  recurso– Cada  vez  que  lo  pide  un  usuario

Friday, March 4, 2011

Page 80: La Arquitectura de las Aplicaciones de Internet

Future Internet

Friday, March 4, 2011

Page 81: La Arquitectura de las Aplicaciones de Internet

Internet  del  Futuro  y  la  Arquitectura  de  Internet

Red 1 .... Red n

Friday, March 4, 2011

Page 82: La Arquitectura de las Aplicaciones de Internet

Internet  del  Futuro

• Cada  vez  existe  mayor  conciencia  sobre  la  necesidad  de

– Redefinir  Internet  y  TCP/IP

• Para  opCmizar  la  distribución  de  contenidos– Dilema:  “Evolu@on”  o  “Revolu@on”

– Van  Jacobson,  Agosto  2006:  • h=p://video.google.com/videosearch?q=van+jacobson&emb=0&aq=f#  

• Todos  los  países  han  creado  programas  de  invesCgación

– Centrados  en  crear  la  Internet  del  Futuro

• Aunque  nadie  sabe  como  será  realmente

Friday, March 4, 2011