- Versión 1.0 del protocolo HTTP

Con la popularización de la aplicación WWW, pronto se vio la necesidad de ampliar este sencillo protocolo para permitir nuevas funcionalidades. Se definió la versión 1.0 del protocolo que añadía nuevos métodos (PUT, POST,..) además de permitir el intercambio de cabeceras entre cliente y servidor.

  video[Tutorial] El protocolo HTTP v1.0

 

A continuación se muestra un ejemplo de interacción para la versión 1.0:

Cliente: GET /dir/pag.html HTTP/1.0

                  User-Agent: Internet Explorer v3.2

                  Host: www.upv.es

                  Accept: text/html, image/gif, image/jpeg

                                                 <línea en blanco>

Servidor:HTTP/1.1 200 OK

                  Server: Microsoft-IIS/5.0

         Last-Modified: Mon, 25 Feb 2002 15:49:22 GMT

         Content-Type: text/html

                                                 <línea en blanco>

                <HTML>

                  <HEAD>

                  <TITLE>Página de ... </TITLE>

                  ...

                  </HTML>

En esta nueva versión, el navegador se conecta al puerto 80 del servidor y normalmente le envía el comando “GET” seguido de la página que desea obtener. Ahora el navegador añadirá la palabra “HTTP/1.0” para indicar al servidor que quiere utilizar esta nueva versión del protocolo. A continuación, el navegador introducirá un salto de línea seguido, opcionalmente, de alguna cabecera (véase RFC 2616). Una cabecera consta de un identificador de cabecera, seguido de dos puntos y el valor de la cabecera, más un salto de línea (¿). Estas cabeceras permitirán que el navegador indique al servidor ciertos datos que pueden serle de utilidad. Por ejemplo, con el identificador de cabecera “User-Agent:” se puede indicar el tipo y la versión de navegador con el que se realiza la solicitud. “Host:” permite indicar el ordenador donde se ejecuta el servidor. O la cabecera “Accept:”, que permite indicar al servidor qué tipo de documentos es capaz de visualizar el navegador en formato MIME. Cuando el navegador ya no quiera insertar más cabeceras, introducirá una línea en blanco. Es decir, tras el salto de línea de la última cabecera, manda un nuevo salto de línea.

Cuando el servidor lea una línea en blanco, es decir, dos saltos de línea seguidos, sabrá que le ha llegado su turno y tiene que contestar. En esta versión del protocolo el servidor no transmitirá la página solicitada directamente. Antes contesta con una línea indicando: primero la versión más alta que soporta (normalmente “HTTP/1.1”), a continuación un espacio y un código de tres dígitos que informa de si se puede realizar la operación solicitada, finalizando con una frase explicativa sobre este código. Algunos códigos de respuesta posibles son: 200 OK, 401 no autorizado, 404 fichero no encontrado, etc. Tras esta primera línea el servidor podrá enviar alguna cabecera con información sobre el servidor o el documento que va a transmitir. Cuando ya no quiera insertar más cabeceras introducirá una línea en blanco seguida del documento.

Aunque el método GET es el más utilizado, en la versión 1.0 se añaden nuevos métodos. A continuación se incluye una descripción:

GET:                 Petición de lectura de un recurso.

POST:              Envío de información asociada a un recurso del servidor.

PUT:                 Creación de un nuevo recurso en el servidor.

DELETE:          Eliminación de un recurso.

HEAD:              El servidor solo transmitirá las cabeceras, no la página

Ejercicio paso a paso: Estudio del protocolo HTTP v1.0 utilizando el comando telnet.

1.     Desde un intérprete de comandos (símbolo del sistema/shell) escribe:

telnet www.dcomg.upv.es 80

2.     Cuando se establezca la conexión teclea:

 GET /~jtomas/corta.html HTTP/1.0

             

3.     Observa que la respuesta obtenida es similar al ejercicio anterior, pero ahora el servidor ha incluido cabeceras. ¿Qué información puedes sacar de estas cabeceras? ¿Por qué has tenido que introducir dos saltos de línea?

4.     Repite el ejercicio utilizando el comando HEAD.

Aunque la versión más reciente es HTTP/1.2 (y existe un borrador de HTTP/2.0), la versión más utilizada en la actualidad es HTTP/1.1. Incorpora algunas mejoras, como las conexiones persistentes, activadas por defecto o la gestión de la caché del cliente. También permite al cliente enviar múltiples peticiones a la vez.