El protocolo HTTP

Noviembre 2017

Introducción al protocolo HTTP

Desde 1990, el protocolo HTTP (Protocolo de transferencia de hipertexto) es el protocolo más utilizado en Internet. La versión 0.9 solo tenía la finalidad de transferir los datos a través de Internet (en particular páginas web escritas en HTML). La versión 1.0 del protocolo (la más utilizada) permite la transferencia de mensajes con encabezados que describen el contenido de los mensajes mediante la codificación MIME.

El propósito del protocolo HTTP es permitir la transferencia de archivos (principalmente, en formato HTML). entre un navegador (el cliente) y un servidor web (denominado, entre otros, httpd en equipos UNIX) localizado mediante una cadena de caracteres denominada dirección URL.

La comunicación entre el navegador y el servidor mediante el protocolo HTTP

La comunicación entre el navegador y el servidor se lleva a cabo en dos etapas:


Comunicación entre el navegador y el servidor

El navegador realiza una solicitud HTTP y el servidor procesa la solicitud y después envía una respuesta HTTP. En realidad, la comunicación se realiza en más etapas si se considera el procesamiento de la solicitud en el servidor. Dado que sólo nos ocupamos del protocolo HTTP, no se explicará la parte del procesamiento en el servidor en esta sección del artículo.

Solicitud HTTP

Una solicitud HTTP es un conjunto de líneas que el navegador envía al servidor. Comprende:



Una línea de solicitud: una línea que especifica el tipo de documento solicitado, el método que se aplicará y la versión del protocolo utilizada. La línea está formada por tres elementos que deben estar separados por un espacio: el método, la dirección URL y la versión del protocolo utilizada por el cliente (por lo general, HTTP/1.0)

Los campos del encabezado de solicitud: un conjunto de líneas opcionales que permiten aportar información adicional sobre la solicitud y/o el cliente (navegador, sistema operativo, etc.). Cada una de estas líneas está formada por un nombre que describe el tipo de encabezado, seguido de dos puntos (:) y el valor del encabezado.

El cuerpo de la solicitud: un conjunto de líneas opcionales que deben estar separadas de las líneas precedentes por una línea en blanco y, por ejemplo, permiten que se envíen datos por un comando POST durante la transmisión de datos al servidor utilizando un formulario.

Por lo tanto, una solicitud HTTP posee la siguiente sintaxis (<crlf> significa retorno de carro y avance de línea):

MÉTODO VERSIÓN URL<crlf>
ENCABEZADO: Valor<crlf>
. . . ENCABEZADO: Valor<crlf>
Línea en blanco <crlf>
CUERPO DE LA SOLICITUD

Ejemplo de una solicitud HTTP:

GET http://es.kioskea.net HTTP/1.0 Accept : Text/html If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

Lista de comandos HTTP

ComandoDescripción
GETSolicita el recurso ubicado en la URL especificada
HEADSolicita el encabezado del recurso ubicado en la URL especificada
POSTEnvía datos al programa ubicado en la URL especificada
PUTEnvía datos a la URL especificada
DELETEBorra el recurso ubicado en la URL especificada

Encabezados

Nombre del encabezadoDescripción
AcceptTipo de contenido aceptado por el navegador (por ejemplo, texto/html). Consulta: Tipos de MIME
Accept-CharsetJuego de caracteres que el navegador espera
Accept-EncodingCodificación de datos que el navegador acepta
Accept-LanguageIdioma que el navegador espera (de forma predeterminada, inglés)
AuthorizationIdentificación del navegador en el servidor
Content-EncodingTipo de codificación para el cuerpo de la solicitud
Content-LanguageTipo de idioma en el cuerpo de la solicitud
Content-LengthExtensión del cuerpo de la solicitud
Content-TypeTipo de contenido del cuerpo de la solicitud (por ejemplo, texto/html). Consulta: Tipos de MIME
DateFecha en que comienza la transferencia de datos
ForwardedUtilizado por equipos intermediarios entre el navegador y el servidor
FromPermite especificar la dirección de correo electrónico del cliente
FromPermite especificar que debe enviarse el documento si ha sido modificado desde una fecha en particular
LinkVínculo entre dos direcciones URL
Orig-URLDirección URL donde se originó la solicitud
RefererDirección URL desde la cual se realizó la solicitud
User-AgentCadena con información sobre el cliente, por ejemplo, el nombre y la versión del navegador y el sistema operativo

Respuesta HTTP

Una respuesta HTTP es un conjunto de líneas que el servidor envía al navegador. Está constituida por:


Una línea de estado: una línea que especifica la versión del protocolo utilizada y el estado de la solicitud en proceso mediante un texto explicativo y un código. La línea está compuesta por tres elementos que deben estar separados por un espacio: La línea está formada por tres elementos que deben estar separados por un espacio: la versión del protocolo utilizada, el código de estado y el significado del código.

Los campos del encabezado de respuesta: un conjunto de líneas opcionales que permiten aportar información adicional sobre la respuesta y/o el servidor. Cada una de estas líneas está compuesta por un nombre que califica el tipo de encabezado, seguido por dos puntos (:) y por el valor del encabezado Cada una de estas líneas está formada por un nombre que describe el tipo de encabezado, seguido de dos puntos (:) y el valor del encabezado.

El cuerpo de la respuesta: contiene el documento solicitado.

Por lo tanto, una respuesta HTTP posee la siguiente sintaxis (<crlf> significa retorno de carro y avance de línea):

VERSIÓN-HTTP CÓDIGO EXPLICACIÓN <crlf>
ENCABEZADO: Valor<crlf>
. . . ENCABEZADO: Valor<crlf>
Línea en blanco <crlf>
CUERPO DE LA RESPUESTA

Ejemplo de una respuesta HTTP:

HTTP/1.0 200 OK Date: Sat, 15 Jan 2000 14:37:12 GMT Server : Microsoft-IIS/2.0 Content-Type : text/HTML Content-Length : 1245 Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT

Encabezados de respuesta

Nombre del encabezadoDescripción
Content-EncodingTipo de codificación para el cuerpo de la respuesta
Content-LanguageTipo de idioma en el cuerpo de la respuesta
Content-LengthExtensión del cuerpo de la respuesta
Content-TypeTipo de contenido del cuerpo de la respuesta (por ejemplo, texto/html). Consulta: Tipos de MIME
DateFecha en que comienza la transferencia de datos
ExpiresFecha límite de uso de los datos
ForwardedUtilizado por equipos intermediarios entre el navegador y el servidor
LocationRedireccionamiento a una nueva dirección URL asociada con el documento
Server Características del servidor que envió la respuesta

Los códigos de respuesta

Son los códigos que se ven cuando el navegador no puede mostrar la página solicitada. El código de respuesta está formado por tres dígitos: el primero indica el estado y los dos siguientes explican la naturaleza exacta del error.


CódigoMensajeDescripción
10xMensaje de informaciónEstos códigos no se utilizan en la versión 1.0 del protocolo
20xÉxitoEstos códigos indican la correcta ejecución de la transacción
200OKLa solicitud se llevó a cabo de manera correcta
201CREATEDSigue a un comando POST e indica el éxito, la parte restante del cuerpo indica la dirección URL
donde se ubicará el documento creado recientemente.
202ACCEPTEDLa solicitud ha sido aceptada, pero el procedimiento que sigue no se ha llevado a cabo
203PARTIAL INFORMATIONCuando se recibe este código en respuesta a un comando de GET indica que la respuesta no está completa.
204NO RESPONSEEl servidor ha recibido la solicitud, pero no hay información de respuesta
205RESET CONTENTEl servidor le indica al navegador que borre el contenido en los campos de un formulario
206PARTIAL CONTENTEs una respuesta a una solicitud que consiste en el encabezado range. El servidor debe indicar el encabezado content-Range
30xRedirecciónEstos códigos indican que el recurso ya no se encuentra en la ubicación especificada
301MOVEDLos datos solicitados han sido transferidos a una nueva dirección
302FOUNDLos datos solicitados se encuentran en una nueva dirección URL, pero, no obstante, pueden haber sido trasladados
303METHODSignifica que el cliente debe intentarlo con una nueva dirección; es preferible que intente con otro método en vez de GET
304NOT MODIFIEDSi el cliente llevó a cabo un comando GET condicional (con la solicitud relativa a si el documento ha sido modificado desde la última vez) y el documento no ha sido modificado, este código se envía como respuesta.
40xError debido al clienteEstos códigos indican que la solicitud es incorrecta
400BAD REQUESTLa sintaxis de la solicitud se encuentra formulada de manera errónea o es imposible de responder
401UNAUTHORIZEDLos parámetros del mensaje aportan las especificaciones de formularios de autorización que se admiten. El cliente debe reformular la solicitud con los datos de autorización correctos
402PAYMENT REQUIREDEl cliente debe reformular la solicitud con los datos de pago correctos
403FORBIDDENEl acceso al recurso simplemente se deniega
404NOT FOUNDUn clásico. El servidor no halló nada en la dirección especificada. Se ha abandonado sin dejar una dirección para redireccionar... :)
50xError debido al servidorEstos códigos indican que existe un error interno en el servidor
500INTERNAL ERROREl servidor encontró una condición inesperada que le impide seguir con la solicitud (una de esas cosas que les suceden a los servidores...)
501NOT IMPLEMENTEDEl servidor no admite el servicio solicitado (no puede saberlo todo...)
502BAD GATEWAYEl servidor que actúa como una puerta de enlace o proxy ha recibido una respuesta no válida del servidor al que intenta acceder
503SERVICE UNAVAILABLEEl servidor no puede responder en ese momento debido a que se encuentra congestionado (todas las líneas de comunicación se encuentran congestionadas, inténtelo de nuevo más adelante)
504GATEWAY TIMEOUTLa respuesta del servidor ha llevado demasiado tiempo en relación al tiempo de espera que la puerta de enlace podía admitir (excedió el tiempo asignado...)

The HTTP protocol
The HTTP protocol
Das HTTP Protokoll
Das HTTP Protokoll
Le protocole HTTP
Le protocole HTTP
Il protocollo HTTP
Il protocollo HTTP
O protocolo  HTTP
O protocolo HTTP
Polityka prywatności
Polityka prywatności
Última actualización: 13 de septiembre de 2017 a las 05:18 por Carlos-vialfa.
El documento «El protocolo HTTP» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.