contenido - tamps.cinvestav.mxvjsosa/clases/sd/progweb_intro.pdf · delete n s borra el recurso...
TRANSCRIPT
CLIENTE/SERVIDOREN INTERNET
Programación Web: Introducción
Dr. Víctor Jesús Sosa Sosa
Programación Web: Introducción
CONTENIDO�APLICACIONES WEB
• Definiciones Básicas • URL• HTTP• HTML• 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)�AppletsActiveX�ActiveX
• Patrones de Arquitectura de Aplicaciones Web
• Seguridad
�Cliente Web Delgado�Cliente Web Grueso�Web Object
� El Web es un sistema distribuido dehiperdocumentos.
� Para observar un documento en la Web debeutilizarse una aplicación llamada visualizador y sedebe indicar el nombre del documento y el nombre de
DEFINICIONES BÁSICAS
debe indicar el nombre del documento y el nombre dela computadora donde éste puede ser encontrado.
� Las solicitudes de documentos son manipuladaspor una aplicación denominada servidor Web.
� Cuando un visualizador solicita un documento, elservidor Web busca el documento en su sistema dearchivos y lo envía al visualizador.
DEFINICIONES BÁSICAS
� El término Web (telaraña) surge al observar elsistema como un conjunto de nodos con enlaces deinterconexión.
� Un sitio Web estático es aquel donde todos losdocumentos están almacenados de manera definitivadocumentos están almacenados de manera definitivaen el sistema de archivos.
� Una aplicación Web es un sitio Web que permite laejecución de lógica de trabajo por medio de unvisualizador Web.
Web
De Hipertexto
Web
Interactivo
Objetos
Web
De Objetos
Evolución de las Tecnologías del Web
- Visualizadores
Web gráficos
e hipervínculos
1994
Formatos
-Tablas
-CGIs
Transacciones
Protegidas
- SSL
- S-HTTP
- Muros de
Protección
- E-cash
1995
Web de Java:
- Applets
- Componentes
móviles
Objetos
Distribuidos
- Orblets
- Documentos
Compuestos
- ActiveX
- CORBA
- Cyberdog
1996 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
HTTP, para acceder a recursos nombrados con URLs.
HTML, para incrustar hipervínculos y describir la estructura lógica de documentos.
VisualizadoresWeb, como clientes universales.
http ://www.direccion.com :8080 :/ruta/subdir/archivo.ext
Esquema
de protocoloDirección
del Servidor
Número
de puertoRecurso
destino
HTTP
� Hypertext Transfer Protocol (1.0 definido en RFC1945 y 1.1 en RFC 2068).
� Define el formato y la manera en que deben sertransmitidos los mensajes y las acciones que losvisualizadores y servidores Web deben realizar envisualizadores y servidores Web deben realizar enrespuesta a estos mensajes.
� Protocolo sin estado, no orientado a sesión, ya quecada comando requiere que se establezca una nuevaconexión.
HTML
Visualizador
Web
Visualizador
Web
PCHTTP
HTTP
1
2
3
4
Interacción Cliente/Servidor en el Web
TCP/IP
InternetHTML
Web
MAC
HTTP
HTTPDocumentos
HTML
Servidor Web
Cliente Middleware Servidor
3
Formato de Solicitud de HTTP
HTML y
formas
Visualizador
Web
HTTP
Solicitud
Cliente
WebDocumentos
HTML
Servidor
HTTP
Sintaxis de solicitud de HTTP
<method><resource identifier><HTTP version><crlf> Línea de <method><resource identifier><HTTP version><crlf>
[<Header> : <value>]<crlf>
--
--
[<Header> : <value>]<crlf>
blank line <crlf>
[Entity body]
GET /path/file.html HTTP/1.0
Accept: text/html
Accept: audio/x
User-agent: MacWeb
Línea de
Solicitud
Campos de
Encabezado
de solicitud
Cuerpo de
entidad
EjemploLínea de
Solicitud
Campos de
Encabezado
de solicitud
Formato de Respuesta de HTTP
HTML y
formas
Visualizador
Web
HTTP
Respuesta
Cliente
WebDocumentos
HTML
Servidor
HTTP
Sintaxis de respuesta de HTTP
<HTTP version><result code>[<explanation>]<crlf>
[<Header> : <value>]<crlf>
Encabezado (estatus)
de Respuesta[<Header> : <value>]<crlf>
--
--
[<Header> : <value>]<crlf>
blank line <crlf>
[Entity body]
HTTP/1.0 200 OK
Server: CCSA/1.3
Mime_version: 1.0
Content_type: text/html
Content_length: 2000
<HTML>
--
--
</HTML>
Campos de
Encabezado
Cuerpo de
entidad
EjemploEncabezado
re repuesta
Campos de
Encabezado
Cuerpo de
Entidad (es decir,
Documento HTML)
Método HTTP/1.0 HTTP/1.1 Descripción del Método
GET S S Recuperar el URL especificado.
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.
Métodos de HTTP
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
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
Encabezados Generales de HTTP
Forwarded N Sde 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
Encabezado HTTP/1.0 HTTP/1.1 Descripción del Método
Accept N S Lista contenido aceptable de tipo/subtipo MIME.
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.
Encabezados de Solicitudes de HTTP
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.
Encabezado HTTP/1.0 HTTP/1.1 Descripción del Método
Location S S Envía la ubicación exacta del recurso
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.
Encabezados de Respuesta de HTTP
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.
Encabezado HTTP/1.0 HTTP/1.1 Descripción del Método
Allow S S Lista los métodos soportados por el recurso de URL.
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.
Encabezados de Entidad de HTTP
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| “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
TCP Host A Host B
SYN
SYN
ACK
DATA
1 RTT
1 RTT
DATA
DATA
FIN
ACK
DATA
FIN
ACK
Conexión cerrada por
A
Conexión cerrada
por B
DATA
ACK
DATA
ACK
DATA
ACK
3 RTT +
2G
1 RTT +
2G
G
Host A Host B Host A Host B
Transport Control Protocol: HTTP1.0
DATA
ACK
Tamaño de Ventana 1Tamaño de Ventana 3
X1 = 1/RTTX3 = 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)• 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 MarkupLanguage) y XSL (Extensible StyelsheetLanguage) para la separación del contenidoy la presentación.
� Utilizan tecnologías existentes (e.g.Servlets) para el procesamiento desolicitudes HTTP.
� Ejemplos: Cocoon, Bladerunner,Relevant.
SISTEMAS DE PUBLICACIÓN XML
Ventajas:� Mayor facilidad para la administración, especialmente deaplicaciones grandes.
� Separación completa de lógica, contenido y presentación.
Desventajas:Desventajas:�Mayor dificultad para crear la aplicación, ya que es máscomplicado utilizar XML/XSL que HTML directamente.
�Las herramientas no han alcanzado el nivel de madurez deotras opciones para la generación dinámica de código debido aque la tecnología de XML está constantemente evolucionandocon mucha rapidez.
PATRONES DE ARQUITECTURA PARA APLICACIONES WEB
� Cliente Web Delgado� Cliente Web Grueso� Cliente Web Grueso�Web Object
CLIENTE WEB DELGADO
� Es el más utilizado en aplicacionespara la Internet� Se utiliza cuando los clientes tienenpoco poder de computación o no sepoco poder de computación o no setiene control sobre su configuración� Toda la lógica de trabajo se ejecuta enel servidor� El visualizador es simplemente uninstrumento de interfaz de usuario
ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO
� Visualizador• Cualquier visualizador capaz de mostrarformularios y aceptar galletas
� Servidor Web� Servidor Web• Los visualizadores interactúan con el sistema sólopor medio del servidor Web.• Procesan todas las solicitudes y pasan el control aotros servidores cuando las solicitudes son demódulos compilados o páginas con scripts deservidor.
ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO
� Conexión HTTP• Toda la comunicación entre el cliente y el servidorse realiza con HTTP
• Cada vez que el cliente y el servidor intercambianinformación, se produce una nueva conexión HTTP
• En ocasiones se utiliza una variante llamadaHTTPS o HTTP con SSL (Secure Sockets Layer), lacual permite cifrar la información transmitidautilizando algoritmos asimétricos (clave pública/claveprivada)
ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO
� Páginas HTML estáticas• Páginas con interfaz de usuario e información queno es producto de un procesamiento por parte delservidor
• Típicamente contienen información explicativa oformularios
• Cuando el servidor Web recibe una solicitud por unade estas páginas, simplemente envía el contenidoarchivo al cliente
ELEMENTOS DEL PATRÓN CLIENTE WEB DELGADO
� Páginas de Servidor• Páginas producto de un procesamiento por partedel servidor
• Típicamente implementadas mediante páginascon scripts del lado del servidor o mediantemódulos compilados
• Potencialmente tienen acceso a todos losrecursos 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ógicadel lado del servidor• Se acopla con el servidor Web• Puede, de hecho, ser una extensión del servidorWeb, pero en algunos casos puede ser ejecutado enWeb, pero en algunos casos puede ser ejecutado enotra computadora.
� Sistemas existentes•Componentes a los cuales se tiene acceso medianteinterfaces de programación o servidores de aplicacióncorrespondientes•Ejemplos: Bases de datos, sistemas mercantiles,sistemas SCADA, etc.
Visualizador
HTTP
ELEMENTOS DEL PATRÓN CLIENTEWEB DELGADO
Servidor WebServidor deAplicaciones
PáginasHTML
Objetos deNegocio/SistemasExistentes
Páginas deServidor
CLIENTE WEB GRUESO
• Extiende el patrón Cliente Web Delgado mediante eluso 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 haycontrol 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 tieneacceso al DOM
� Controles ActiveX� Controles ActiveX• Objetos COM que pueden ser referenciados por elcliente• Tienen acceso a todos los recursos del cliente• Pueden ser usados para incorporar lógica detrabajo y/o implementar interfaces de usuariosofisticadas• Seguridad mediante firma digital, la cual permiteestablecer la identidad del autor del componente
ELEMENTOS DEL PATRÓN CLIENTE WEB GRUESO
� Java Applet• Componente compilado y autocontenido que seejecuta en el visualizador
• Tienen acceso limitado a los recursos del cliente• Tienen acceso limitado a los recursos del cliente
• Pueden ser usados para incorporar lógica detrabajo y/o implementar interfaces de usuariosofisticadas
• Seguridad mediante firma digital, la cual permiteaumentar el acceso a los recursos del cliente
Visualizador
HTTP
Applets/ActiveX
ELEMENTOS DEL PATRÓN CLIENTE WEB GRUESO
Servidor WebServidor deAplicaciones
PáginasHTML
Objetos deNegocio/SistemasExistentes
Páginas deServidor
HTTP
� Se basa en la utilización de la tecnologíaWeb como parte de un sistema cliente/servidorde objetos distribuidos� Es apropiado para ser usado en ambientesdonde hay control sobre la configuración del
WEB OBJECT
donde hay control sobre la configuración delvisualizador y la conexión de red (e.g.Intranets)� Se utilizan protocolos de objetos distribuidospara la comunicación entre clientes yservidores
ELEMENTOS DEL PATRONWEB Object
� IIOP (Internet InterORB Protocol)•Protocolo de comunicación entre objetos CORBA(Common Object Request Broker Architecture) enredes IP
� DCOM (Distributed COM)•Protocolo para objetos COM (ActiveX) distribuidos
� RMI (Remote Method Invocation)•Interfaz de programación Java para objetosdistribuidos. JRMP (Java Remote Method Protocol)es el protocolo más utilizado, pero también puedeutilizarse IIOP.
Visualizador
AppletsActiveXCliente
HTTP
ELEMENTOS DEL PATRONWEB DELIVERY
Servidor WebServidor deAplicaciones
PáginasHTML
ActiveXServidor
Objetos deNegocio
Páginas deServidor
EnterpriseJavaBeans
DCOM
RMI IIOP
SEGURIDAD
� Aseguramiento físico de lascomputadoras que contienen los serviciosde la aplicación y de los equipos de redasociados.
� Aseguramiento lógico consta de lossiguientes aspectos:
• Autenticación• Confidencialidad• Integridad• No repudiación
CONCEPTOS FUNDAMENTALES
� CERTIFICADO DIGITALDocumento firmado digitalmente por unaentidad (Autoridad de Certificados) queafirma que la clave pública de otra entidadtiene un determinado valor.
� CLAVE PÚBLICANúmero asociado a una entidad que debeser conocido por cualquiera que deseeinteractuar de manera segura con dichaentidad. Se utiliza para verificar firmasdigitales.
CONCEPTOS FUNDAMENTALES
� FIRMA DIGITALSecuencia corta de datos que se calculaaplicando un algoritmo sobre otra secuencia dedatos (mensaje) que se desea firmar utilizandola clave privada de la entidad firmante. Permitedeterminar si la secuencia de datos ha sidodeterminar si la secuencia de datos ha sidomodificada durante la transmisión.
� CLAVE PRIVADANúmero asociado a una entidad que sólo debeser conocido por dicha entidad. Se utiliza paracalcular firmas digitales.
MENSAJERESULTADO
HASHFUNCIÓNHASH
FUNCIÓNFIRMA
FIRMADIGITAL
CLAVEPRIVADA
MENSAJEAL DESTINATARIO
FIRMA DIGITAL
FIRMADIGITAL
MENSAJE FUNCIÓNHASH
RESULTADOHASH
FUNCIÓNVERIFICACIÓN
CLAVEPÚBLICA
VALIDEZ
PRIVADA
DEL FIRMANTE
AUTENTICACION
� Identificación del cliente con el servidor
� Puede ser implementada por el servidorWeb o por la aplicación mismaWeb o por la aplicación misma
� Puede manejarse con contraseñas o concertificados digitales
CONFIDENCIALIDAD
� Cifrado de la información transmitida
� La tecnología de cifrado más utilizada esSSL
� SSL es una capa que permite cifrar lainformación entre el protocolo de la capade aplicación y la capa de transporte
INTEGRIDAD
� Consiste en garantizar que lainformación transmitida no seamodificada en el camino
� Este aspecto es cubierto por SSL� Este aspecto es cubierto por SSL
� Cada mensaje cifrado por SSL tieneadicionalmente códigos de autenticaciónde mensaje (MAC), los cuales estánbasados en firmas digitales.
NO REPUDIACION
� Consiste en asegurar que ambas partesen una transacción estén de acuerdo enque ésta se ha llevado a cabo
� Es implementada mediante certificados� Es implementada mediante certificadosy firmas digitales, que permiten demostrarque el dueño del certificado estuvoinvolucrado en la transacción