Saltar a: navegación, buscar

Servidores Web

Servidores Web
Información sobre la plantilla
Servidores.jpg
Sistema usado para estandarizar la comunicación entre distintas plataformas y lenguajes de programación.

Servidores Web. Es la tecnología que tiene implícito programas informáticos que procesan aplicaciones realizando conexiones bidireccionales y/o unidireccionales y síncronas o asíncronas con el cliente, generando o cediendo una respuesta en cualquier lenguaje o aplicación del lado del cliente.

Historia

Los Servicios Web surgieron ante una necesidad de estandarizar la comunicación entre distintas plataformas (PC, Mainframe, Mac, etc.) y lenguajes de programación (PHP, C, Java, etc.). Anteriormente se habían realizado intentos de crear estándares pero fracasaron o no tuvieron el suficiente éxito, algunos de ellos son DCOM y CORBA, por ser dependientes de la implementación del vendedor DCOM – Microsoft, y CORBA – ORB (a pesar que CORBA de múltiples vendedores pueden operar entre si, hay ciertas limitaciones para aplicaciones de niveles más altos en los cuales se necesite seguridad o administración de transacciones).

Otro gran problema es que se hacía uso de RPC (Remote Procedure Call) para realizar la comunicación entre diferentes nodos. Esto, además de presentar ciertos problemas de seguridad, tiene la desventaja de que su implementación en un ambiente como es Internet, es casi imposible (muchos Firewalls bloquean este tipo de mensajes, lo que hace prácticamente imposible a dos computadoras conectadas por Internet comunicarse). Los Servicios Web surgieron para finalmente poder lograr la tan esperada comunicación entre diferentes plataformas. En la actualidad muchos sistemas legacy están pasando a ser servicios web. Es por esto que en 1999 se comenzó a plantear un nuevo estándar, el cual terminaría utilizando XML, SOAP, WSDL, y UDDI.

A pesar de mucho limitar el uso de los servicios Web al Protocolo http, los servicios Web no fueron pensados para un protocolo en particular, es decir, nada impidió utilizar SOAP sobre algún otro protocolo de Internet (SMTP, FTP, etc.). Se utiliza principalmente HTTP por ser un protocolo ampliamente difundido y que se encuentra menos restringido por firewalls (generalmente se bloquean puertos como el FTP, pero el HTTP es muy probable que no este bloqueado).

Primer Servidor Web

La década de los 80's fue marcada por el surgimiento de la PC y de la interfase gráfica. Entre 1988 y 1993, NeXT fabricó una estación de trabajo de altas prestaciones para la época de la que hablamos que impulsó con el Sistema operativo de la casa, el NeXTSTEP. Contaba con un micro de la serie (68040) de Motorota capaz de trabajar a 25 MHz, una memoria de 8 MB ampliables a 64 MB y un monitor de 17. La máquina, que costaba 6500 dólares, recibió el nombre de NeXT Computer, aunque se le acabó conociendo como NeXTcube o, simplemente, "The Cube". Más allá de su Hardware y sus posibilidades técnicas, la NeXT Computer ha pasado a formar parte de la pequeña gran historia de la informática por ser el ordenador que Tim Berners-Lee, el "inventor" de Internet, se utilizó por primera vez como un Servidor Web.

En la década de los 90's Internet permitió conectar computadoras en una escala global. En principio la conexión fue entre PCs y servidores por medio del explorador de Internet. A comienzos de este siglo es clara la necesidad de permitir a las computadoras conectadas a Internet comunicarse entre ellas. Desde entonces se va dando forma al nuevo modelo de computación distribuida llamado servicios Web basados en XML. El objetivo es permitir comunicarse entre sí a sistemas heterogéneos dentro y fuera de la empresa. Esta comunicación es independiente del Sistema Operativo, lenguaje o modelo de programación. Para conseguir esto se desarrollaron estándares. El consorcio de Internet http://www.w3c.org fue el encargado de crear y mantener estos estándares.

Desde los inicios de Internet, fueron surgiendo diferentes demandas por los usuarios y se dieron soluciones mediante lenguajes estáticos. A medida que paso el tiempo, las tecnologías fueron desarrollándose y surgieron nuevos problemas a dar solución. Esto dio lugar a desarrollar lenguajes de programación para la Web dinámicos, que permitieran interactuar con los usuarios y utilizaran sistemas de Bases de Datos.

Antes de la adopción del modelo de Servicios Web basados en XML los datos eran “islas” que se encontraban dentro de las aplicaciones. Era muy difícil y costoso implementar soluciones para acceder a la información desde afuera de la aplicación. Las aplicaciones pueden ahora, comunicarse entre sí y con los sistemas de sus socios, proveedores y clientes gracias a los Servicios Web y XML.

Servicios

  • Internet: Internet es una Red de Ordenadores conectados en toda la extensión del Globo Terráqueo, que ofrece diversos servicios a sus usuarios como pueden ser el Correo electrónico, el Chat o la Web. Todos los servicios que ofrece Internet son llevados a cabo por miles de ordenadores que están permanentemente encendidos y conectados a Internet, esperando que los usuarios les soliciten los servicios y sirviéndolos una vez son solicitados.
  • Página Web: Documento o fuente de información, generalmente en formato HTML y que puede contener hiperenlaces a otras Páginas Web. Dicha página , podrá ser accesible desde un dispositivo físico, una intranet, o Internet.
  • Navegador Web: Para establecer conexiones con los servidores Web, y obtener la información y los servicios que estos prestan, el usuario necesita tener instalado en su equipo un programa cliente capaz de comunicarse con ellos. Estos programas son los llamados Navegadores Web. Los Navegadores Web, también llamados Visores de Web o Browsers, son aplicaciones que permiten ver en pantalla texto con formato (con palabras en negrita, y con distintas fuentes tipográficas, tamaños y colores) y presentar imágenes en línea. También permiten visualizar secuencias de vídeo y escuchar ficheros de sonido.
  • Servidor: Un Servidor es un tipo de Software que suministra servicios a los usuarios o terminales que lo solicitan. Por ejemplo, en una típica Arquitectura Cliente-servidor, el cliente podría ser un ordenador que realiza peticiones de información a través de un programa de correo (Outlook Express por ejemplo) y, el servidor le entrega los datos en forma de correos electrónicos en respuesta a su solicitud. Un servidor no es necesariamente una máquina de última generación de grandes proporciones, no es necesariamente un superordenador; un servidor puede ser desde una computadora vieja, hasta una máquina sumamente potente (ej. Servidores web, bases de datos grandes, etc., procesadores especiales y hasta varios gigabytes de memoria).

Todo esto depende del uso que se le dé al servidor. Si usted lo desea, puede convertir al equipo desde el cual se está trabajando en un servidor instalando un programa que trabaje por la Red y a la que los usuarios de su red ingresen a través de un programa de servidor web como Apache. Por lo cual podemos llegar a la conclusión de que un servidor también puede ser un proceso que entrega información o sirve a otro proceso.

El modelo Cliente-Servidor no necesariamente implica tener dos ordenadores, ya que un proceso cliente puede solicitar algo como una impresión a un proceso servidor en un mismo ordenador. Cliente/servidor: Esta Arquitectura consiste básicamente en un programa cliente que realiza peticiones a otro programa el servidor que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un Sistema Operativo multiusuario distribuido a través de una red de computadoras.

En esta Arquitectura la capacidad de proceso está repartida entre los Clientes y los Servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema. La separación entre Cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa.

Los tipos específicos de servidores que incluyen son los Servidores Web, los Servidores de archivo, los Servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma. Una disposición muy común son los Sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.

¿Qué es un Servidor Web?

Un servidor web es un programa que sirve datos en forma de Páginas Web, hipertextos o páginas HTML (HyperText Markup Language): textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones o reproductores de sonidos. La comunicación de estos datos entre cliente y servidor se hace por medio un protocolo, concretamente del protocolo Http. Con esto, un servidor Web se mantiene a la espera de peticiones HTTP, que son ejecutadas por un cliente HTTP; lo que solemos conocer como un Navegador Web. A modo de ejemplo: al teclear (http://www.cnice.mec.es) en un navegador, éste realizará una petición HTTP al servidor que tiene asociada dicha URL.

El servidor responde al cliente enviando el código HTML de la página; el navegador cuando recibe el código, lo interpreta y lo muestra en pantalla. El Cliente es el encargado de interpretar el código HTML, es decir, de mostrar las fuentes, los colores y la disposición de los textos y objetos de la página. El servidor se encarga de transferir el código de la página sin llevar a cabo ninguna interpretación de la misma.

Servidor Web Local

Tener un servidor Web local debería ser fundamental para todas aquellas personas que no disponen de un Sitio Web online. ¿Por qué? La respuesta es muy sencilla. El Servidor local nos va a permitir comprobar que todas las modificaciones que se van a realizar en nuestro diseños Web, no provoquen algún error que pueda afectar a todos aquellos usuarios que naveguen por la red. Otro aspecto positivo de un Servidor local, es que no hará falta tener que subir ficheros al servidor Ftp para hacer nuestras pruebas con lo cual, la espera se hace más corta.

Como es de suponer, también se permite el acceso a nuestro servidor a cualquier usuario de Internet. Para ello, se configura correctamente el Router y sería de mucha ayuda tener una dirección IP estática, mediante la cual cualquier usuario podría conectarse a nuestro servidor desde un navegador.

Protocolo: Conjunto de reglas que gobiernan el intercambio de datos entre entidades dentro de una red. Es el lenguaje común “que utilizan” los ordenadores para “hablar” y entenderse entre sí. Existen muchos tipos de protocolos cada uno con sus reglas bien definidas, como por ejemplo: FTP, POP3, SMTP, ICMP, etc.

Protocolo HTTP: Una de las características del Protocolo Http es que no es permanente, es decir, cada operación HTTP implica una conexión con el servidor, que es liberada al término de la misma. Por ejemplo, un documento HTML con 10 imágenes son necesarias 11 conexiones distintas (10 imágenes más la página HTML en sí).

Servidores de aplicaciones

Un Servidor de Aplicaciones no es más que un cambio de nombre, para algunos Servidores Web de nueva generación que proporcionan la lógica de negocio sobre la que construir aplicaciones. Suelen asociarse con servidores de alto rendimiento pensados para dar servicio a sitios Web (Web Sites) con grandes necesidades: afluencia de visitas, movimiento de datos, atención de transacciones hacia bases de datos, etc. Generalmente los fabricantes del sector tienen a disposición del público un servidor Web básico y otro con multitud de extensiones fuertemente integradas al que llaman Servidor de Aplicaciones.

Pasos para la petición de una página Web

Primero, el navegador solicita como Cliente DNS la traducción de una URL (por ejemplo http://www.mec.es) a una IP y segundo, una vez que ha recibido la traducción del Servidor DNS, se realiza la petición HTTP al servidor que tenga la IP concreta. Fijémonos que si ponemos la IP en vez de la dirección en el Navegador, también funciona. Además, carece de 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. A partir de la versión 1.1 del Protocolo http, se pueden habilitar conexiones persistentes (permiten enviar más objetos con un menor número de conexiones.

Funcionamiento de un Servidor Web

La Web funciona siguiendo el Modelo cliente-servidor. Un Servidor se encarga de prestar el servicio, y un cliente que es quien recibe dicho servicio.

Cliente Web: Es un programa mediante el cual el usuario solicita a un Servidores Web el envío de información. Esta información se transfiere mediante el Protocolo HTTP. Información que recibe: La información que se recibe es un conjunto de documentos de texto codificados en lenguaje HTML.

El Cliente Web debe interpretar estos documentos para mostrárselos al usuario en el formato correspondiente. Cuando la información recibida no es un documento de texto, sino un objeto multimedia que el cliente no sabe interpretar, el propio cliente Web debe activar una aplicación externa encargada de gestionarlo. Clientes Web más habituales: Los clientes Web más habituales son Microsoft Internet Explorer, Mozilla Firefox y Netscape Navigator.

Arquitectura Modelo Cliente – Servidor

Cliente servidor.png

Diversas aplicaciones se ejecutan en un entorno Cliente/servidor. Esto significa que los equipos clientes (equipos que forman parte de una red) contactan a un servidor, un equipo generalmente muy potente en materia de capacidad de entrada/salida, que proporciona servicios a los equipos clientes. Estos servicios son programas que proporcionan datos como la hora, archivos, una conexión, etc.

Los servicios son utilizados por programas denominados programas clientes que se ejecutan en equipos clientes. Por eso se utiliza el término "cliente" (cliente FTP, cliente de correo electrónico, etc.) cuando un programa que se ha diseñado para ejecutarse en un equipo cliente, capaz de procesar los datos recibidos de un servidor (en el caso del cliente FTP se trata de archivos, mientras que para el cliente de correo electrónico se trata de correo electrónico).

Es la manera de describir la forma de trabajo entre los clientes y los ordenadores.

Cliente: Es el ordenador que pide información a otro, mediante la aplicación de un programa llamado cliente. Este contacta con el servidor:

  • Da formato a la petición de la información.
  • Da formato a la respuesta.

Servidor: Es el ordenador que ofrece la información mediante la aplicación de un programa llamado servidor.

  • Recibe la información y la procesa.
  • Responde enviando la petición al cliente.

Existen varios tipos de servidores Web y entre los cuales podemos mencionar los siguientes:

Servidores basados en procesos

Este diseño es el predecesor de todos los demás. Se basa en la obtención de paralelismo mediante la duplicación del proceso de ejecución. Existen varios diseños basados en procesos. El más simple es en el que el proceso principal espera la llegada de una nueva conexión y en ese momento, se duplica creando una copia exacta que atenderá esta conexión. Sobre esta opción de diseño caben optimizaciones importantes, como las que incluyó Apache con la técnica de Pre-fork.

Técnica pre-fork. Consiste en la creación previa de un grupo de procesos y su mantenimiento hasta que sea necesaria su utilización. Las principales ventajas de este diseño residen en su simplicidad de implementación y su seguridad. La gran desventaja de este diseño es el bajo rendimiento. La creación o eliminación de un proceso son tareas pesadas para el sistema operativo y consumen una gran cantidad de tiempo.

Servidores basados en hilos

Este tipo de diseño hoy en día es mucho más común que el basado en procesos. Los conceptos básicos respecto al funcionamiento de un servidor basado en procesos son aplicables también a este modelo. Las principales diferencias de los dos modelos residen en el propio concepto de hilo. La ventaja es que la creación de un hilo no es tan costosa como la de un proceso. Varios hilos de un mismo proceso pueden compartir datos entre ellos, ya que comparten el mismo espacio de memoria.

El modelo de servidor basado en hilos hereda muchas de las características de los Servidores basados en procesos, entre ellas la de la simplicidad en su diseño e implementación. Por otro lado, el compartir el espacio de memoria implica un riesgo de seguridad que no tienen los servidores basado en procesos.

Hilos y procesos.Proceso: Es una ocurrencia o instancia de un programa en ejecución. Además, un proceso es propietario de una serie de recursos como: un espacio de direcciones en memoria, ficheros, hilos, etc.

Hilo: Es un proceso totalmente aislado es un proceso inerte, es decir, para que un proceso sea capaz de hacer algo, el proceso debe ser propietario de al menos un hilo (thread). El hilo es el responsable de ejecutar el Código contenido en el espacio de direcciones del proceso. De hecho, un proceso puede contener varios hilos y todos ellos ejecutando código "simultáneamente" en el espacio de direcciones del proceso y compartiendo recursos comunes.

Al compartir todos los hilos de un proceso la misma zona de memoria, si un hilo toca una variable, todos los demás hilos del mismo proceso verán el nuevo valor de la variable. Si no hay hilos ejecutando código en el espacio de direcciones del proceso no hay ninguna razón para que el proceso continúe existiendo y el sistema destruirá automáticamente el proceso y su espacio en memoria.

Servidores basado en sockets no bloqueantes o dirigidos por eventos

Estos servidores basan su funcionamiento en la utilización de lecturas y escrituras asíncronas sobre Sockets. Normalmente, estos servidores utilizan una llamada al sistema que examine el estado de los sockets con los que trabaja. Cada sistema operativo implementa una o más funciones de examen de sockets. El objetivo de estas funciones es inspeccionar el estado de un grupo de sockets asociados a cada una de las conexiones.

  • La ventaja de este diseño es principalmente su velocidad.
  • La desventaja es que la concurrencia es simulada; es decir, existe un sólo proceso y un sólo hilo, desde el cual se atienden todas las conexiones.

Socket: No son más que puntos o medios de comunicación entre dos aplicaciones que permiten que un proceso hable (emita o reciba información) con otro proceso estando los dos en distintas máquinas. Lo vemos mejor con un dibujo:

Socket.png

Si extrapolamos el concepto a la comunicación entre personas, un socket es al sistema de comunicación entre ordenadores lo que un teléfono es al sistema de comunicación entre personas: un punto de comunicación entre dos agentes (procesos o personas respectivamente) por el cual se puede emitir o recibir información.

Servidores implementados en el kernel

Este diseño es un poco especial. Se trata de un intento de acelerar la velocidad de un servidor Web mediante el movimiento de su código de espacio de usuario a espacio de kernel. En teoría este modelo se muestra muy eficiente, pero de cara al mundo real, los problemas e inconvenientes son muy grandes. Hay que tener en cuenta que cualquier problema que se produzca a nivel de kernel puede ocasionar la caída de todo el sistema completo.

Servidores más usados

Apache

Está diseñado para ser un Servidor Web potente y flexible que pueda funcionar en la más amplia variedad de plataformas y entornos. Las diferentes plataformas y entornos, hacen que a menudo sean necesarias diferentes características o funcionalidades. Apache se ha adaptado siempre a una gran variedad de entornos a través de su diseño modular.

Este diseño permite a los administradores de Sitios Web elegir que características van a ser incluidas en el servidor seleccionando que módulos se van a cargar, ya sea al compilar o al ejecutar el servidor. Este es el más común y más utilizado en todo el mundo.

Además, es gratuito, y de Código abierto, así que podríamos decir que corre sobre cualquier plataforma. Apache es una muestra, al igual que el Sistema Operativo Linux (un Unix desarrollado inicialmente para PC), de que el trabajo voluntario y cooperativo dentro de Internet es capaz de producir aplicaciones de calidad profesional difíciles de igualar.

Microsoft IIS

Es el Servidor Web de Microsoft, el IIS (Internet Informatión Server), es el motor que ofrece esta compañía a modo profesional, con él es posible programar en ASP (Active Server Pages, Páginas de Servidor Activo) las cuales vienen a ser algo similares al PHP, este servidor posee componentes programables desde ASP accediendo a cada uno de sus módulos para una función específica.

Este tipo de servidor lo llevan sólo los sistemas Windows NT, por tanto añadimos Windows 2000 Professional, Windows 2000 Advanced Server, Windows XP Professional, los cuales traen las versiones 4.0, 5.0 y 5.1, no obstante en la versión del Windows .NET Server vendrá la versión 6.0 (dicho sistema está en fase beta y que se puede descargar desde la misma sede de Microsoft, sólo es necesario registrarse).

En los sistemas Windows XP el IIS no viene instalado por defecto por tanto hemos de tener el CD con el sistema completo a mano para instalarlo desde:

Sun Java System Web Server

Es un servidor Web de alto rendimiento, de escalabilidad masiva y seguro que ofrece contenido dinámico y estático. Las características de virtualización de dominio, versatilidad de configuración y seguridad robusta, brindan una mejor calidad de servicio.

Ngnix

Nginx (se pronuncia “enginx x”) es un Servidor http y proxy inverso gratuito, de Código abierto y de alto rendimiento, además de ser Servidor proxy para IMAP y POP3.Este servidor esta actualmente manejando entre el 1% y el 4% de todos los dominios globales. A pesar de ser todavía una versión “beta”, Nginx es conocido por su estabilidad, su gran conjunto de características, una configuración sencilla y por consumir pocos recursos. Como este servidor no provee actualmente de un adaptador directo para Merb, usted requerirá utilizar un proxy reverso en Nginx con el fin de direccionar peticiones hacia uno o varios procesos Merb distintos. Esto puede ejecutarse con cualquier Servidor de aplicaciones basado en Rack, como Mongrel, Thin, Ebb o Glassfish.

Lighttp

Es un servidor Web para los Sistemas operativos Unix/Linux y Microsoft Windows. Este servidor también conocido como Lighty, es una alternativa para el Servidor de paginas Web Apache. Esta diseñado para ser seguro, rápido (muy rápido a decir verdad), compatible con los estandars y flexible a la vez que esta optimizado para entornos en los cuales la velocidad es critica.

Su huella de memoria es muy pequeña (en comparacion a otros servidores Web), una ligera carga en el CPU y su enfoque en velocidad hacen de lighttpd perfecto para servidores con demasiada carga. Este servidor Web es otro de los más ligeros que hay en el mercado. Está especialmente pensado para hacer cargas pesadas sin perder balance, utilizando poca RAM y poca de CPU. Algunas páginas populares que lo usan son Youtube, Wikipedia y otras que soportan gran tráfico diariamente. También es gratuito y se distribuye bajo Licencia BSD.

Funcionamiento en la actualidad

El uso de los Servicios Web integra la información que puede ser accedida desde distintos dispositivos, desde distintas plataformas de Hardware o Software y que puede estar guardada en distintos formatos. El lenguaje estándar para lograr esta integración es XML. Además los servidores Web pueden disponer de un intérprete de otros lenguajes de programación que ejecutan código embebido dentro del código HTML de las páginas que contiene el sitio antes de enviar el resultado al cliente.

Esto se conoce como programación de lado del servidor y utiliza lenguajes como ASP, PHP, Perl y Ajax. Las ventajas de utilizar estos lenguajes radica en la potencia de los mismos ejecutando tareas mas complejas como, por ejemplo acceder a bases de datos abstrayendo al cliente de toda la operación.

Los servidores en el mundo hoy en día son completamente imprescindibles sin ellos no podríamos hablar por teléfono, las comunicaciones en un alto porcentaje desaparecerían, la Telefonía móvil y fija se vería muy afectada, todos los negocios que trabajan en o con sedes centrales repartiendo sus datos y recursos quedarían completamente paralizadas (veamos por ejemplo, casas de seguros, bancos, hospitales…), si mañana no hubiesen Servidores, o bueno, y porque no decirlo, administradores de sistemas, el país tardaría muy poco en sumirse en el caos, un Sistema informático puede controlar Cámaras de seguridad, el estado del tráfico, por ejemplo también utilizamos los sistemas informáticos para hacer las predicciones del tiempo, y alguien puede pensar que se están citando algunos ejemplos que podría procesar un solo sistema, si, pero ¿como recibiría ese sistema datos de otros sistemas informáticos repartidos por el mundo si no tuviesen el soporte de otros servidores y redes para comunicarse entre si? simplemente no podrían.

Véase también

Fuentes