¿Qué es HTTP?
HTTP es el protocolo de transferencia de hipertexto creado en su inicio como un medio para compartir datos científicos a nivel internacional y de forma instantánea. Es el método más común de intercambio de información en la World Wide Web o WWW. Este protocolo está descrito en el RFC 1945. La versión segura de HTTP, denominada HTTPS, puede utilizar diversos métodos de cifrado.
WWW no es igual que Internet. La forma de intercambio de información, sobre todo en cantidad, más utilizada en Internet es mediante HTTP, y la red más conocida es la WWW. Internet es mucho más, tanto en cantidad de protocolos soportados como en volumen de información.
Un poco de historia
En 1990 se desarrolló un sistema de relación documental basado en un formato de texto enriquecido o hipertexto y recibió el nombre de World Wide Web o <>, también conocido como la Web.
La Web es actualmente el servicio más utilizado en Internet, lo que inicialmente se había concebido como un simple sistema de navegación por información <>, en el que las páginas permiten acceder a imágenes, sonido, vídeos, etc.
World Wide Web, también llamada telaraña mundial o la Web, es una agrupación de miles de páginas electrónicas basadas en textos y en todo tipo de información multimedia, conectadas entre sí, a través de hiperenlaces, con la finalidad de recuperar información de forma sencilla, sin que sea necesario conocer previamente su ubicación exacta.
Estructura de la WWW: Modelo Cliente-Servidor
La Web funciona siguiendo un modelo cliente-servidor en una red TCP/IP, ya sea local o interconectada con las demás redes a través de Internet. La petición de las páginas en formato HTML se realiza desde un cliente a un servidor. Ese servidor puede, o no, pertenecer a la misma red que el cliente. En caso negativo, el cliente debe alcanzar dicho servidor mediante los dispositivos y mecanismos necesarios que interconectan su red a la del servidor.
Desde la parte del cliente, es el programa navegador con el que el usuario interactúa, para solicitar a un servidor web el envío de páginas de información, el que realiza la petición y por tanto el cliente real. Por ello se denomina cliente HTTP o navegador web.
Las páginas que recibe el cliente HTTP son documentos de texto plano, estructurados por etiquetas en lenguaje HTML, y que el programa interpretará para poder mostrarlo al usuario con el formato adecuado. Si lo que se recibe no es un documento de texto, sino un objeto multimedia no reconocido por el cliente HTTP, este deberá encargarse de activar una aplicación externa capaz de gestionarlo, o preguntar al usuario qué desea hacer con el fichero.
Recuerda
Protocolo de transferencia: Es el sistema mediante el cual la información solicitada es enviada entre los servidores y los clientes, y es interpretada a través de un programa que entiende el lenguaje HTML, como son los navegadores.
Desde el punto de vista del servidor, su función es, básicamente, atender las peticiones de páginas y otros documentos procedentes de los programas de clientes HTTP y enviarlas. Es importante matizar que el protocolo HTTP es un protocolo sin estado, no recuerda ningún suceso de conexiones anteriores a la actual. El esquema de funcionamiento es simple: si el servidor encuentra el documento HTML solicitado por el cliente lo envía. Si no existe dicho documento, se envía un código de error. En ambos casos, y por ser un protocolo sin estado, al final se libera la conexión.
Para resolver estas situaciones de <> del protocolo, además de recordar la información de la sesión actual, se utilizan galletas o cookies. Se trata de ficheros de texto que se intercambian entre cliente y servidor, de modo que, la próxima vez que se demande un intercambio de información entre estos mismos puntos, se tendrá en cuenta la información de dichos ficheros.
Además de las cookies, el funcionamiento básico del protocolo se altera y complica de forma continua, con requisitos más sofisticados como son acceso por contraseña, caché de documentos, soporte de programas externos y, más recientemente, el manejo de transacciones seguras que no deben ser visibles por otros usuarios de la red.
Servidores HTTP
Cabe destacar, por su antigüedad y/o utilización, los siguientes servidores HTTP existentes en la red:
- NCSA HTTPd: Fue uno de los primeros servidores y además gratuito. Tenía dos restricciones importantes: no podía funcionar como servidor proxy y no disponía de nivel internacional del sistema de transacciones seguras. Estas son algunas de las razones por las que el proyecto fue abandonado.
- Apache: Estaba basado inicialmente en su función en NCSA y su facilidad de configuración y sus prestaciones sobre diversas plataformas lo han convertido en líder en Internet.
- Internet Information Server (IIS): Fue desarrollado por Microsoft para sus sistemas Windows servidores. Aunque no tanto como el anterior, también es soporte de un gran número de servidores web.
Transferencia de Páginas Web
La petición de una página web se realiza escribiendo en el navegador web su dirección. Básicamente, la estructura de dicha dirección consiste en una primera sección donde se indica el protocolo, el puerto donde se realiza la petición, todos estos campos van separados por caracteres específicos.
- El usuario especifica en el cliente HTTP la dirección de la página que desea consultar.
- El cliente HTTP decodifica la información de la URL, segmentando las distintas partes.
- El cliente establece una conexión con el servidor web y solicita la página y/o el objeto deseados.
- El servidor envía dicha página u objeto y el cliente inicia la tarea de interpretación de los códigos HTML.
- Se cierra la conexión.
Características de los Servidores HTTP
Las características principales de los servicios HTTP son: comunicaciones cliente-servidor con caracteres de 8 bits, tres métodos básicos de petición, comunicación unitaria, sin estado.
Diferentes Aspectos de una Comunicación HTTP
A) Comunicación HTTP
Son las peticiones que se realizan entre cliente y servidor, así como las respuestas en sentido inverso. El contenido son líneas de texto que contienen las órdenes y parámetros con la sintaxis definida por el protocolo HTTP.
B) Métodos de Petición
Una petición HTTP, en su formato más básico, tiene la sintaxis <>.
El método le indica al servidor qué se debe hacer con el URI (Uniform Resource Identifier). La versión indica el número de versión del protocolo que el cliente entiende.
La versión 1.0 de HTTP contempla tres métodos: GET, HEAD y POST.
La versión posterior del HTTP, la 1.1, amplía estas posibilidades, implementando nuevos métodos. Estos métodos son: PUT, para enviar el recurso objeto de la URI del cliente al servidor; DELETE, para borrar el recurso solicitado del servidor; OPTIONS, con el que el cliente obtiene información del servidor y poder negociar los valores de los parámetros de la comunicación, etc.
C) Métodos de Respuesta
La sintaxis de una respuesta HTTP es, en su formato más básico, una línea de estado y tiene una estructura fija, donde se indica versión, código de error y texto explicativo.
Los posibles códigos de estado se identifican con números de tres cifras, y se clasifican en cinco grupos, según sean informativos (con códigos 1xx), de éxito de la solicitud (códigos 2xx), para redireccionar la solicitud (códigos 3xx), por error generado por el cliente (códigos 4xx) o bien por errores generados en el servidor (códigos 5xx).
Líneas de Encabezado HTTP
Los encabezados de los mensajes constituyen un campo fundamental ya que definen en gran parte la información que se intercambia entre clientes y servidores, dándoles así flexibilidad al protocolo.
Los encabezados pueden clasificarse en grupos, según su función:
- De ámbito general: manejan información que puede ser utilizada tanto por clientes como por servidores.
- De solicitud: los utiliza el cliente para enviar información adicional al servidor.
- De respuesta: utilizados por el servidor para enviar información al servidor.
- De entidad: con información relacionada directamente con el recurso que se le va a proporcionar al cliente.
Tipos MIME
Los tipos MIME fueron en un primer momento utilizados para extender las características del correo electrónico, pero hoy su uso se ha extendido siendo también denominados IMT (Internet Media Types).
Los tipos MIME se componen de un tipo y un subtipo.
El registro de los tipos MIME los controla IANA. Es importante el registro de tipos MIME ya que esto asegura que dos tipos de contenido distinto no acaben con el mismo nombre.
El protocolo HTTP usa tipos MIME en sus encabezados para las siguientes funciones:
- Informar al cliente el tipo de datos que está recibiendo del servidor.
- Permitir la negociación de contenido.
- Encapsular uno o más objetos dentro del cuerpo de mensaje.
Esquema de una Comunicación
Es posible presentar de nuevo con más detalle la estructura de un proceso de comunicación típica. Las etapas serían:
- Un programa cliente establece la conexión con un servidor web.
- El cliente envía una petición indicando el método, la URI a la que pretende acceder y la versión del protocolo.
- El servidor responde con una línea de estado que incluye la versión de protocolo.
- El programa servidor cierra la conexión.
Protocolos Seguros y Claves
El protocolo de encriptación SSL (Secured Sockets Layer) se utiliza en transacciones seguras vía web entre un cliente y un servidor. Habilita la posibilidad de utilizar firmas digitales, algoritmos de criptografía y algoritmos de digest o de resumen de mensajes.
El protocolo SSL es un sistema diseñado y propuesto por Netscape Communications Corporation y se encuentra en la pila OSI en el nivel sesión.
Los servicios proporcionados por SSL son autenticación, integridad y confidencialidad. Tras la utilización de este protocolo, la entidad servidora puede catalogar al cliente de la comunicación como fiable.
La clave de sesión es la que se utiliza para cifrar los datos que vienen y van al servidor seguro.
El modo de actuación del protocolo es el siguiente:
- Solicitud del cliente: el cliente solicita una URL con soporte SSL. A continuación se acuerda la conexión SSL. MD5 se suele usar como algoritmo de hash.
- Establecimiento de la conexión SSL.
- Verificación del servidor desde el cliente y acuerdo del algoritmo de criptografía.
- Respuesta del servidor con envío de su identificación.
La aprobación del cliente se realiza cuando este verifica la validez. Una vez verifica la identidad, el cliente genera una clave aleatoria y la encripta utilizando la clave pública del servidor y el algoritmo concertado.
En este momento ambos conocen sus respectivas claves de forma que están listos para intercambiar información de forma segura utilizando la clave secreta acordada y los algoritmos específicos.
Cuando se abandona una sesión SSL, normalmente la aplicación presenta un mensaje advirtiendo que la comunicación no es segura y confirma que el cliente desea efectivamente finalizar la sesión.
El protocolo SSL es sin duda alguna el más utilizado hoy en día en Internet.
Protocolo HTTPS
Uno de los usos comunes de SSL es el de establecer una comunicación web segura entre un navegador web y un servidor web. La utilización de HTTPS no invalida la opción de utilizar HTTP, ya que los navegadores de forma estándar avisan del paso de uno a otro protocolo. Dicho aviso es importante ya que indica el paso de zona segura a no segura.