HTTP
De Wikipedia, la enciclopedia libre.
HTTP es el protocolo de la Web (WWW), usado en cada transacción. Las letras significan Hyper Text Transfer Protocol, es decir, protocolo de transferencia de hipertexto. El hipertexto es el contenido de las páginas web, y el protocolo de transferencia es el sistema mediante el cual se envían las peticiones de acceder a una página web, y la respuesta de esa web, remitiendo la información que se verá en pantalla. También sirve el protocolo para enviar información adicional en ambos sentidos, como formularios con mensajes y otros similares.
HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores. Al finalizar la transacción todos los datos se pierden. Por esto se popularizaron las cookies, que son pequeños ficheros guardados en el propio ordenador que puede leer un sitio web al establecer conexión con él, y de esta forma reconocer a un visitante que ya estuvo en ese sitio anteriormente. Gracias a esta identificación, el sitio web puede almacenar gran número de información sobre cada visitante, ofreciéndole así un mejor servicio.
La versión actual de HTTP es la 1.1, y su especificación está en el documento RFC-2616 (http://www.ietf.org/rfc/rfc2616.txt).
HTTP dispone de una variante cifrada mediante SSL llamada HTTPS.
| Tabla de contenidos |
Transacciones HTTP
El protocolo HTTP es un protocolo sin estado; está basado en el modelo
cliente-servidor: Un cliente HTTP abre una conexión y realiza su solicitud al
servidor, el cual responde generalmente el recurso solicitado y la
conexión se cierra.
El formato tanto del mensaje como de la respuesta es como sigue:
<Línea inicial> Header-1: value-1 ... Header-n: value-n <Cuerpo del mensaje (Opcional)>
La línea inicial es diferente en las solicitudes y en las respuestas. En las solicitudes van tres campos separados por un espacio en blanco: "Método recurso versiónDelProtocolo". Por ejemplo: "GET /path/to/file/index.html HTTP/1.0". La línea inicial de una respuesta tiene tres campos separados por un espacio: "versiónDelProtocolo códigoRespuesta Mensaje". Por ejemplo: "HTTP/1.0 200 OK" o bién "HTTP/1.0 404 Not Found".
Los encabezados están normados en el protocolo, e incluyen, en el caso de una solicitud, información del navegador y eventualmente del usuario cliente; En el caso de una respuesta, información sobre el servidor y sobre el recurso. El cuerpo del mensaje contiene el recurso a transferir o el texto de un error en el caso de una respuesta. En el caso de una solicitud, puede contener parámetros de la llamada archivos enviados al servidor.
Ejemplo de un dialogo HTTP
Para obtener un recurso con el URL http://www.tuhost.com/index.html
- Se abre un socket con el host www.tuHost.com, puerto 80 que ese el puerto por defecto para HTTP.
- Se envía un mensaje en el estilo siguiente :
GET /index.html HTTP/1.0 From: yo@miHost.com User-Agent: HTTPTool/1.0 [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.0 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>
Al recibirse la respuesta, el servidor cierra la comunicación.
Herramientas de Software libre
- Apache httpd server (http://httpd.apache.org/) Apache ha sido el servidor web más difundido desde 1996. La encuesta de Netcraft (http://news.netcraft.com/archives/web_server_survey.html) del 1 de julio de 2004, muestra que alrededor de 65% de los servidores web utilizan Apache, y la parte de mercado crece de año en año.
- Jigsaw - W3C's Server (http://www.w3.org/Jigsaw/)
Primeros Servidores
- CERN httpd Server (http://www.w3.org/Daemon/)
- NCSA httpd server (http://hoohoo.ncsa.uiuc.edu/)
Glosario
Sockets
Son puntos de comunicación. Se clasifican en físicos (asociados a un recurso) o lógicos (manejados por el sistema de operación). Tres elementos caracterizan a un socket: El nombre del servicio (telnet, ftp, etc.), el protocolo (TCP, UDP, etc.) y el número de puerto. En linux, el archivo /etc/protocols contiene la lista de protocolos disponibles y /etc/services contiene la lista de servicios disponibles. Por ejemplo, en la configuración inicial de la mayoría de los sistemas Linux se tiene que:
- el servicio telnet utiliza el protocolo TCP/IP y se comunica por el puerto 23
- el servicio ftp utiliza el protocolo TCP/IP y se comunica por los puertos 20 y 21
- el servicio WWW utiliza el protocolo HTTP y se comunica por el puerto 80.
- el servicio WebDAV para desarrollo en colaboración utiliza el protocolo HTTP como transporte.
- CORBA, el marco para compartir objetos y servicios en la red puede utilizar el protocolo HTTP como transporte.
Recursos
HTTP se utiliza para transmitir recursos, que incluyen además de 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. Para un servidor HTTP, los recursos son o bien archivos, o bien el resultado de la ejecución de un programa.
URL
Los recursos se identifican con un URL o "Universal Resource Locator" que es un identificador único en el mundo que se asocia con el recurso dado.
Códigos de respuesta
Son códigos de tres dígitos:
- 1xx Mensajes de información
- 2xx Operación exitosa
- 3xx Redirección hacia otro URL
- 4xx Error por parte del cliente
- 5xx Error por parte del servidor
Enlaces externos
- RFC-2616 (http://www.ietf.org/rfc/rfc2616.txt)
- HTTP - Hypertext Transfer Protocol. W3C (http://www.w3.org/Protocols/)
- HTTP Made Really Easy. byJames Marshall, 1997 (http://www.jmarshall.com/easy/http/)

