Cliente Web Grueso

Anuncio
CLIENTE/SERVIDOR
EN INTERNET
Programación Web: Introducción
Dr. Víctor Jesús Sosa Sosa
[email protected]
CONTENIDO
APLICACIONES WEB
• Definiciones Básicas
• URL
• HTTP
• HTML
• Formularios HTML
• Manejo de sesiones
• Generación dinámica de HTML
CGI
Módulos
compilados
Scripts del lado del servidor
Sistemas de publicación XML
CONTENIDO
APLICACIONES WEB
• Clientes Dinámicos
DOM
Scripts
(JavaScript)
Applets
ActiveX
• Patrones de Arquitectura de Aplicaciones Web
Cliente
Web Delgado
Web Grueso
Web Object
Cliente
• Seguridad
DEFINICIONES BÁSICAS
El
Web
es
hiperdocumentos.
un
sistema
distribuido
de
Para observar un documento en la Web debe
utilizarse una aplicación llamada visualizador y se
debe indicar el nombre del documento y el nombre de
la computadora donde éste puede ser encontrado.
Las solicitudes de documentos son manipuladas
por una aplicación denominada servidor Web.
Cuando un visualizador solicita un documento, el
servidor Web busca el documento en su sistema de
archivos y lo envía al visualizador.
DEFINICIONES BÁSICAS
El término Web (telaraña) surge al observar el
sistema como un conjunto de nodos con enlaces de
interconexión.
Un sitio Web estático es aquel donde todos los
documentos están almacenados de manera definitiva
en el sistema de archivos.
Una aplicación Web es un sitio Web que permite la
ejecución de lógica de trabajo por medio de un
visualizador Web.
Evolución de las Tecnologías del Web
- Visualizadores
Web gráficos
e hipervínculos
1994
Web
De Objetos
Web
Interactivo
Web
De Hipertexto
Formatos
-Tablas
-CGIs
1995
Transacciones
Protegidas
- SSL
- S-HTTP
- Muros de
Protección
- E-cash
Web de Java:
- Applets
- Componentes
móviles
1996
Objetos
Distribuidos
- Orblets
- Documentos
Compuestos
- ActiveX
- CORBA
- Cyberdog
1997
Evolución de las Tecnologías del Web
Fundamentos del Web
(Protocolos y Tecnologías)
Internet, como red principal global.
Protocolos de aplicaciones sobre TCP/IP (SMTP,Telnet, FTP, NNTP,Gopher)
Internet, como red principal privada.
Detrás de Firewalls.
URLs, como forma de nombramiento y acceso global a todos los recursos del Web
Esquema
de protocolo
http
Dirección
del Servidor
://www.direccion.com
Número
de puerto
:8080
Recurso
destino
:/ruta/subdir/archivo.ext
HTTP, para acceder a recursos nombrados con URLs.
HTML, para incrustar hipervínculos y describir la estructura lógica de documentos.
Visualizadores Web, como clientes universales.
HTTP
Hypertext Transfer Protocol (1.0 definido en RFC
1945 y 1.1 en RFC 2068).
Define el formato y la manera en que deben ser
transmitidos los mensajes y las acciones que los
visualizadores y servidores Web deben realizar en
respuesta a estos mensajes.
Protocolo sin estado, no orientado a sesión, ya que
cada comando requiere que se establezca una nueva
conexión.
Interacción Cliente/Servidor en el Web
Visualizador
Web
1
4
HTML
2
HTTP
PC
Visualizador
Web
TCP/IP
Internet
HTML
HTTP
3
Documentos
HTML
HTTP
MAC
Servidor Web
Cliente
Middleware
Servidor
Formato de Solicitud de HTTP
Visualizador
Web
HTML y
formas
HTTP
Web
Documentos
HTML
Solicitud
Servidor
HTTP
Cliente
Sintaxis de solicitud de HTTP
Línea de
Solicitud
<method><resource identifier><HTTP version><crlf>
[<Header> : <value>]<crlf>
--[<Header> : <value>]<crlf>
blank line
<crlf>
[Entity body]
Campos de
Encabezado
de solicitud
Cuerpo de
entidad
Ejemplo
Línea de
Solicitud
GET /path/file.html HTTP/1.0
Accept: text/html
Accept: audio/x
User-agent: MacWeb
Campos de
Encabezado
de solicitud
Formato de Respuesta de HTTP
Visualizador
Web
HTML y
formas
HTTP
Web
Documentos
HTML
Respuesta
Servidor
HTTP
Cliente
Sintaxis de respuesta de HTTP
<HTTP version><result code>[<explanation>]<crlf>
[<Header> : <value>]<crlf>
--[<Header> : <value>]<crlf>
blank line
<crlf>
[Entity body]
Ejemplo
HTTP/1.0 200 OK
Server: CCSA/1.3
Mime_version: 1.0
Content_type: text/html
Content_length: 2000
<HTML>
--</HTML>
Encabezado (estatus)
de Respuesta
Campos de
Encabezado
Cuerpo de
entidad
Encabezado
re repuesta
Campos de
Encabezado
Cuerpo de
Entidad (es decir,
Documento HTML)
Métodos de HTTP
Método
HTTP/1.0
HTTP/1.1
GET
S
S
Recuperar el URL especificado.
Descripción del Método
HEAD
S
S
Idéntico a GET, salvo que el servidor no envía eldocumento en respuesta; solo
envía los encabezados. Los clientes lo usan para obtener metadatos de recursos o
para probar validez de vínculos de hipertexto.
POST
S
S
Enviar estos datos al URL especificado.
PUT
N
S
Almacenar estos datos en el URL especificado, remplazando lo anterior.
PATCH
N
S
Similar a PUT, salvo que contiene una lista de diferencias entre la versión
original del URL y el contenido deseado tras la aplicación del método.
COPY
N
S
Copiar el recurso identificado por el URL en la(s) ubicación(es) especificada (s).
MOVE
N
S
Trasladar el recurso indicado por el URL a la(s) ubicación(es) especificada(s).
Equivalete a usar COPY/DELETE
DELETE
N
S
Borra el recurso identificado por el URL.
LICK
N
S
Establecer una o más relaciones de vinculación entre el recurso identificado por
el URL y otros recursos
UCLICK
N
S
Eliminar una o más relaciones de vinculación en el URL especificado.
TRACE
N
S
Notificar todo lo que se reciba del cliente en el cuerpo de entidad de la respuesta.
OPTIOCS
N
S
Solicita información de opciones disponibles.
WRAPPED
N
S
Permite que solicitudes se envuelvan en conjunto y quizá también se codifiquen
para reforzar la seguridad y/o privacidad de la solicitud. El servidor destino debe
desenvolver el mensaje y cederlo al manipulador apropiado
Encabezados Generales de HTTP
Encabezado
HTTP/1.0
HTTP/1.1
Descripción del Método
Cache-Control
N
S
Instrucciones de Solicitud/Respuesta de memoria caché.
Connection
N
S
Infomación que no puede transmitirse a gateways.
Date
S
S
Fecha y hora de origen del mensaje.
Forwarded
N
S
Información usada por gateways para rastrear pasos intermedios y evitar lazos
de solicitudes.
Keep-Alive
N
S
Información de diagnostico.
MIME-Version
S
S
Versión de MIME empleada para codificar el mensaje.
Pragma
S
S
Contiene instrucciones de implementación (por ejemplo, sin memoria caché)
Upgrade
N
S
Lista protocolos de comunicación adicionales que soporta un cliente y que
querría usar previo acuerdo del servidor
Encabezados de Solicitudes de HTTP
Encabezado
HTTP/1.0
HTTP/1.1
Accept
N
S
Lista contenido aceptable de tipo/subtipo MIME.
Descripción del Método
Accept-Chars
N
S
Lista conjunto de caracteres aceptables
Accept-Encoding
N
S
Lista codificaciones aceptables, como compresión y compresión con zip.
Accept-Language
N
S
Lista de lenguajes naturales aceptables.
Authorization
S
S
Transmite esquema de autenticación y codificación del usuario.
From
S
S
Contiene dirección de correo electrónico en Internet del usuario.
Host
N
S
Contiene nombre de anfitrión destino.
If-Modified-Since
S
S
Contiene una fecha/hora usada por GET para la descarga condicional de
documentos.
Proxy-Authorization
N
S
Permite a clientes prestar su identidad a un representante.
Refer
S
S
URL del documento de origen de esta solicitud.
Unless
N
S
Lista condiciones de encabezado que deben cumplirse para que un método sea
aplicado a un recurso.
User-Agent
S
S
Describe al visualizador.
Encabezados de Respuesta de HTTP
Encabezado
HTTP/1.0
HTTP/1.1
Location
S
S
Envía la ubicación exacta del recurso
Descripción del Método
Proxy-Authenticate
N
S
Envía el esquema de codificación/autorización usado en esta sesión.
Public
N
S
Lista todos los métodos no estándar soportados por un servidor.
Retry-After
N
S
Indica (en segundos) cuando volver a intentar un servicio.
Server
S
S
Envía información sobre el software usado en el servidor.
WWW-Authenticate
S
S
Envía el esquema de codificación/autorización que desea usar el
servidor en todas sus interacciones en el Web.
Encabezados de Entidad de HTTP
Encabezado
HTTP/1.0
HTTP/1.1
Allow
S
S
Lista los métodos soportados por el recurso de URL.
Descripción del Método
Content-Encoding
S
S
Especifíca codificación de respuesta, como compresión y compresión
con zip.
Content-Language
N
S
Especifica lenguaje natural de respuesta (por ejemplo, español)
Content-Length
S
S
Extensión en bytes del cuerpo de entidad.
Content-Type
S
S
Tipo de contenido MIME de respuesta.
Content-Version
N
S
Contiene un número de versión del recurso.
Derived-From
N
S
Identifica la versión anterior.
Expires
S
S
Contiene fecha/hora después de la cual el documento caduca.
Last-Modified
S
S
Contien fecha/hora de la modificación más recientedel recurso.
Link
N
S
Contiene información de vinculación del documento.
Title
N
S
Contiene el título del documento.
Transfer-Encoding
N
S
Identifica una transformación aplicada al documento (o cuerpo del
mensaje)
URL-Header
N
S
Contiene la parte del nombre del recurso del URL.
Códigos de Estado
Códigos de Estado =
“200” ; OK
| “201”; Creado
| “202”; Aceptado
| “204”; Sin Contenido
| “301”; Movido Permanentemente
| “302”; Movido Temporalmente
| “304”; No Modificado
| “400”; Mala Solicitud
| “401”; No autorizado
| “403”; Prohibido
| “404”; No encontrado
| “500”; Error Interno en el Servidor
| “501”; No implementado
| “502”; Gateway equivocado
| “503”; Servicio No Disponible
| extensiones de códigos
Transport Control Protocol: HTTP0.9
Host A
TCP
Host B
SYN
1 RTT
SYN
1 RTT
ACK
DATA
DATA
DATA
FIN
ACK
Conexión cerrada por
A
DATA
FIN
Conexión cerrada
por B
ACK
Transport Control Protocol: HTTP1.0
Host A
Host B
Host A
DATA
ACK
Host B
DATA
G
1 RTT +
2G
DATA
3 RTT +
2G
ACK
ACK
DATA
ACK
Tamaño de Ventana 1
X1 = 1/RTT
Tamaño de Ventana 3
X3 = 3/RTT
HTTP 1.1
HTTP 1.1 arregla muchos de los problemas que tiene HTTP 1.0,
pero es más complejo.
Características principales:
• Identifica Nombre de Host (permite host virtuales)
• Negocia Contenidos (múltiples lenguajes)
• Conecciones Persistentes (reduce sobrecarga en conexiones
TCP)
• Transferencias en Bloques
• Rangos de Bytes (solicita partes de un documento)
• Soporte de Proxy
SISTEMAS DE PUBLICACIÓN XML
Utilizan
XML
(Extensible
Markup
Language) y XSL (Extensible Styelsheet
Language) para la separación del contenido
y la presentación.
Utilizan tecnologías existentes (e.g.
Servlets) para el procesamiento de
solicitudes HTTP.
Ejemplos:
Relevant.
Cocoon,
Bladerunner,
SISTEMAS DE PUBLICACIÓN XML
Ventajas:
Mayor facilidad para la administración, especialmente de
aplicaciones grandes.
Separación completa de lógica, contenido y presentación.
Desventajas:
Mayor
dificultad para crear la aplicación, ya que es más
complicado utilizar XML/XSL que HTML directamente.
Las
herramientas no han alcanzado el nivel de madurez de
otras opciones para la generación dinámica de código debido a
que la tecnología de XML está constantemente evolucionando
con mucha rapidez.
PATRONES DE ARQUITECTURA
PARA APLICACIONES WEB
Cliente Web Delgado
Cliente Web Grueso
Web Object
CLIENTE WEB DELGADO
Es el más utilizado en aplicaciones
para la Internet
Se utiliza cuando los clientes tienen
poco poder de computación o no se
tiene control sobre su configuración
Toda la lógica de trabajo se ejecuta en
el servidor
El visualizador es simplemente un
instrumento de interfaz de usuario
ELEMENTOS DEL PATRÓN
CLIENTE WEB DELGADO
Visualizador
• Cualquier visualizador capaz
formularios y aceptar galletas
de
mostrar
Servidor Web
• Los visualizadores interactúan con el sistema sólo
por medio del servidor Web.
• Procesan todas las solicitudes y pasan el control a
otros servidores cuando las solicitudes son de
módulos compilados o páginas con scripts de
servidor.
ELEMENTOS DEL PATRÓN
CLIENTE WEB DELGADO
Conexión HTTP
• Toda la comunicación entre el cliente y el servidor
se realiza con HTTP
• Cada vez que el cliente y el servidor intercambian
información, se produce una nueva conexión HTTP
• En ocasiones se utiliza una variante llamada
HTTPS o HTTP con SSL (Secure Sockets Layer), la
cual permite cifrar la información transmitida
utilizando algoritmos asimétricos (clave pública/clave
privada)
ELEMENTOS DEL PATRÓN
CLIENTE WEB DELGADO
Páginas HTML estáticas
• Páginas con interfaz de usuario e información que
no es producto de un procesamiento por parte del
servidor
• Típicamente contienen información explicativa o
formularios
• Cuando el servidor Web recibe una solicitud por una
de estas páginas, simplemente envía el contenido
archivo al cliente
ELEMENTOS DEL PATRÓN
CLIENTE WEB DELGADO
Páginas de Servidor
• Páginas producto de un procesamiento por parte
del servidor
• Típicamente implementadas mediante páginas
con scripts del lado del servidor o mediante
módulos compilados
• Potencialmente tienen acceso a todos los
recursos del servidor, tales como bases de datos,
otros sistemas existentes, etc.
ELEMENTOS DEL PATRÓN
CLIENTE WEB DELGADO
Servidor de Aplicaciones
• Es la maquinaria que permite la ejecución de lógica
del lado del servidor
• Se acopla con el servidor Web
• Puede, de hecho, ser una extensión del servidor
Web, pero en algunos casos puede ser ejecutado en
otra computadora.
Sistemas existentes
•Componentes a los cuales se tiene acceso mediante
interfaces de programación o servidores de aplicación
correspondientes
•Ejemplos: Bases de datos, sistemas mercantiles,
sistemas SCADA, etc.
ELEMENTOS DEL PATRÓN CLIENTE
WEB DELGADO
Visualizador
HTTP
Servidor Web
Servidor de
Aplicaciones
Páginas
HTML
Páginas de
Servidor
Objetos de
Negocio/
Sistemas
Existentes
CLIENTE WEB GRUESO
• Extiende el patrón Cliente Web Delgado mediante el
uso de scripts (JavaScript) u objetos (Applets/ActiveX)
del lado del cliente
• El cliente ejecuta lógica de trabajo
• Es apropiado para ser usado en ambientes donde hay
control sobre la configuración del visualizador (e.g.
Intranets)
• Permite establecer interfaces de usuario sofisticadas
ELEMENTOS DEL PATRÓN
CLIENTE WEB GRUESO
Scripts del lado del cliente
• Código JavaScript, VBScript en las páginas HTML
• El visualizador interpreta el script, el cual tiene
acceso al DOM
Controles ActiveX
• Objetos COM que pueden ser referenciados por el
cliente
• Tienen acceso a todos los recursos del cliente
• Pueden ser usados para incorporar lógica de
trabajo
y/o implementar interfaces de usuario
sofisticadas
• Seguridad mediante firma digital, la cual permite
establecer la identidad del autor del componente
ELEMENTOS DEL PATRÓN
CLIENTE WEB GRUESO
Java Applet
• Componente compilado y autocontenido que se
ejecuta en el visualizador
• Tienen acceso limitado a los recursos del cliente
• Pueden ser usados para incorporar lógica de
trabajo
y/o implementar interfaces de usuario
sofisticadas
• Seguridad mediante firma digital, la cual permite
aumentar el acceso a los recursos del cliente
ELEMENTOS DEL PATRÓN
CLIENTE WEB GRUESO
Visualizador
Applets/
ActiveX
HTTP
Servidor Web
Servidor de
Aplicaciones
Páginas
HTML
Páginas de
Servidor
Objetos de
Negocio/
Sistemas
Existentes
WEB OBJECT
Se basa en la utilización de la tecnología
Web como parte de un sistema cliente/servidor
de objetos distribuidos
Es apropiado para ser usado en ambientes
donde hay control sobre la configuración del
visualizador y la conexión de red (e.g.
Intranets)
Se utilizan protocolos de objetos distribuidos
para la comunicación entre clientes y
servidores
ELEMENTOS DEL PATRON
WEB Object
IIOP (Internet InterORB Protocol)
•Protocolo de comunicación entre objetos CORBA
(Common Object Request Broker Architecture) en
redes IP
DCOM (Distributed COM)
•Protocolo para objetos COM (ActiveX) distribuidos
RMI (Remote Method Invocation)
•Interfaz de programación Java para objetos
distribuidos. JRMP (Java Remote Method Protocol)
es el protocolo más utilizado, pero también puede
utilizarse IIOP.
ELEMENTOS DEL PATRON
WEB DELIVERY
Visualizador
HTTP
ActiveX
Cliente
Applets
Servidor Web
Servidor de
Aplicaciones
Páginas
HTML
Páginas de
Servidor
RMI
DCOM
ActiveX
Servidor
Objetos de
Negocio
Enterprise
JavaBeans
IIOP
SEGURIDAD
Aseguramiento
físico
de
las
computadoras que contienen los servicios
de la aplicación y de los equipos de red
asociados.
Aseguramiento lógico consta de los
siguientes aspectos:
• Autenticación
• Confidencialidad
• Integridad
• No repudiación
CONCEPTOS FUNDAMENTALES
CERTIFICADO DIGITAL
Documento firmado digitalmente por una
entidad (Autoridad de Certificados) que
afirma que la clave pública de otra entidad
tiene un determinado valor.
CLAVE PÚBLICA
Número asociado a una entidad que debe
ser conocido por cualquiera que desee
interactuar de manera segura con dicha
entidad. Se utiliza para verificar firmas
digitales.
CONCEPTOS FUNDAMENTALES
FIRMA DIGITAL
Secuencia corta de datos que se calcula
aplicando un algoritmo sobre otra secuencia de
datos (mensaje) que se desea firmar utilizando
la clave privada de la entidad firmante. Permite
determinar si la secuencia de datos ha sido
modificada durante la transmisión.
CLAVE PRIVADA
Número asociado a una entidad que sólo debe
ser conocido por dicha entidad. Se utiliza para
calcular firmas digitales.
FIRMA DIGITAL
MENSAJE
AL
DESTINATARIO
MENSAJE
FUNCIÓN
HASH
RESULTADO
HASH
FUNCIÓN
FIRMA
FIRMA
DIGITAL
CLAVE
PRIVADA
CLAVE
PÚBLICA
MENSAJE
DEL FIRMANTE
FIRMA
DIGITAL
FUNCIÓN
HASH
RESULTADO
HASH
FUNCIÓN
VERIFICA
CIÓN
VALIDEZ
AUTENTICACION
Identificación del cliente con el servidor
Puede ser implementada por el servidor
Web o por la aplicación misma
Puede manejarse con contraseñas o con
certificados digitales
CONFIDENCIALIDAD
Cifrado de la información transmitida
La tecnología de cifrado más utilizada es
SSL
SSL es una capa que permite cifrar la
información entre el protocolo de la capa
de aplicación y la capa de transporte
INTEGRIDAD
Consiste en garantizar que la
información
transmitida
no
sea
modificada en el camino
Este aspecto es cubierto por SSL
Cada mensaje cifrado por SSL tiene
adicionalmente códigos de autenticación
de mensaje (MAC), los cuales están
basados en firmas digitales.
NO REPUDIACION
Consiste en asegurar que ambas partes
en una transacción estén de acuerdo en
que ésta se ha llevado a cabo
Es implementada mediante certificados
y firmas digitales, que permiten demostrar
que el dueño del certificado estuvo
involucrado en la transacción
Descargar