viernes, 2 de junio de 2017

Servidor Web

Servidor web

Un servidor web o servidor HTTP es un programa informático que procesa una aplicación del lado del servidor, realizando conexiones bidireccionales o unidireccionales y síncronas o asíncronas con el cliente y generando o cediendo una respuesta en cualquier lenguaje o Aplicación del lado del cliente. El código recibido por el cliente es renderizado por un navegador web. Para la transmisión de todos estos datos suele utilizarse algún protocolo. Generalmente se usa el protocolo HTTP para estas comunicaciones, perteneciente a la capa de aplicación del modelo OSI.



Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo de comunicación que permite las transferencias de información en la World Wide Web. HTTP define la sintaxis y la semántica que utilizan los elementos de software de la arquitectura web (clientes, servidores, proxies) para comunicarse. Es un protocolo sin estado, es decir, no guarda ninguna información sobre conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se usan las cookies, que es información que un servidor puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web instituir la noción de sesión, y también permite rastrear usuarios ya que las cookies pueden guardarse en el cliente por tiempo indeterminado.

En nuestro caso vamos a generar un servidor web con un Arduino y ayudándonos de la shield de Ethernet.



El Arduino Ethernet Shield permite conectar el Arduino a Internet. Está basado en el chip Wiznet W5100 con un buffer interno de 16k que es el encargado de dar una dirección IP al Arduino. Tiene un conector ethernet RJ-45 con una velocidad de 10/100Mb. Se usa la librería <Ethernet.h> para escribir el programa. También tiene un slot de tarjetas micro-SD para almacenar datos para servir a la red. Para esto, se usa la librería <SD.h>. Para comunicarse con la placa Arduino, utiliza el puerto SPI (pins 10, 11 ,12 y 13) con la librería <SPI.h>, y el pin 4 si trabaja con una tarjeta micro-SD. Estos pins no pueden ser usados como entradas o salidas digitales. También tiene un botón de Reset que resetea tanto la placa Arduino como el W5100. Gracias a la Ethernet Shield podemos usar el Arduino como servidor web o como cliente web.

La petición HTTP que envía el cliente al servidor sería algo parecido a lo siguiente:
      GET / HTTP/1.1
      Host: 192.168.1.100  (dirección IP del servidor)
      Accept: text/html
      User-Agent: Mozilla/5.0 (Windows)  (Navegador y sistema operativo)
      [Línea en blanco]
Y la respuesta del servidor al cliente sería similar a lo siguiente:
      HTTP/1.1 200 OK
      Date: Sun, 25 Des 2014 17:42:10 GMT
      Content-Type: text/html
      <html>
        <!-- código HTML -->
      </html>

En resumen, nuestro Arduino está conectado a la red con una IP que le asignamos. El código HTML de la web que enviará lo escribiremos en el sketch. Cuando ponemos esta dirección IP en un buscador Web de un ordenador conectado a la misma red (o desde fuera a través de Internet si abrimos un puerto que nos direccione a la IP del Arduino), estamos enviando una petición HTTP. Cuando el Arduino lea esta petición, nos enviará el código HTML para que podamos visualizar la página Web en el navegador.





No hay comentarios:

Publicar un comentario