Está en la página 1de 21

Facultad de Ingeniería Programación y Servicios Web

Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

Contexto: la WWW
En informática, la World Wide Web, cuya traducción podría ser Red Global Mundial o "Red de Amplitud
Mundial", es un sistema de documentos de hipertexto y/o hipermedios enlazados y accesibles a través
de Internet. Con un navegador web, un usuario visualiza sitios web compuestos de páginas web que
pueden contener texto, imágenes, videos u otros contenidos multimedia, y navega a través de ellas
usando hiperenlaces.

La Web fue creada alrededor de 1989 por el inglés Tim Berners-Lee y el belga Robert Cailliau mientras
trabajaban en el CERN en Ginebra, Suiza, y publicado en1992. Desde entonces, Berners-Lee ha jugado un
papel activo guiando el desarrollo de estándares Web (como los lenguajes de marcado con los que se
crean las páginas web), y en los últimos años ha abogado por su visión de una Web Semántica.

Introducción
A finales de la década de los ochenta la interconexión de miles de redes de área local había convertido la
Internet en el mayor almacén de datos que jamás hubiese existido, pero también en el más caótico. Las
posibilidades eran enormes, pero las dificultades resultaban frustrantes: formatos incompatibles,
programas distintos, protocolos heterogéneos, etc. Se imponía pues la necesidad de simplificar el acceso
a este caudal de información, hacerlo más sencillo y homogéneo.

WAIS, Desarrollado a partir de 1989 por un grupo de empresas sólo fué una solución parcial: los datos
debían indexarse con el nuevo software y distribuirse por medio de un nuevo protocolo, es decir, había
que realizar un trabajo de adaptación de lo ya existente al nuevo sistema. El Gopher de la Universidad de
Minnesota, ampliamente difundido desde 1991, aportó algo más: por medio de un sistema simple de
ventanas (o de menús) se accede a todo tipo de archivos de texto, imágenes , bases de datos, etc., sin
tener que preocuparse por su localización física en la red, el formato o el protocólo de recuperación: ftp y
wais, por ejemplo, son protocolos que el gopher maneja desde el principio, además del suyo propio. Un
interface unificado para el acceso a información distribuida: este ha sido el objetivo del gopher, y también
el del Web. El proyecto World-Wide Web del CERN ha venido a suponer otra vuelta de tuerca en el intento
de poner efectivamente al alcance de los usuarios el espacio virtual de conocimiento que es la Internet.

LA ARQUITECTURA DEL WORLD-WIDE WEB


1
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

El diseño del World-Wide Web sigue el modelo cliente-servidor: un paradigma de división del trabajo
informático en el que las tareas se reparten entre un número de clientes que efectúan peticiones de
servicios de acuerdo con un protocolo, y un número de servidores que las atienden (Malkin, 1993). En el
Web, nuestras estaciones de trabajo son clientes que demandan hipertextos a los servidores.

Para poner en marcha un sistema como como éste ha sido necesario:

a) Diseñar e implementar un nuevo protocolo que permitiera realizar saltos hipertextuales, esto es, de
un nodo de origen a uno de destino, que podria ser un texto o parte de un texto, una imagen, un sonido,
una animación, fragmento de vídeo, etc. Es decir, cualquier tipo de información en formato electrónico.
Este protololo se denomina HTTP (HyperText Transfer Protocol) y es el "lenguaje" que "hablan" los
servidores del WWW.

b) Inventar un lenguaje para representar hipertextos que incluyera información sobre la estructura y el
formato de representación y, especialmente, indicar origen y destino de saltos hipertextuales. Este
lenguaje es el HTML o (HyperTextex markup Language).

c) Idear una forma de codificar las instrucciones para los saltos hipertextuales de un objeto a otro de la
Internet. Dada la variedad de protocolos, y por tanto, formas de almacenamiento y recuperación de la
información, en uso en la Internet, esta información es vital para que los clientes (ver el siguiente punto)
puedan acceder a dicha información.

d) Desarrollar aplicaciones cliente para todo tipo de plataforma y resolver el problema de cómo acceder
a información que está almacenada y es accesible a través de protocolos diversos (FTP, NNTP, Gopher,

2
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

HTTP, X.500, WAIS, etc.) y representar información multiformato (texto, gráficos, sonidos, fragmentos de
vídeo, etc.). A este fin se han desarrollado diversos clientes, Google Chrome y Mozilla.

Funcionamiento de la Web
Para la visualización de una página web de la World Wide Web se introduce normalmente la URL de la
página en el navegador web, o siguiendo un enlace de hipertexto a esa página o recurso. En ese momento
el navegador comienza una serie de comunicaciones, transparentes para el usuario, para obtener los
datos de la página y visualizarla.
El primer paso consiste en traducir la parte nombre del servidor de la URL en una dirección IP usando la
base de datos distribuida de Internet conocida como DNS. Esta dirección IP es necesaria para contactar
con el servidor web y poder enviarle paquetes de datos.
El siguiente paso es enviar una petición HTTP al servidor Web solicitando el recurso. En el caso de una
página web típica, primero se solicita el texto HTML y luego es inmediatamente analizado por el
navegador, el cual, después, hace peticiones adicionales para los gráficos y otros ficheros que formen
parte de la página
Al recibir los ficheros solicitados desde el servidor web, el navegador renderiza la página tal y como se
describe en el código HTML, el CSS y otros lenguajes web. Al final se incorporan las imágenes y otros
recursos para producir la página que ve el usuario en su pantalla.
La mayoría de las páginas web contienen hiperenlaces a otras páginas relacionadas y algunas también
contienen descargas, documentos fuente, definiciones y otros recursos web.
Esta colección de recursos útiles y relacionados, interconectados a través de enlaces de hipertexto, es lo
que ha sido denominado como 'red' (web, en inglés) de información. Al trasladar esta idea a Internet, se
creó lo que Tim Berners-Lee llamó WorldWideWeb (un término escrito en CamelCase, posteriormente
desechado) en 1990.

Uso de cache en dispositivos:


Si un usuario accede de nuevo a una página después de un pequeño intervalo, es probable que no se
vuelvan a recuperar los datos del servidor web de la forma en que se explicó en el apartado anterior. Por
defecto, los navegadores almacenan en una caché del disco duro local todos los recursos web a los que el
usuario va accediendo. El navegador enviará una petición HTTP sólo si la página ha sido actualizada desde
la última carga, en otro caso, la versión almacenada se reutilizará en el paso de renderizado para agilizar
la visualización de la página.
Esto es particularmente importante para reducir la cantidad de tráfico web en Internet. La decisión sobre
la caducidad de la página se hace de forma independiente para cada recurso (imagen, hoja de estilo,

3
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

ficheros JavaScript, etc, además de para el propio código HTML). Sin embargo en sitios de contenido muy
dinámico, muchos de los recursos básicos sólo se envían una vez por sesión. A los diseñadores de sitios
web les interesa reunir todo el código CSS y JavaScript en unos pocos ficheros asociados a todo el sitio
web, de forma que pueden ser descargados en las cachés de los usuarios y reducir así el tiempo de carga
de las páginas y las peticiones al servidor.
Hay otros componentes de Internet que pueden almacenar contenido Web. El más común en la práctica
son los frecuentes firewalls de empresa y académicos donde se pueden almacenar los recursos web
solicitados por un usuario para el beneficio de todos los que estén conectados a ese firewall.
Algunos buscadores como Google, Yahoo!, también almacenan contenidos de sitios Web.
Aparte de las utilidades creadas en los servidores Web que pueden determinar cuándo los ficheros físicos
han sido actualizados, los diseñadores de páginas web generadas dinámicamente pueden controlar las
cabeceras HTTP enviadas a los usuarios, de forma que las páginas intermedias o sensibles a problemas de
seguridad no sean guardadas en caché. Por ejemplo, en los bancos on line y las páginas de noticias se
utiliza frecuentemente este sistema.
Esto nos ayuda a comprender la diferencia entre los verbos HTTP 'GET' y 'POST' - los datos solicitados con
GET pueden ser almacenados en la caché, si se cumplen las otras condiciones, mientras que con los datos
obtenidos después de enviar información al servidor con POST normalmente no se puede.

El prefijo WWW en las direcciones Web


Es muy común encontrar el prefijo "WWW" al comienzo de las direcciones web debido a la costumbre de
nombrar a los host de Internet (los servidores) con los servicios que proporcionan. De esa forma, por
ejemplo, el nombre de host para un servidor web normalmente es "WWW", para un servidor FTP se suele
usar "ftp", y para un servidor de noticias USENET, "news" o "nntp" (en relación al protocolo de
noticias NNTP). Estos nombres de host aparecen como subdominios de DNS, como en
"www.example.com".
Algunos navegadores web añaden automáticamente "www." al principio, y posiblemente ".com"" al final,
en las URL que se teclean, si no se encuentra el host sin ellas. Mozilla Firefox, Google
Chrome y Opera también añadirán "http://www." y ".com" al contenido de la barra de dirección si se
pulsan al mismo tiempo las teclas de Control y Enter.

Domain Name System


(o DNS, en español: sistema de nombre de dominio) es un sistema de nomenclatura jerárquica para
computadoras, servicios o cualquier recurso conectado al internet o a una red privada. Este sistema asocia
información variada con nombres de dominios asignado a cada uno de los participantes. Su función más
importante, es traducir (resolver) nombres inteligibles para los humanos en identificadores binarios
asociados con los equipos conectados a la red, esto con el propósito de poder localizar y direccionar estos
equipos mundialmente.

4
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

El DNS es una base de datos distribuida y jerárquica que almacena información asociada a nombres de
dominio en redes como Internet. Aunque como base de datos el DNS es capaz de asociar diferentes tipos
de información a cada nombre, los usos más comunes son la asignación de nombres de dominio
a direcciones IP y la localización de los servidores de correo electrónico de cada dominio.
La asignación de nombres a direcciones IP es ciertamente la función más conocida de los protocolos DNS.
Por ejemplo, si la dirección IP del sitio FTP de prox.mx es 200.64.128.4, la mayoría de la gente llega a este
equipo especificando ftp.prox.mx y no la dirección IP. Además de ser más fácil de recordar, el nombre es
más fiable. La dirección numérica podría cambiar por muchas razones, sin que tenga que cambiar el
nombre.
Componentes
Para la operación práctica del sistema DNS se utilizan tres componentes principales:

▪ Los Clientes DNS: Un programa cliente DNS que se ejecuta en la computadora del usuario y que
genera peticiones DNS de resolución de nombres a un servidor DNS (Por ejemplo: ¿Qué dirección IP
corresponde a nombre.dominio?);
▪ Los Servidores DNS: Que contestan las peticiones de los clientes. Los servidores recursivos tienen la
capacidad de reenviar la petición a otro servidor si no disponen de la dirección solicitada.
▪ Y las Zonas de autoridad, porciones del espacio de nombres de dominio que almacenan los datos.
Cada zona de autoridad abarca al menos un dominio y posiblemente sus subdominios, si estos últimos
no son delegados a otras zonas de autoridad.

Entendiendo las partes de un nombre de dominio


Un nombre de dominio usualmente consiste en dos o más partes (técnicamente etiquetas), separadas por
puntos cuando se las escribe en forma de texto. Por ejemplo,www.mohamedalid.org o es.Wikipedia.org

▪ A la etiqueta ubicada más a la derecha se le llama dominio de nivel superior (inglés < Top Level
Domain). Como org en www.mahomedalid.org o es en www.Wikipedia.es
▪ Cada etiqueta a la izquierda especifica una subdivisión o subdominio. Nótese que "subdominio"
expresa dependencia relativa, no dependencia absoluta. En teoría, esta subdivisión puede tener hasta
127 niveles, y cada etiqueta contener hasta 63 caracteres, pero restringido a que la longitud total del
nombre del dominio no exceda los 255 caracteres, aunque en la práctica los dominios son casi siempre
mucho más cortos.
▪ Finalmente, la parte más a la izquierda del dominio suele expresar el nombre de la
máquina (en inglés hostname). El resto del nombre de dominio simplemente especifica la manera de
crear una ruta lógica a la información requerida. Por ejemplo, el dominio es.Wikipedia.org tendría el
nombre de la máquina "es", aunque en este caso no se refiere a una máquina física en particular.
El DNS consiste en un conjunto jerárquico de servidores DNS. Cada dominio o subdominio tiene una o
más zonas de autoridad que publican la información acerca del dominio y los nombres de servicios de

5
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

cualquier dominio incluido. La jerarquía de las zonas de autoridad coincide con la jerarquía de los
dominios. Al inicio de esa jerarquía se encuentra los servidores raíz: los servidores que responden cuando
se busca resolver un dominio de primer y segundo nivel.
DNS en el mundo real
Los usuarios generalmente no se comunican directamente con el servidor DNS: la resolución de nombres
se hace de forma transparente por las aplicaciones del cliente (por ejemplo, navegadores, clientes de
correo y otras aplicaciones que usan Internet). Al realizar una petición que requiere una búsqueda de
DNS, la petición se envía al servidor DNS local del sistema operativo. El sistema operativo, antes de
establecer ninguna comunicación, comprueba si la respuesta se encuentra en la memoria caché. En el
caso de que no se encuentre, la petición se enviará a uno o más servidores dns.
La mayoría de usuarios domésticos utilizan como servidor DNS el proporcionado por el proveedor de
servicios de Internet. La dirección de estos servidores puede ser configurada de forma manual o
automática mediante DHCP. En otros casos, los administradores de red tienen configurados sus propios
servidores DNS.

En cualquier caso, los servidores DNS que reciben la petición, buscan en primer lugar si disponen de la
respuesta en la memoria caché. Si es así, sirven la respuesta; en caso contrario, iniciarían la búsqueda de
manera recursiva. Una vez encontrada la respuesta, el servidor DNS guardará el resultado en su memoria
caché para futuros usos y devuelve el resultado.

6
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

Jerarquía DNS

Localizador uniforme de recursos


Un localizador uniforme de recursos, más comúnmente denominado URL (sigla en inglés de uniform
resource locator), es una secuencia de caracteres, de acuerdo a un formato modélico y estándar, que se
usa para nombrar recursos en Internet para su localización o identificación, como por ejemplo
documentos textuales, imágenes, videos, presentaciones digitales, etcétera.
Los localizadores uniformes de recursos fueron una innovación fundamental en la historia de la Internet.
Fueron usadas por primera vez por Tim Berners-Lee en 1991, para permitir a los autores de documentos
establecer hiperenlaces en la World Wide Web. Desde 1994, en los estándares de la Internet, el concepto
de URL ha sido incorporado dentro del más general de URI (uniform resource identifier, en español
identificador uniforme de recurso), pero el término URL aún se utiliza ampliamente.

Esquema URL

Un URL se clasifica por su esquema, que generalmente indica el protocolo de red que se usa para
recuperar, a través de la red, la información del recurso identificado. Un URL comienza con el nombre de
su esquema, seguida por dos puntos, seguido por una parte específica del esquema'.
Algunos ejemplos de esquemas URL:

▪ http - recursos HTTP


▪ https - HTTP sobre SSL
▪ ftp - File Transfer Protocol
▪ mailto - direcciones de correo electrónico
▪ ldap - búsquedas LDAP Lightweight Directory Access Protocol

7
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

▪ file - recusos disponibles en el sistema local, o en una red local


▪ news - grupos de noticias Usenet (newsgroup)
▪ gopher - el protocolo Gopher (ya en desuso)
▪ telnet - el protocolo telnet
Sintaxis genérica de una URL
Usando un conjunto limitado de caracteres, compatible con el subconjunto imprimible de ASCII, la sintaxis
genérica permite a los URL representar la dirección de un recurso, independientemente de la forma
original de los componentes de la dirección.
Los esquemas que usan protocolos típicos basados en conexión usan una sintaxis común para "URI
genéricos", definida a continuación:

esquema://autoridad/ruta?consulta#fragmento

La autoridad consiste usualmente en el nombre o Dirección IP de un servidor, seguido a veces de dos


puntos (":") y un número de Puerto TCP. También puede incluir un nombre de usuario y una clave, para
autenticarse ante el servidor.
La ruta es la especificación de una ubicación en alguna estructura jerárquica, usando una barra diagonal
("/") como delimitador entre componentes.
La consulta habitualmente indica parámetros de una consulta dinámica a alguna base de datos o proceso
residente en el servidor.
El fragmento identifica a una porción de un recurso, habitualmente una ubicación en un documento.

Ejemplo: URL en HTTP [editar]


Los URL empleados por HTTP, el protocolo usado para transmitir páginas web, es el tipo más popular de
URL y puede ser usado para mostrarse como ejemplo. La sintaxis de un URL HTTP es:

esquema://anfitrión:puerto/ruta?parámetro=valor#enlace

▪ esquema, en el caso de HTTP, en la mayoría de las veces equivale a http, pero también puede
ser https cuando se trata de HTTP sobre una conexión TLS (para hacer más segura la conexión).
▪ anfitrión, la cual es probablemente la parte que más sobresale de un URL, es en casi todos los casos
el nombre de dominio de un servidor, p.ej.: www.wikipedia.org, google.com, etc.
▪ La porción :puerto especifica un número de puerto TCP. Usualmente es omitido (en este caso, su valor
por omisión es80) y probablemente, para el usuario es lo que tiene menor relevancia en todo el URL.

8
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

▪ La porción ruta es usada por el servidor (especificado en anfitrión) de cualquier forma en la que su
software lo establezca, pero en muchos casos se usa para especificar un nombre de archivo,
posiblemente precedido por nombres de directorio. Por ejemplo, en la ruta /wiki/Vaca, wiki sería un
(seudo-)directorio y Vaca sería un (seudo-)nombre de archivo.
▪ La parte mostrada arriba como ?parámetro=valor se conoce como porción de consulta (o también,
porción de búsqueda). Puede omitirse, puede haber una sola pareja parámetro-valor como en el
ejemplo, o pueden haber muchas de ellas, lo cual se expresa
como ?param=valor&otroParam=valor&.... Las parejas parámetro-valor únicamente son relevantes si
el archivo especificado por la ruta no es una página web simple y estática, sino algún tipo de página
automáticamente generada. El software generador usa las parejas parámetro-valor de cualquier
forma en que se establezca; en su mayoría transportan información específica a un usuario y un
momento en el uso del sitio, como términos concretos de búsqueda, nombres de usuario, etc.
(Observe, por ejemplo, de qué forma se comporta el URL en la barra de direcciones de su navegador
durante una búsqueda Google: su término de búsqueda es pasado a algún programa sofisticado en
google.com como un parámetro, y el programa de Google devuelve una página con los resultados de
la búsqueda.)
▪ La parte #enlace, por último, es conocida como identificador de fragmento y se refiere a ciertos
lugares significativos dentro de una página; por ejemplo, esta página tiene enlaces internos hacia cada
cabecera de sección a la cual se puede dirigir usando el ID de fragmento. Esto es relevante cuando un
URL de una página ya cargada en un navegador permite saltar a cierto punto en una página extensa.
Un ejemplo sería este enlace, que conduce a esta misma página y al comienzo de esta sección.
(Observe cómo cambia el URL en la barra de dirección de su navegador cuando hace clic en el enlace.)
Otro ejemplo de un URL HTTP se encuentra abajo.

Otros ejemplos :

ftp://ftp.uji.es/pub/fichero.doc

http://www.uji.es

(URL de la página de entrada del servidor Web del Departamento de Educación de la Universitat
Jaume I, en el host www.uji.es)

gopher://gopher.uji.es

(URL de la entrada del servidor gopher del "Servei d'Informació del Campus (sic) de la Universitat
Jaume I")

mailto:jordi@edu.uji.es

9
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

(Este URL posibilita el envío de un mensaje de correo electrónico a la dirección jordi@edu.uji.es)

news:comp.infosystems.gopher

(URL del grupo de news comp.infosystems.gopher(

nntp://news.uji.es/comp.infosystems.gopher

(Este URL especifica el grupo de news comp.infosystems.gopher almacenado en el servidor


news.uji.es)

Hipertexto
Hipertexto en informática, es el nombre que recibe el texto que en la pantalla de un dispositivo
electrónico conduce a otro texto relacionado. La forma más habitual de hipertexto en documentos es la
de hipervínculos o referencias cruzadas automáticas que van a otros documentos (lexias). Si
el usuario selecciona un hipervínculo el programa muestra el documento enlazado.
Es importante mencionar que el hipertexto no esta limitado a datos textuales, podemos encontrar dibujos
del elemento especificado, sonido o vídeo referido al tema.

Hipertexto como documento con hiperenlaces

Un hipertexto consta de los siguientes elementos: nodos o secciones, enlaces o hipervínculos y anclajes.
Los nodos son las partes del hipertexto que contienen información accesible para el usuario. Los enlaces
son las uniones o vínculos que se establecen entre nodos y facilitan la lectura secuencial o no secuencial
por los nodos del documento. Los anclajes son los puntos de activación de los enlaces.
Los hipertextos pueden contener otros elementos, pero los tres anteriores son los componentes mínimos.
Otros elementos adicionales pueden ser los sumarios e índices. En este sentido, se habla, por ejemplo, de
hipertextos de grado 1, 2, etc., según tengan la cantidad de elementos necesarios. Actualmente la mejor
expresión de los hipertextos son las páginas web navegables.

Comportamiento de los enlaces en los navegadores WEB [editar]


Un navegador web normalmente muestra un hiperenlace de alguna forma distintiva, por ejemplo en un
color, letra o estilo diferente. El comportamiento y estilo de los enlaces se puede especificar utilizando
lenguaje CSS.

10
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

Cuando el usuario activa el enlace (por ejemplo pinchando sobre él con el ratón) el navegador mostrará
el destino del enlace. Si el destino no es un archivo HTML, dependiendo del tipo de archivo y del
navegador y sus plugins, se puede activar otro programa para abrir el archivo.
El código HTML contiene algunas o todas las características principales de un enlace:

▪ link target (URL) (destino)o (ubicacion)


▪ link label (etiqueta)
▪ link title (título)
▪ link class or link id (clase)
Utiliza el elemento "a" de HTML con el atributo "href" y opcionalmente también los atributos "title", y
"class" o "id":

<a href="URL" title="título del enlace" class="CCS o clase del enlace">etiqueta del enlace</a>

11
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

HTTP: HyperText Transfer Protocol


El HTTP (HyperText Transfer Protocol) es el protocolo de alto nivel del World-Wide Web que rige el
intercambio de mensajes entre clientes y servidores del Web. HTTP fue desarrollado por el World
Wide Web Consortium y la Internet Engineering Task Force.

Un protocolo es: "Una descripción formal de los formatos de los mensajes y las reglas que deben seguir
dos ordenadores para intercambiar dichos mensajes”. Los protocolos pueden describir detalles de bajo
nivel de los interfaces de máquina a máquina (por ejemplo, el orden en el cual deben enviarse bits y bytes
a través de un cable) o intercambios de alto nivel entre programas (por ejemplo, la forma en que dos
programas transfieren un fichero a través de la Internet)." (Malkin y LaQuey Parker, 1993, pág. 39).

El HTTP versión 1.0 es un protocolo genérico orientado a objetos que no mantiene la conexión entre
transacciones (Berners-Lee, 1993d). Ha sido especialmente diseñado para atender las exigencias de un
sistema hipermedia distribuido como es el World-Wide Web. Sus características principales son:

Ligereza: reduce la comunicación entre clientes y servidores a intercambios discretos, de modo que no
sobrecarga la red y permite saltos hipertextuales rápidos.

Generalidad: puede utilizarse para transferir cualquier tipo de datos, según el estándar MIME. Esto
incluye también los que desarrollen en el futuro, ya que el cliente y el servidor pueden negociar en
cualquier momento el modo de representación de los datos: el cliente notifica al servidor una lista de
formatos que entiende, y en adelante el servidor sólo remitirá al cliente datos que este sea capaz de
manejar. El cliente debe aceptar al menos dos formatos: text/plain (texto normal) y text/html (hipertexto
codificado en HTML: el lenguaje en el que se escriben los hipertextos del Web.

Extensibilidad: contempla distintos tipos de transacción entre clientes y servidores ("métodos", en la


jerga HTTP), y la futura implementación de otros nuevos. Esto abre posibilidades más allá de la simple
recuperación de objetos de la red: búsquedas, anotaciones, etc.

Esquema de transacciones http: El esquema básico de cualquier transacción HTTP entre un cliente y un
servidor es el siguiente (Berners-Lee, 1993):

Conexión: El cliente establece una conexión con el servidor a través del puerto 80 (puerto estándar), u
otro especificado.

Petición: El cliente envía una petición al servidor.

Respuesta: El servidor envía al cliente la respuesta (esto es, el objeco demandado o un código de error).

Cierre: Ambas partes cierran la conexión.

12
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

La eficiencia del HTTP posibilita la transmisión de objetos multimedia y la realización de saltos


hipertextuales con una rápidez razonable.

Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un


servidor. Al cliente que efectúa la petición (un navegador web) se lo conoce como "user agent" (agente
del usuario). A la información transmitida se la llama recurso y se la identifica mediante un localizador
uniforme de recursos (URL). Los recursos pueden ser archivos, el resultado de la ejecución de un
programa, una consulta a una base de datos, la traducción automática de un documento, etc.
HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones
anteriores. El desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se
usan las cookies, que es información que un servidor puede almacenar en el sistema cliente. Esto le
permite a las aplicaciones web instituir la noción de "sesión", y también permite rastrear usuarios ya que
las cookies pueden guardarse en el cliente por tiempo indeterminado.

Transacciones HTTP

Una transacción HTTP está formada por un encabezado seguido, opcionalmente, por una línea en blanco
y algún dato. El encabezado especificará cosas como la acción requerida del servidor, o el tipo de dato
retornado, o el código de estado.
El uso de campos de encabezados enviados en las transacciones HTTP le dan gran flexibilidad al protocolo.
Estos campos permiten que se envíe información descriptiva en la transacción, permitiendo así la
autenticación, cifrado e identificación de usuario.
Un encabezado es un bloque de datos que precede a la información propiamente dicha, por lo que muchas
veces se hace referencia a él como metadato —porque tiene datos sobre los datos—.
Si se reciben líneas de encabezado del cliente, el servidor las coloca en las variables de ambiente
de CGI con el prefijo HTTP_ seguido del nombre del encabezado. Cualquier carácter guión ( - ) del nombre
del encabezado se convierte a caracteres "_".
El servidor puede excluir cualquier encabezado que ya esté procesado, como Authorization, Content-
type y Content-length. El servidor puede elegir excluir alguno o todos los encabezados si incluirlos excede
algún límite del ambiente de sistema. Ejemplos de esto son las variables HTTP_ACCEPT y
HTTP_USER_AGENT.

▪ HTTP_ACCEPT. Los tipos MIME que el cliente aceptará, dado los encabezados HTTP. Otros protocolos
quizás necesiten obtener esta información de otro lugar. Los elementos de esta lista deben estar
separados por una coma, como lo dice la especificación HTTP: tipo, tipo.

▪ HTTP_USER_AGENT. El navegador que utiliza el cliente para realizar la petición. El formato general
para esta variable es: software/versión biblioteca/versión.

13
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

El servidor envía al cliente:

▪ Un código de estado que indica si la petición fue correcta o no. Los códigos de error típicos indican
que el archivo solicitado no se encontró, que la petición no se realizó de forma correcta o que se
requiere autenticación para acceder al archivo.
▪ La información propiamente dicha. Como HTTP permite enviar documentos de todo tipo y formato,
es ideal para transmitir multimedia, como gráficos, audio y video. Esta libertad es una de las mayores
ventajas de HTTP.
▪ Información sobre el objeto que se retorna.
Ten en cuenta que la lista no es una lista completa de los campos de encabezado y que algunos de ellos
sólo tienen sentido en una dirección.
Versiones

HTTP ha pasado por múltiples versiones del protocolo, muchas de las cuales son compatibles con
las anteriores. El cliente le dice al servidor al principio de la petición la versión que usa, y el
servidor usa la misma o una anterior en su respuesta.

HTTP/0.9: Obsoleta. Soporta sólo un comando, GET, y además no especifica el número de versión HTTP.
No soporta cabeceras. Como esta versión no soporta POST, el cliente no puede enviarle mucha
información al servidor.

HTTP/1.0 (mayo de 1996): Esta es la primera revisión del protocolo que especifica su versión en las
comunicaciones, y todavía se usa ampliamente, sobre todo en servidores proxy.

HTTP/1.1 (junio de 1999): las conexiones persistentes están activadas por defecto y funcionan bien con
los proxies. También permite al cliente enviar múltiples peticiones a la vez por la misma conexión
(pipelining) lo que hace posible eliminar el tiempo de Round-Trip delay por cada petición.

HTTP 2.0 (Hypertext Transfer Protocol versión 2) es un nuevo protocolo de red utilizado por la World Wide
Web que llega con el objetivo de actualizar el protocolo HTTP/1.1, con el que es compatible. No se
modifica la semántica de aplicación de Http. Todos los conceptos básicos, tales como los métodos HTTP,
códigos de estado, URI, y campos de cabecera, se mantienen sin cambios; sin embargo, HTTP 2.0 introduce
innumerables mejoras como el uso de una única conexión, la compresión de cabeceras o el servicio ‘server
push’.

Características del protocolo http2

HTTP/2 llega con el objetivo de mejorar las carencias existentes en las anteriores versiones. Sus
características son las siguientes:

14
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

Una única conexión

Con HTTP/1.x para cargar cualquier contenido web es necesario el uso de múltiples
conexiones TCP simultáneas para poder descargar todos los elementos de dicha web. En cambio, HTTP
2.0 utiliza una única conexión para ofrecer múltiples solicitudes y respuestas en paralelo. Teniendo en
cuenta que cada página web puede contener objetos HTML, CSS, JavaScript, imágenes, vídeo… la
diferencia de trabajo entre utilizar una única conexión o utilizar varias es elevada.

Eliminación de información redundante

Otro cambio de gran relevancia en HTTP 2.0 es la eliminación de información redundante cuyo objetivo
es evitar el envío de datos repetidos durante una misma conexión, así conseguiremos que se consuman
menos recursos, obteniendo una menor latencia.

Multiplexación

Con HTTP/1.1 el navegador envía una petición y debe esperar la respuesta del servidor para poder enviar
la siguiente solicitud. El problema es que las webs modernas suelen tener más de 100 objetos, por lo que
el retardo es grande. La solución que introduce HTTP 2.0 a este problema es la
denominada Multiplexación.

La multiplexación permite enviar y recibir varios mensajes al mismo tiempo optimizando la comunicación.
Con la multiplexación se consigue reducir el número de conexiones mejorando considerablemente la
velocidad de carga y disminuyendo la congestión de los servidores web.

HTTP 2.0 es un protocolo binario

La ventaja que tiene el uso de un protocolo binario (lenguaje de las máquinas para intercambiar
información) es la facilidad para encontrar el comienzo y el final de cada frame, que es algo realmente
complicado en cualquier protocolo de texto. Además, los protocolos binarios son mucho más simples y
por lo tanto son menos propensos a tener errores que los protocolos de texto utilizados por las versiones
anteriores a HTTP 2.0.

Comunicación entre un host y un servidor con el servicio 'server push'

Servicio 'server push

15
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

El servicio “server push”5 también conocido como “cache push”, se basa en estimaciones para que el
servidor sea capaz de enviar información al usuario antes de que éste la solicite para que la información
esté disponible de forma inmediata.

La forma de actuar del servidor es enviar varias respuestas a una única solicitud del cliente, es decir,
además de la respuesta a la solicitud original, el servidor puede enviar recursos adicionales. Esto es así
porque una página web está formada por decenas de archivos referenciados que gracias al servicio “server
push” el servidor envía tras recibir una única solicitud ahorrando mensajes innecesarios.

HTTP 2.0 contiene un campo denominado ‘Ajustes’ con el que el cliente puede indicar si desea o no
obtener los recursos que proporciona el servicio ‘server push’.

Compresión de cabeceras para transmitir menos información

Con las versiones anteriores a HTTP 2.0, las cabeceras de los mensajes de solicitud eran de texto claro, sin
ningún tipo de compresión. El problema aparece como consecuencia del incremento de tamaño que
sufren estas cabeceras por los user-agent de los navegadores, al uso de cookies (también deben aparecer
en los mensajes de solicitud), etc. Además, cuando HTTP/1.1 envía una petición, debe esperar la respuesta
del servidor para poder enviar la siguiente solicitud, aumentado mucho el retardo sufrido.

Asimismo, hay que tener en cuenta que cuando un cliente pide numerosas peticiones a un mismo
servidor, los encabezamientos apenas cambian unos de otros, por lo que se envía mucha información
redundante.

Con HTTP 2.0 las cabeceras experimentan compresiones, con lo que se obtienen mejores tiempos de
respuesta y también se mejora la eficiencia (sobre todo en terminales móviles). El algoritmo empleado
para realizar la compresión de cabeceras es HPACK6 . HPACK es un algoritmo simple y poco flexible que
se basa en eliminar campos de cabecera redundantes, además de prevenir posibles vulnerabilidades.

Priorización de flujos

Un mensaje HTTP se puede dividir en múltiples fragmentos en su recorrido desde el cliente hasta el
servidor o desde servidor al cliente. El orden y el retardo con el que estas tramas llegan a su destino son
fundamentales, dado que algunos objetos de las webs son más importantes que otros. Nos interesará que
los objetos más relevantes cuenten con algún tipo de prioridad.

Para poder ‘controlar’ la prioridad que tienen las tramas, HTTP 2.0 permite asignar a cada flujo un peso
(entre 1 y 256) y una dependencia. Debemos ser conscientes de que las prioridades pueden variar durante
la ejecución.

Con las prioridades y la dependencia se hace un árbol de prioridades.

Ejemplo; Si A tiene un peso de 12 y B tiene un peso de 4: A dispondrá del 75 % de los recursos y B se


quedará con el 25 % restante.

16
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

No requiere cifrado TLS

En HTTP/2 el uso de cifrado TLS (Transport Layer Security) es opcional. De todos modos un gran número
de fabricantes de software ( Firefox, Internet Explorer o Google Crome por ejemplo) ya han anunciado
que sus implementaciones solo soportarán HTTP 2.0 sobre TLS.

Recordemos que TLS es un protocolo criptográfico de la capa de transporte (de criptografía asimétrica),
que proporciona comunicaciones seguras por la red. El uso de TLS añade un retardo adicional.

Ejemplo de un diálogo HTTP

Para obtener un recurso con el URL http://www.example.com/index.html

1. Se abre una conexión al host www.example.com, puerto 80 que es el puerto por defecto para
HTTP.
2. Se envía un mensaje en el estilo siguiente:

GET /index.html HTTP/1.1


Host: www.example.com
User-Agent: nombre-cliente
[Línea en blanco]

La respuesta del servidor está formada por encabezados seguidos del recurso solicitado, en el caso de una
página web:

HTTP/1.1 200 OK
Date: Fri, 31 Dec 2003 23:59:59 GMT
Content-Type: text/html
Content-Length: 1221

<html>
<body>
<h1>Página principal de tuHost</h1>
(Contenido)
.
.
.
</body>
</html>

17
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

Métodos de Petición

HTTP define 8 métodos (algunas veces referido como "verbos") que indica la acción que desea que se
efectúe sobre el recurso identificado. Lo que este recurso representa, si los datos pre-existentes o datos
que se generan de forma dinámica, depende de la aplicación del servidor. A menudo, el recurso
corresponde a un archivo o la salida de un ejecutable que residen en el servidor.
HEAD Pide que la respuesta idéntica a la que correspondería a una petición GET, pero sin el cuerpo de la
respuesta. Esto es útil para la recuperación de meta-información escrita en los encabezados de respuesta,
sin tener que transportar todo el contenido.
GET Pide una representación del recurso especificado. Por seguridad no debería ser usado por
aplicaciones que causen efectos ya que transmite información a través de la URI agregando parámetros a
la URL.
Ejemplo: GET /images/logo.png HTTP/1.1 obtiene un recurso llamado logo.png
Ejemplo con parámetros: /index.php?page=main&lang=es
POST Fue diseñado para enviar información a un servidor remoto, es en general usado cuando se envía
información en un formulario para que el servidor resuelva que hacer con los datos.
PUT Sube, carga o realiza un upload de una de un recurso especificado (archivo), es el camino más
eficiente para subir archivos a un servidor, esto es porque en POST utiliza un mensaje multiparte y el
mensaje es decodificado por el servidor. En contraste, el método PUT te permite escribir un archivo en
una conexión socket establecida con el servidor.
La desventaja del método PUT es que los servidores de hosting compartido no lo tienen habilitado.
Ejemplo:
PUT /path/filename.html HTTP/1.1
DELETE Borra un archivo de un servidor remoto, esta utilidad por lo general no esta permitida por los
servidores webs.
TRACE Muestra el recorrido que realiza una petición hasta que esta sea resuelta.

Códigos de respuesta
Son códigos de tres dígitos :

▪ 1xx Mensajes
N° - 100 111 Conexión rechazada

▪ 2xx Operación exitosa

18
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

N° Descripción

200 OK

201-203 Información no oficial

204 Sin Contenido

205 Contenido para recargar

206 Contenido parcial

▪ 3xx Redirección hacia otro URL


N° Descripción

300 Múltiples posibilidades

301 Mudado permanentemente

302 Encontrado

303 Vea otros

304 No modificado

305 Utilice un proxy

307 Redirección temporal

▪ 4xx Error por parte del cliente


N° Descripción

400 Solicitud incorrecta

401 No autorizado

402 Pago requerido

403 Prohibido

404 No encontrado

19
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

405 Método no permitido

406 No aceptable

407 Autenticación requerida

408 Tiempo de espera agotado

409 Conflicto

410 Ya no disponible

411 Requiere longitud

412 Falló precondición

413 Entidad de solicitud demasiado larga

414 URL de solicitud demasiado largo

415 Tipo de medio no soportado

416 Rango solicitado no disponible

417 Falló expectativa

▪ 5xx Error por parte del servidor


N° Descripción

500 Error interno

501 No implementado

502 Pasarela incorrecta

503 Servicio no disponible

504 Tiempo de espera de la pasarela agotado

505 Versión de HTTP no soportada

HTTPS - Caracteristicas

20
Facultad de Ingeniería Programación y Servicios Web
Universidad Nacional de Jujuy Unidad N° 1 - San Salvador de Jujuy

• HTTP sobre SSL (secure socket layer).

• La conexi´on TCP está cifrada, de forma que una tercera parte no puede conocer su contenido.

• Permite enviar datos “sensibles” a un servidor web, y recibirlos de ´el.

• Necesita de otros mecanismos (certificados, etc.) para ofrecer un nivel de seguridad razonable.

• Las URLs son “https://”.

21

También podría gustarte