Professional Documents
Culture Documents
Cliente/Servidor
Dr. Ismael Figueroa
ismael.figueroa@pucv.cl
http://www.inf.ucv.cl/~ifigueroa
IBC 3-23
Resumen Historia de la Web
1994
1989 1991 1992
Navegadores: 1995
Propuesta de Protocolo HTTP, Navegador
Netscape, Opera, Javascript
Tim Berners-Lee Lenguaje HTML Mosaic
Internet Explorer
… mucho más!!!
http://www.evolutionoftheweb.com
¿Por qué ha sido tan exitosa la web?
¿Por qué ha sido tan exitosa la web?
Probablemente debido a una combinación de los siguientes factores:
Páginas Web
< Sitio Web
<< Aplicación Web
Página vs Sitio vs Aplicación
Páginas Web
< Sitio Web
<< Aplicación Web
○ Comienza alrededor del año 2001, con una explosión en el desarrollo de tecnologías web
http://www.oreilly.com/pub/a//web2/archive/what-is-web-20.html
○ Generación dinámica de contenido y los sitios como aplicaciones
Web X.0
● Web 3.0 - La Web de las Máquinas:
○ Esta información además debe ser “fácilmente” accesible y manipulable por software más
que por humanos
○ Esta accesibilidad usualmente es dada por Web Services, que igual se usan en Web 2.0
Aplicación Web
“Navegadorcito”
¿Qué entendemos por arquitectura?
¿Mejor?
Client
Application
Web Server BD
Server
Componentes Generales Arquitectura Física
● Cliente: generalmente un navegador (user-agent) controlado por un usuario para
acceder a recursos web o para operar una aplicación web
● Web Server: servidor que recibe y procesa las peticiones HTTP de los clientes
El lenguaje HTML es
esencialmente el estándar para los
documentos de hipertexto usados
en la web
Direccionamiento Uniforme de Recursos
Un gran problema de la Web es cómo identificar los recursos que pueden estar en cualquier
lugar de Internet.
● URN (Universal Resource Name): solución ideal, un nombre universal para cada
recurso, independiente de servidor, puerto etc. Funciona por ejemplo en artículos
científicos -- DOI
● URL (Universal Resource Locator): índica cómo acceder a un recurso, qué protocolo
hay que usar, y dónde está.
https://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn
Esquema general de sintáxis URX
scheme://host[:port]/path/.../[;url-params][?query-string][#anchor]
https://www.skorks.com/2010/05/what-every-developer-should-know-about-urls/
Esquema general de sintaxis URX
scheme://host[:port]/path/.../[;url-params][?query-string][#anchor]
● Stateless
Recursos
HTTP Response
Comunicación mediante HTTP
GET www.inf.ucv.cl
Recursos
HTTP/1.1 200 OK
HTTP Request - Esquema General
Upgrade-Insecure-Requests: 1
X-DevTools-Emulate-Network-Conditions-Client-Id: d3cdde31-8869-4df9-95f1-b7aaa8801565
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/60.0.3112.101 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: es-419,es;q=0.8,en;q=0.6,gl;q=0.4
Cookie: PHPSESSID=a8r0a8usadtvs3q2u3ddpai7n2;
HTTP Request - Ejemplo
GET / HTTP/1.1
Host: www.inf.ucv.cl
Upgrade-Insecure-Requests: 1
X-DevTools-Emulate-Network-Conditions-Client-Id: d3cdde31-8869-4df9-95f1-b7aaa8801565
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/60.0.3112.101 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: es-419,es;q=0.8,en;q=0.6,gl;q=0.4
Cookie: PHPSESSID=a8r0a8usadtvs3q2u3ddpai7n2;
Métodos HTTP para los Requests
Los métodos de request permiten diferenciar distintos tipos de mensajes, con
restricciones o características particulares, para que el servidor web y los clientes
puedan diferenciar lo que se busca hacer. Los métodos más comunes:
[response body]
HTTP Response - Ejemplo
HTTP/1.1 200 OK
Cache-Control:max-age=0, no-cache, no-store, must-revalidate
Connection:close
Content-Encoding:gzip
Content-Length:13533
Content-Type:text/html; charset=UTF-8
Date:Sat, 19 Aug 2017 00:27:38 GMT
Server:Apache/2.2.15 (CentOS)
<!doctype html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="es"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="google-site-verification" content="yAcvfuRWPXQRUBEISVsNdJBFCpt6Jg1su76n3OK0Noc"/>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
Códigos de Status para las Responses
El código de status en las respuestas indica al cliente qué paso con la petición:
Header-name: value
Se usan tanto en los requests como en las responses, aunque hay algunos que
sólo tienen sentido al ser enviados por el cliente, o en una respuesta del servidor.
Headers Generales
● Date: especifica la fecha y hora en que el mensaje fue creado
● Warning: se utiliza para emitir texto que debiera ser revisado por humanos,
ante potenciales problemas
Headers solo en Requests
● User-Agent: identifica el software, usualmente el navegador, usado para
generar el request