Cibernetia > Manuales > Introducción a las aplicaciones web > Fundamentos de la web
Búsqueda personalizada







Fundamentos de la web

El éxito de la web se basa en dos factores fundamentales: el protocolo HTTP y el lenguaje HTML. El primero permite una implementación sencilla de un sistema de comunicaciones que permite enviar cualquier ficehro de forma fácil, simplificando el funcionamiento del servidor y posibilitando que servidores poco potentes atiendan cientos o miles de peticiones y reduzcan de este modo los costes de despliegue. El segundo, el lenguaje HTML, proporciona un mecanismo sencillo y muy eficiente de creación de páginas enlazadas.

El protocolo HTTP

El protocolo HTTP (Hypertext Tranfer Protocol) es el protocolo principal de la World Wide Web. Es un protocolo simple, orientado a conexión y sin estado. Está orientado a conexión proque emplea para su funcionamiento un protocolo de comunicaciones (TCP, o Transport Control Protocol) de modo conectado, que establece un canal de comunicaciones entre el cliente y el servidor, por el cual pasan los bytes que constituyen los datos de la transferencia, en contraposición a los protocolos denominados de datagrama (o no orientados a conexión) que dividen la serie de datos en pequeños paquetes (o datagramas) antes de enviarlos, pudiendo llegar por diversas vías del servidor al cliente. Este protocolo no mantiene estado o, dicho de otro modo, cada transferencia de datos es una conexión diferente a la anterior, sin relación entre ellas. Por ejemplo, para transferir una página web debemos enviar el código HTML del texto, por un lado, y las imágenes que la componen por otro, pues en la especificación inicial 1.0 del protocolo HTTP se abrían y utilizaban tantas conexiones como componentes tenía la página, trasfiriéndo cada componente por conexiones diferentes .

Existe una variante de HTTP denominada HTTPS (S significa "secure", o "seguro") que utiliza el protocolo de seguridad SSL (o "Secure Socket Layer") para cifrar y autenticar el tráfico de datos, muy utilizada por los servidores web orientados al comercio electrónico o por aquellos que albergan información de tipo personal o confidencial. De forma esquemática, el funcionamiento de HTTP es como sigue: el cliente establece una conexión TCP con el servidor, hacia el puerto por defecto para el protocolo HTTP (o el indicado expresamente en la conexión), envía una orden HTTP de solicitud de un recurso (añadiendo algunas cabeceras con información) y, utilizando la misma conexión, el servidor responde enviando los datos solicitados y, además, añadiendo algunas cabeceras con información.

El protocolo también define la forma de codificar el paso de parámetros entre dos páginas, la tunelización de las conexiones (para sistemas de firewall), define la posible existencia de servidores intermedios de caché, etc. Las directivas que se utilizan para la petición de información según se definen en HTTP 1.1 (la versión considerada estable y ampliamente utilizada) son:

  • GET: Petición de un recurso.
  • POST: Petición de un recurso enviando parámetros.
  • HEAD: Petición de algundos datos sobre un recurso.
  • PUT: Creación o envío de un recurso.
  • DELETE: Borrado de un recurso.
  • TRACE: Devolución de la petición a su origen tal como la había recibido el receptor, para la depuración de errores.
  • OPTIONS: Compureba la capacidad del servidor.
  • CONNECT: Se reserva para su uso en servidores intermedios con capacidad para funcionar como túneles entre otros servidores.

Se detallan a continuación algunos de entre estos comandos, ya que su comprensión es básica para desarrollar aplicaciones web. Se debe destacar que todos los recursos servidos mediante HTTP deberán ser referenciados utilizando una URL ("Universal Resource Locators").

Peticiones en el protocolo HTTP: GET y POST

Las peticiones en HTTP se pueden realizar utilizando 2 métodos. El método GET, cuando envía parámetros con la petición, lo hace codificándolos en la URL. El método POST lo hace como parte del cuerpo de la petición. Una petición GET tiene este formato:

GET /index.html HTTP/1.1
Host: www.unejemplo.com
User-Agent: Mozilla/4.5 [en]
Accept: image/jpeg, image/gif, text/html
Accept-language: en
Accept-Charset: iso-8859-1

La petición está formada por:

  1. Línea de la petición: contiene el recurso que se solicita.
  2. Cabecera de la petición: contiene la información adicional sobre el cliente que hace la solicitud.
  3. Cuerpo de la petición: en peticiones de tipo POST y otras contiene más información adicional.

Línea de petición

La línea de la petición está formada por estos elementos:

  1. Método: nombre del método HTTP utilizado (GET, POST, etc.).
  2. Identificador del recurso: URL ("Uniform Resource Locator").
  3. Versión del protocolo utilizado.

Cabecera de lapetición

Contiene información adicional que ayuda al servidor a procesar correctamente la petición.

La información se facilita en forma de:

Identificador: valor

Los identificadores más importantes son:

  • Host: nombre del servidor.
  • User-Agent: nombre del navegador o del programa usado para acceder al recurso solicitado.
  • Accept: se indican los formatos de texto e imagen aceptados por el User-Agent.
  • Accept-Language: idiomas que soporta (preferentemente) el cliente.

Parámetros de la petición

Una petición HTTP puedecontener parámetros, por ejemplo, como respuesta a un formulario de registro o a una selección de entre los productos en una tienda virtual. Tales parámetros pueden pasarse de 2 formas:

  • Formando parte de la propia cadena de la petición, codificados como parte de la misma URL.
  • Como datos añadidos a la petición.

Para codificar los parámetros como parte incluida en la URL, éstos deben añadirse a la URL detrás del nombre del recurso, separándolos de éste mediante el caracter "?". Los parámetros se separan entre sí mediante el caracter "&". Los espacios se sustituyen por el caracter "+". Los caracteres especiales (los mencionados antes de "&", "+" y "?", y los caracteres que no son imprimibles, etc.) se representan mediante "%xx", donde "xx" representa el código en codificación ASCII en hexadecimal del caracter en cuestión.

Por ejemplo:

http://www.ejemplo.com/indice.jsp?
nombre=Fulano+Mengano&OK=1

que en la petición HTTP quedaría:

GET /indice.jsp?nombre=Fulano+Mengano&OK=1 HTTP/1.0
Host: www.unejemplo.com
User-Agent: Mozilla/4.5 [en]
Accept: image/jpeg, image/gif, text/html
Accept-language: en
Accept-Charset: iso-8859-1

Para pasar los parámetros como datos añadidos, se envían al servidor en el cuerpo del mensaje de la petición. Por ejemplo, siguiendo con la petición:

POST /indice.jsp HTTP/1.0
Host: www.unejemplo.com
http://www.unejemplo.com/indice.jsp?
nombre=Fulano+Mengano&OK=1
User-Agent: Mozilla/4.5 [en]
Accept: image/jpeg, image/gif, text/html
Accept-language: en
Accept-Charset: iso-8859-1

nombre=Perico+Palotes&OK=1

Se debe destacar que para pasar los parámetros en el cuerpo de la petición, ésta se debe realizar como POST (no como GET), aunque una petición POST puede llevar parámetros en la línea de petición (igual que una GET). Los parámetros pasados en el cuerpo de la petición están codificados igual que si los pasamos mediante la URL, o pueden usar una codificación específica derivada del formato MIME ("Multipurpose Internet Mail Extensions"), conocida como codificación multiparte.

El ejemplo anterior en formato multiparte quedaría:

POST /indice.jsp HTTP/1.0
Host: www.unejemplo.com
User-Agent: Mozilla/4.5 [en]
Accept: image/jpeg, image/gif, text/html
Accept-language: en
Accept-Charset: iso-8859-1
Content-Type: multipart/form-data,
delimiter="----ALEATORIO----"

----ALEATORIO----
Content-Disposition: form-data; name="nombre"
Fulano Mengano
----ALEATORIO----
Content-Disposition: form-data; name="OK"
1

----ALEATORIO------

Esta codificación es propia y exclusiva del método POST. Se emplea para el envío de ficheros al servidor.

Respuestas en el protocolo HTTP

Las respuestas en el protocolo HTTP son similares a las peticiones. Una respuesta estándar sería similar a esto:

HTTP/1.1 200 OK
Date: Mon, 04 Aug 2003 16:25:10 GMT
Server: Apache/2.0.40 (Red Hat Linux)
Last-Modified: Tue, 26 Mar 2004 08:53:53 GMT
Accept-Ranges: bytes
Content-Length: 428
Connection: close

<HTML>
...

Podemos observar que la primera línea responde con la versión del protocolo utilizada para enviar la página, seguida por un código de retorno y lo que se denomina una frase de retorno.

Después del estatus aparecen unos campos de control, que tienen el mismo formato que en las cabeceras de la petición.

A continuación se incluye el contenido del recursosolicitado.

El lenguaje HTML

El otro factor principal del éxito del World Wide Web ha sido el lenguaje HTML ("Hypertext Mark-up Language", o "Lenguaje de Marcado de Hipertexto"), que es un lenguaje de marcas (se insertan marcas o etiquetas en el texto) que permite representar de forma rica el contenido y referenciar otros recursos (por ejemplo, imágenes), o enlaces a otros documentos (que es, precisamente, la característica más destacada de la web), mostrar formularios para su posterior procesamiento, etc.

El lenguaje HTML se encuentra en la actualidad en la versión 4.01 y empieza a proporcionar algunas funcionalidades más avanzadas. Se ha definido una especificación compatible con HTML, llamada XHTML ("Extensible Hypertext Markup Language" o "Lenguaje Extensible de Marcado de Hipertexto") que se define a menudo como una versión XML validable de HTML, que proporciona un "XML Schema" contra el cual es posible validar el documento con el objeto de comprobar si está bien formado.

Los manuales titulados Introducción a las aplicaciones web, Instalación del servidor web y Servicios web han sido extraídos, con algunas modificaciones, del manual "Desarrollo de aplicaciones web", publicado por la UOC dentro de su máster de software libre, escrito por Carles Mateu i Piñol.

El manual tiene licencia GFDL, la cual otorga permiso para copiar, distribuir y modificar el documento según los términos de la GNU Free Documentation License, Version 1.2 o cualquiera posterior publicada por la Free Software Foundation, sin secciones invariantes ni textos de cubierta delantera o trasera.

Se puede acceder al documento original en: http://www.uoc.edu/masters/esp/img/873.pdf (versión imprimible) y http://www.uoc.edu/masters/esp/img/692.zip (versión editable, formato zip).

Manuales | Tesis: Ordenadores, Circuitos integrados...
english
Cibernetia