Web and HTTP

De Departamento de Informatica
Saltar a: navegación, buscar
Modelo Cliente-Servidor

Las páginas Web se componen generalmente de un archivo base HTML que puede tener distintos tipos de objetos: imágenes, aplicaciones web en Java o Flash, archivos de audio, e incluso otros archivos HTML. Cada uno de estos tiene asignada una dirección dentro del servidor Web, dependiendo del directorio donde se encuentran.

HTTP ,también conocido como Hypertext Transfer Protocol, es un protocolo de mensajes que trabaja en la capa de aplicación web, usando una arquitectura tipo cliente-servidor. Se caracteriza por ser stateless o sin estados, es decir, el servidor no guarda información sobre las solicitudes que realizaron los clientes, además de esto es considerada como IN-BAND, que significa que el control de datos se realiza por la conexión de datos principal.

El cliente, por medio de un navegador web, es quien inicia la conexión TCP al crear un socket al servidor, utilizando el puerto de red 80. Éste solicita y recibe muestras de los objetos, los que el servidor Web envía en respuesta a las solicitudes.

Contenido

HTTP Persistente y No Persistente

Conexión HTTP No Persistente

Existen dos modos de realizar una conexion HTTP, persistente y no persistente, dentro de los tiempos de transición de datos cabe mencionar el tiempo que requiere un paquete para viajar desde el cliente al servidor y vuelva, este se llama RTT (Round-Trip Time), además el tiempo de transmisión de datos Tt (Transfer time), los cuales nos ayudan a identificar el tiempo de transmisión total.

HTTP Persistente

Se caracteriza por que múltiples objetos pueden ser enviados a través de una única conexión TCP entre el cliente y el servidor, ya que este último deja la conexión abierta después de enviar la primera respuesta. Tan pronto como es encontrado la referencia al objeto, el cliente comienza nuevamente a enviar solicitudes.

El tiempo de transmisión total es igual a Tt(Tiempo de transmisión)+ RTT para todos los objetos referenciados.

HTTP No Persistente

En este tipo de conexión, solamente un objeto es enviado a través de una conexión TCP. La secuencia de eventos para ella es como sigue:

  • El cliente inicia la conexión TCP al servidor por medio del puerto de red 80 (+ 1 RTT).
  • El servidor HTTP espera para la conexión TCP en el puerto de red 80.
  • El cliente HTTP envía la solicitud de mensaje HTTP (Objeto) dentro del Socket de la conexión TCP (+ 1 RTT).
  • El servidor HTTP recibe solicitud de mensaje, la respuesta contiene el objeto requerido y envía mensaje dentro del Socket.
  • El servidor HTTP cierra la conexión TCP.
  • El cliente HTTP recibe mensaje de respuesta que contiene dicho objeto referenciado.

El Tiempo de transmisión total es igual a 2RTT + Tt (Tiempo de transmisión) por objeto.

Formato de Mensajes HTTP

Mensajes de Petición

El mensaje de petición al servidor se divide en 3 secciones:

1. Línea de pedidos: incluye el método, dirección del objeto (URL) y versión del protocolo.
2. Líneas de cabecera (header): incluye datos del servidor, el navegador y el lenguaje, entre otros.
3. Cuerpo del mensaje: puede o no contener información.

Métodos de Peticiones

Método Significado
POST Se guardan las variables enviadas en el cuerpo del mensaje.
GET Se envian las variables mediante la dirección URL del mensaje.
HEAD Pide una respuesta a una petición GET, sirve para obtener información del encabezado de la respuesta.
PUT Se sube un archivo a el cuerpo del mensaje, a una dirección especificada en la dirección URL.
DELETE Elimina archivos de una dirección URL especificada.

Respuestas

El mensaje enviado por el servidor contiene la siguiente estructura:

1. Línea de estado: contiene el protocolo (HTTP/1.1) y el código de respuesta.
2. Encabezado: contiene información sobre el estado de la conexión, fecha de envío, servidor, ultima modificación, tamaño del mensaje y tipo de contenido.
3. Información: contiene el mensaje en formato HTML.

Códigos de Respuesta

Código Significado
200 OK Se recibió el mensaje la información de respuesta en el mensaje.
301 Moved Permanently El objeto pedido fue movido permanentemente, la nueva ubicación sale en el mensaje.
400 Bad Request El servidor no pudo entender el mensaje.
404 Not Found El documento no pudo ser encontrado en el servidor.
505 HTTP Version Not Supported La versión utilizada por el buscador es muy antigua.

Cookies

Una manera de guardar estados en HTTP son las cookies, las que son una especie de archivos fichero que algunos servidores piden a que nuestro navegador guarde con información útil para éste.
Las cookies son enviadas en la sección del encabezado del mensaje y esta guardado en el computador del usuario y controlado por el navegador de Internet.

De esta manera, el protocolo HTTP puede verse como un protocolo mixto, en base que es puramente sin estados, pero con las cookies tiene una cierta correlación con estos.
El principio de las cookies es crearse la primera ves que se ingresa a una página, para que de esta manera, el próximo acceso se tenga información sobre el usuario; entre estas encontramos datos sobre diversas autorizaciones, recomendaciones o sesiones web.

Caché Web

Funcionamiento de un proxy

El Caché Web o Servidores Proxy tienen como fin almacenamiento de objetos para aliviar el peso de transferencia de datos desde el servidor, almacenando objetos recurrentes. Lo encontramos normalmente instalado por nuestro proveedor de Internet, con el fin de facilitar el acceso a las páginas que tienen mayor trafico. Este concepto hace referencia al concepto de caching, que es pasar de una memoria lenta a una más rápida, para así mejorar la velocidad de procesamiento, como sería pasar unos objeto HTTP al proxy para así optimizar el tiempo de respuesta.

La idea principal es mantener un archivo con modificaciones recientes, por lo cual se hace una revisión de la última modificación del archivo para mantener consistencia temporal.

Para ejemplificar este concepto, tomemos esta situación: una persona quiere arrendar una película muy solicitada, pero para ello debe hacer un viaje hasta el local; buscar si está disponible; pagar el arriendo y volver a su casa para verla. Aquí es donde entra el hermano de nuestro sujeto, el cual la había arrendado el día anterior, por lo que ahorró a su hermano, un viaje a la tienda. Es decir, el hermano que arrendó la película actuó como proxy para el que quería verla, ya que le facilitó la información (en este caso la película) que requería, sin tener que pasar por una serie de obstáculos para llegar a su destino y pedirla.

Beneficios

Al tener archivos u objetos en el proxy mejora los siguientes aspectos:

  • Reduce el tiempo de respuesta, ya que no sera necesario accesar siempre al servidos a buscar los objetos HTTP.
  • Reduce el trafico, dado que como se tienen archivos en el proxy reduce el trafico de datos en el servidor.

Ejercicio

Digamos que tenemos archivos de un tamaño aproximado de 1Mb, con un tiempo promedio de 15 segundos en petición de archivos y un delay de Internet igual a 2 segundos, teniendo un link de acceso de 15 Mbps y 100Mbps de LAN.

Con esto obtenemos los siguientes datos:

  • Utilización del LAN : 15%, que se obtiene:

 1Mb  \cdot 15seg = 15Mbps(Transito)
Siendo esta nuestra utilización de la red en Mbps.

 {100Mbps(Lan) \over 15Mbps(Transito)} = 0.15

  • Utilización de link de acceso: 100%, que se obtiene:

{15Mbps(link) \over 15Mbps(Transito)} = 1

  • Delay total : 2 segundos = 1  \cdot 2 segundos

Supongamos un proxy con un rango de acierto del 30%

Ahora el 70% de las peticiones son respondidas por el servidor, mientras que un 30% por el proxy (milisegundos).

Se disminuye la utilización del link de acceso a un 70%.

Ahora nuestro delay total es :
0.7 \cdot(2.01)segundos + 0.3 \cdot milisegundos = 1.4 segundos + milisegundo

Referencias

  • J. F. Kurose, K.W. Ross. Computer Networking A Top Down Approach, 5th Edition. 2.2 The World Wide Web: HTTP.

Enlaces Externos

  • RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1. R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee.
  • Java - Oracle Technology Network for Java Developers
Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas