Cliente HTTP (Solo Texto)

 

Objetivo:

El objetivo de esta práctica es el de aprender a usar el protocolo HTTP para poder usarlo en el manejo de la información por Internet.


Introducción:

HTTP (Hyper Text Transfer Protocol)

El Protocolo de Transferencia de HiperTexto (Hypertext Transfer Protocol) es un sencillo protocolo cliente-servidor que articula los intercambios de información entre los clientes Web y los servidores HTTP. La especificación completa del protocolo HTTP 1/0 está recogida en el RFC 1945. Fue propuesto por Tim Berners-Lee,atendiendo a las necesidades de un sistema global de distribución de información como el World Wide Web. Desde el punto de vista de las comunicaciones, está soportado sobre los servicios de conexión TCP/IP, y funciona de la misma forma que el resto de los servicios comunes de los entornos UNIX: un proceso servidor escucha en un puerto de comunicaciones TCP (por defecto, el 80), y espera las solicitudes de conexión de los clientes Web. Una vez que se establece la conexión, el protocolo TCP se encarga de mantener la comunicación y garantizar un intercambio de datos libre de errores.HTTP se basa en sencillas operaciones solicitud/respuesta. Un cliente establece una conexión con un servidor y envía un mensaje con los datos de la solicitud. El servidor responde con un mensaje similar, que contiene el estado de la operación y su posible resultado. Todas las operaciones pueden adjuntar un objeto o recurso sobre el que actúan; cada objeto Web (documento HTML, fichero multimedia o aplicación CGI) es conocido por su URL.

Los recursos u objetos que actúan como entrada o salida de un comando HTTP están clasificados por su descripción MIME. De esta forma, el protocolo puede intercambiar cualquier tipo de dato, sin preocuparse de su contenido. La transferencia se realiza en modo binario, byte a byte, y la identificación MIME permitirá que el receptor trate adecuadamente los datos. Las principales características del protocolo HTTP son: Toda la comunicación entre los clientes y servidores se realiza a partir de caracteres de 8 bits. De esta forma, se puede transmitir cualquier tipo de documento: texto, binario, etc., respetando su formato original. Permite la transferencia de objetos multimedia. El contenido de cada objeto intercambiado está identificado por su clasificación MIME.

Este protocolo es la base de toda comunicación desarrollada en la Web. Se utiliza desde principios de los 90. HTTP es un protocolo ASCII que se ocupa de establecer una comunicación TCP segura entre el cliente y el servidor siempre que se ha de producir un intercambio de datos. El puerto 80 es el que utiliza un servidor HTTP para esperar las posibles conexiones por parte del cliente.

La conexión entre un cliente y un servidor HTTP es de muy corta duración. El cliente establece una conexión con el servidor HTTP a través de puerto 80 y envía al servidor su solicitud pidiendo un determinado documento. El servidor recibe la consulta, la evalúa y, en el mejor de los casos, envía el documento que se ha pedido. El servidor cierra automáticamente la conexión TCP una vez ha enviado al cliente el documento solicitado o bien un mensaje de error en respuesta. Es por esto que el protocolo HTTP se conoce también como protocolo sin estado (stateless protocol), ya que la conexión no pasa por varias fases: desde el login (entrada) del cliente, pasando por el intercambio de datos hasta el logout (salida) del mismo cliente. Esto simplifica el desarrollo de los programas cliente y servidor HTTP.

El protocolo HTTP en su estructura, divide el mensaje en dos partes: el encabezado (header) y el cuerpo de texto (body), separados entre sí por una línea en blanco, tal y como se hace, por ejemplo, con los mensajes de correo electrónico, exceptuando que en HTTP el cuerpo no se llama body sino Entity. El encabezado está formado por unas líneas de texto, cada una de las cuales representa un campo determinado con su valor correspondiente. Veamos como ejemplo, la petición que un cliente HTTP hace al servidor:

HTTP-Client:

  • GET/index.htm
  • HTTP/1.0 Accept: image/gif, image/x-x bitmap, image/jpeg, image/pjpeg */*
  • Accept-Languaje: de, en
  • Pragma: no-cache
  • User-Agent: Mozilla/2.0 (compatible; MSIE 3.01; Windows 95)
  • Host: localhost
  • Connection: Keep-Alive
  • Extension: Security/Remote-Passphrase

Pues bien, al recibir el servidor ésta petición, la envía:

HTTP-Server:


HTTP/1.0 200 OK
Content-Lenght: 485
Content Type: TEXT/HTML
Date: Monday, 3-May-99 16:28:06 GMT
Server: VB HTTP-Server V 1.0

<HTML>
         <HEAD>
         <TITLE>
         Home Page
         </TITLE>
         </HEAD>
<BODY BACKGROUND="Elegbkgd.gif">
<H1>Entender Internet </H1>
.......

</BODY>

</HTML>

En este ejemplo podemos diferenciar claramente el encabezado (Content, Date...) y el cuerpo, que empieza con la etiqueta . En el cuerpo es dónde están los datos que el navegador interpretará para presentar la página Web como el diseñador ha previsto.

Http URL El esquema "http" es usado para localizar recursos de la red via el protocolo HTTP.

A continuación se define la sintáxis específica y la semántica para URLs HTTP.

http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

Métodos

El método token indica el método que se llevará a cabo sobre el recurso indentifcado por el URI

Los métodos son sensitivos a mayus/minus.

  • OPTIONS
  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • TRACE
  • CONNECT

A continuación se presentan los códigos de estado del servidor:

  • "100" Continue
  • "101" Switching Protocols
  • "200" OK
  • "201" Created
  • "202": Accepted
  • "203" :Non-Authoritative Information
  • "204" No Content
  • "205" Reset Content
  • "206" Partial Content
  • "300" Multiple Choices
  • "301" Moved Permanently
  • "302" Found
  • "303" See Other
  • "304" Not Modified
  • "305" Use Proxy
  • "307" Temporary Redirect
  • "400" Bad Request
  • "401" Unauthorized
  • "402" Payment Required
  • "403" Forbidden
  • "404" Not Found
  • "405" Method Not Allowed
  • "406" Not Acceptable Fielding,

Método GET

El método GET recuperar cualquier información (en la forma de una entidad) que es identificada por un URI de petición. Si el URI de petición se refiere a el proceso de generación de datos, son esos datos los que deberán ser regresados como la entidad en la respuesta y no la fuente de texto del proceso, a menos que el texto sea el proceso de salida.

Cada operación HTTP implica una conexión con el servidor, que es liberada al término de la misma. Es decir, en una operación se puede recoger un único objeto. No mantiene estado. Cada petición de un cliente a un servidor no es influida por las transacciones anteriores. El servidor trata cada petición como una operación totalmente independiente del resto. Cada objeto al que se aplican los verbos del protocolo está identificado a través de la información de situación del final de la URL. NOTA HTTP se diseñó específicamente para el World Wide Web: es un protocolo rápido y sencillo que permite la transferencia de múltiples tipos de información de forma eficiente y rápida.

Se puede comparar, por ejemplo, con FTP, que es también un protocolo de transferencia de ficheros, pero tiene un conjunto muy amplio de comandos, y no se integra demasiado bien en las transferencias multimedia. Etapas de una transacción HTTP Para profundizar más en el funcionamiento de HTTP, veremos primero un caso particular de una transacción HTTP; en los siguientes apartados se analizarán las diferentes partes de este proceso.Cada vez que un cliente realiza una petición a un servidor, se ejecutan los siguientes pasos: Un usuario accede a una URL, seleccionando un enlace de un documento HTML o introduciéndola directamente en el campo "Location " del cliente Web.

El cliente Web descodifica la URL, separando sus diferentes partes. Así identifica el protocolo de acceso, la dirección DNS o IP del servidor, el posible puerto opcional (el valor por defecto es 80) y el objeto requerido del servidor. Se abre una conexión TCP/IP con el servidor, llamando al puerto TCP correspondiente. Se realiza la petición. Para ello, se envía el comando necesario (GET, POST, HEAD,...), la dirección del objeto requerido (el contenido de la URL que sigue a la dirección del servidor), la versión del protocolo HTTP empleada (casi siempre HTTP/1.0) y un conjunto variable de información, que incluye datos sobre las capacidades del browser, datos opcionales para el servidor,... El servidor devuelve la respuesta al cliente. Consiste en un código de estado y el tipo de dato MIME de la información de retorno, seguido de la propia información. Se cierra la conexión TCP.

Este proceso se repite en cada acceso al servidor HTTP. Por ejemplo, si se recoge un documento HTML en cuyo interior están insertadas cuatro imágenes, el proceso anterior se repite cinco veces, una para el documento HTML y cuatro para las imágenes. NOTA En la actualidad se ha mejorado este procedimiento, permitiendo que una misma conexión se mantenga activa durante un cierto periodo de tiempo, de forma que sea utilizada en sucesivas transacciones. Este mecanismo, denominado HTTP Keep Alive, es empleado por la mayoría de los clientes y servidores modernos. Esta mejora es imprescindible en una Internet saturada, en la que el establecimiento de cada nueva conexión es un proceso lento y costoso.

 


Material:

Una computadora

Visual Basic 6

Conección a Internet


Desarrollo

El desarrollo de la práctica es la siguiente:

1.- Abres una forma nueva en Visual Basic.

2.- Diseñas la interfaz para que el programa sea automático.

3.- Añades a la forma el Winsock

4.- Empiezas a programar.

a)Como requeriremos dos formas, una para el cliente y otra para el servidor debemos agregar otra forma a parte de la que nos aparece predeterminadamente.

b) Agregar los componentes necesarios para darle forma a nuestra interfaz de cliente y de servidor: Cajas de texto y botones de control.

sintaxis:

GET / http/1.1

Host:www.ucol.mx

Dentro de la programacion debes tomar en cuenta las diferentes etiqueas que hay. Para la separación de imágenes, ligas, formas y tablas de la página se utilizan las instrucciones para el manejo de cadenas en Visual Basic.

La función Instr devuelve la posición de la subcadena buscada y en caso de no encontrar ninguna correspondencia devuelve 0.

Instr (Start, Cad1, Cad2)

La función Mid devuelve una subcadena que se encuentra contenida dentro de otra cadena: Mid(Cad,subcad,posini,longitud)

 


Conclusiones:

En una conexión HTTP se debe tener en cuenta que una vez establecida dicha conexión el servidor no regresa mensajes indicando el establecimiento de la conexión.