Protocolos de Capa
de aplicación
HTTP
Hypertext Transfer Protocol
¿Qué es HTTP?
HTTP significa Hypertext Transfer
Protocol.
HTTP fue desarrollado por el World Wide
Web Consortium y la Internet Engineering
Task Force, colaboración que culminó en
1999
HTTP define la sintaxis y la semántica que
utilizan los elementos de software de la
arquitectura web para comunicarse.
(Clientes, Servidores, Proxys)
Elementos de una comunicación
HTTP
Cliente que efectúa la petición "user agent" (navegador)
Servidor http el cual posee el puerto 80 tcp en escucha de una
petición.
La información transmitida es el recurso identificada por un URL
Está basado en el envío de comandos y respuestas en texto ASCII.
El contenido enviado (archivos HTML, imágenes, PDF, etc.) se
enviará tal cual está almacenado en el servidor.(En formato MIME)
HTTP es un protocolo sin estado, no guarda ninguna información
sobre conexiones anteriores.
Si fuese necesario mantener estado se utilizan las cookies.
Las Cookies es información que un servidor puede almacenar en el
sistema cliente por tiempo indeterminado.
Esto le permite a las aplicaciones web instituir la noción de
"sesión", y también permite rastrear usuarios.
Los estándares HTTP
HTTP/0.9 Pre-93
RFC 1945 (HTTP/1.0, 1996)
RFC 2616 (HTTP/1.1, 1999)
RFC 2774 (HTTP/1.2, 2000)
www.rfc-editor.org (Request for Comments)
Características de las versiones
HTTP/0.9: Primer versión del protocolo Http, cuya implementación fue realizada con
requerimientos muy simples. Solo acepta el método GET
HTTP/1.0: Esta es la primera revisión del protocolo que especifica su versión en las
comunicaciones, y todavía se usa ampliamente, sobre todo en servidores proxy.
Soporta la mayoría de los métodos de comunicación.
Esta como la primer versión por cada elemento que trae de la web realiza una
conexión tdc/ip
HTTP/1.1: Versión actual; las conexiones persistentes están activadas por defecto y
funcionan bien con los proxies. También permite al cliente enviar múltiples peticiones
a la vez (pipelining) lo que hace posible eliminar el tiempo de Round-Trip delay por
cada petición.Soporta name-based virtual hosting.
HTTP/1.2: El RFC 2774 (experimental), HTTP Extension Framework, incluye en gran
medida a PEP(Protocol extension protocol). Se publicó en febrero de 2000.
Diálogo HTTP
Como mencionamos, este protocolo se
basa en envíos y respuestas en ASCII.
Para realizar esto establece una conexión
TCP al puerto 80 y una vez establecida
comienza el dialogo.
Entonces podemos mediante una consola
terminal de telnet establecer
manualmente un dialogo HTTP
Diálogo HTTP
Iniciamos la conexión, Request
Line/Status Line
(telnet www.unq.edu.ar 80 )
Envío de HTTP Request Header
(GET / HTTP/1.1 )
Recibimos
HTTP Response Headers
(HTTP/1.1 200 OK)
HTTP Response Body
(Html, jpg, objeto requerido)
Solicitud HTTP
Una línea de solicitud: es 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
la versión del protocolo utilizada por el cliente (por lo general,
HTTP/1.0) Ejemplo: GET / HTTP/1.1
Los campos del encabezado de solicitud: es 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.
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b)
Gecko/20021016 Accept-Language: es-es, en-us;q=0.66, en;q=0.33
El cuerpo de la solicitud: es 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 .
Metodos y Comandos
Solicita el recurso ubicado en la URL
GET especificada
Solicita el encabezado del recurso
HEAD ubicado en la URL especificada
Envía datos al programa ubicado en
POST la URL especificada
PUT Envía datos a la URL especificada
Borra el recurso ubicado en la URL
DELETE especificada
Tipo de contenido aceptado por el navegador (por ejemplo, texto/html).
Accept Consulte Tipos de MIME
Accept-Charset Juego de caracteres que el navegador espera
Accept-Encoding Codificación de datos que el navegador acepta
Accept-Language Idioma que el navegador espera (de forma predeterminada, inglés)
Authorization Identificación del navegador en el servidor
Content-Encoding Tipo de codificación para el cuerpo de la solicitud
Content-Language Tipo de idioma en el cuerpo de la solicitud
Content-Length Extensión del cuerpo de la solicitud
Tipo de contenido del cuerpo de la solicitud (por ejemplo, texto/html).
Content-Type Consulte Tipos de MIME
Date Fecha en que comienza la transferencia de datos
Forwarded Utilizado por equipos intermediarios entre el navegador y el servidor
From Permite especificar la dirección de correo electrónico del cliente
Permite especificar que debe enviarse el documento si ha sido
From modificado desde una fecha en particular
Link Vínculo entre dos direcciones URL
Orig-URL Dirección URL donde se originó la solicitud
Referer Dirección URL desde la cual se realizó la solicitud
Cadena con información sobre el cliente, por ejemplo, el nombre y la
User-Agent versión del navegador y el sistema operativo
Respuesta HTTP
Una línea de estado: es 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
el significado del código
HTTP/1.1 200 OK
Los campos del encabezado de respuesta: es 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.
Date: Fri, 31 Dec 2003 23:59:59 GMT
Server: Apache/2.2.9 (Debian) Last-Modified: Wed, 10 Dec 2008 14:36:40 GMT
ETag: "27956d-5de-45db23022ee00"
Content-Type: text/html Content-Length: 1221
El cuerpo de la respuesta: contiene el documento solicitado. (html, .jpg, .pdf,
xml, etc..)
Códigos de respuesta HTTP
1xx Mensajes Conexión rechazada
2xx Operación exitosa
3xx Redirección hacia otro URL
4xx Error por parte del cliente
5xx Error por parte del servidor
Conectandonos a un Server
GET /index.php HTTP/1.1
Host: sertec.unq.edu.ar
User-Agent: Mozilla/5.0
^M
HTTP/1.1 302 Found
Date: Mon, 17 May 2010 07:12:08 GMT
Server: Apache
X-Powered-By: PHP/5.2.6-1+lenny8
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://sertec.unq.edu.ar/modules/news/
Vary: Accept-Encoding
Content-Type: text/html
Content-Length: 0
Connection: Keep-Alive
Set-Cookie: PHPSESSID=88166dfa5c34a4a5662516a7a7875177; path=/
Mediante un Navegador
Proxys Http
Este protocolo admite la
posibilidad de la existencia de
servidores proxy intermedios
entre el cliente y la Web
Para el manejo del cache del cliente como del Proxy se utiliza
información de la respuesta del servidor http
Last-Modified: Wed, 10 Dec 2008 14:36:40 GMT
ETag: "27956d-5de-45db23022ee00"
El server informa en el Etag el objeto que estamos manejando y la
fecha de la ultima modificación, también el server puede informar
que esta transacción no deberá ser cacheada (Pragma: no-cache).
Muchas Gracias