Los servidores web son una de las cosas más utilizadas en Internet, pero incluso las personas técnicas muchas veces desconocen cómo funcionan realmente. Es decir: ¿Qué hay debajo del despacho de una web ¿Cómo funciona un servidor al ingresar a un sitio o servicio web?
Luego de haber visto las principales características de un servidor web, ahora nos enfocaremos en ver el funcionamiento de un servidor web, para tener bien claro el escenario donde se desenvuelven las webs y sus visitas.
Contenido
Historia de los Servidores Web
Antes de empezar con el análisis del funcionamiento de un servidor web conviene repasar un poco la historia para ver como se originó el primer servidor web.
En 1980, un británico llamado Timothy Berners-Lee que en ese entonces trabajaba en el CERN vio un problema en la forma en que los científicos compartían información y se le ocurrió un proyecto que más tarde se conoció como el hipertexto.
¿Buscas Alojamiento en Servidores Web Profesionales?
Servidor Web LiteSpeed rápido con Soporte PHP-MySQL desde $4,90/mes
Sin embargo demoró varios años en plasmarse, en un principio Berners-Lee abandonó el CERN luego de solo unos meses y recién volvió varios años más tarde.
Luego de su regreso, tras algún tiempo volvió a plantear la idea del hipertexto. El cual estaba formado por un lenguaje de marcado que luego se denominó HTML (HyperText Markup Language) y un protocolo para el transporte de datos que se denominó HTTP (HyperText Transfer Protocol).
Igualmente ahí no acabo el trabajo de Berners-Lee porque como el hipertexto era un concepto nuevo también debía trabajar en cómo distribuir el hipertexto y finalmente como hacer que ese contenido se sirviera al usuario que lo solicitaba.
Para eso primero debieron desarrollar el primer servidor Web al que llamó httpd (HyperText Transfer Protocol Daemon) y el primer navegador web que se llamo World Wide Web junto con el sistema de URL (Uniform Resource Locator) que permite acceder al contenido. Esto dio paso a una de las bases de la definición de hosting que surgiría posteriormente con el auge de los servidores físicos.
Luego de combinar el Hipertexto con la red llamada Internet fue que nació la World Wide Web que conocemos hoy, que nos parece tan familiar y cotidiana, sin embargo fue una idea que cambió el mundo para siempre en aquel entonces.
A lo largo de los años Internet a cambiado mucho sin embargo aún hoy sigue funcionando casi bajo el mismo principio que en las primeras etapas de la web hace casi 30 años.
Al día de hoy continuamos utilizando servidores web, seguimos usando el protocolo HTTP y el lenguaje HTML, aunque por su puesto estos tres pilares han evolucionado en este tiempo agregando funciones y adaptándose a la época moderna actualizando sus estándares.
¿Cómo funciona la web?
Para poder explicarte como funciona un servidor primero tenemos que explicarte como funciona una web.
Lo primero a aclarar es que para poder ver una página web necesitamos lo que se llama un cliente web, que comúnmente llamamos navegadores, como pueden ser Chrome, Firefox, Edge/Internet Explorer, Safari entre muchos otros.
Cuando usamos un cliente web (navegador) y abrimos una web cualquiera sin darnos cuenta estamos usando el mismo protocolo original llamado HTTP que es en lo que se basa la web.
Si bien los navegadores modernos manejan varios protocolos diferentes los navegadores fueron diseñados para usar HTTP. Por eso cuando escribimos la dirección aunque no le pongamos el http adelante el navegador asumirá que queremos usar este protocolo y luego de unos instantes nos retornara una página que le hayamos solicitado o en caso de no poder nos devolverá un error http
Cuando nosotros solicitamos un página desde nuestro navegador lo hacemos a otra computadora que está en otra parte y que se denomina servidor, el cual que está ejecutando un servicio que se llama genéricamente Servidor Web y es la que nos devuelve la página que estamos buscando.
Los servidores web actuales son muy similares al CERN httpd (HyperText Transfer Protocol daemon) que desarrolló Berners-Lee en un principio, obviamente se le han agregado funciones y han evolucionado notablemente sin embargo siguen los mismo principios básicos.
En definitiva, un servidor web funciona en base al modelo cliente-servidor del que tanto se habla en redes y desarrollo de software.
Servidor vs Servidor Web
Muchas veces hablamos de servidor y servidor web de forma indistinta aunque lo cierto es que son dos cosas diferentes. Este concepto es vital tenerlo claro pues si no generará confusión sobre lo que entendemos por funcionamiento de un servidor web.
Cuando hablamos de un servidor hablamos de la máquina física y muchos piensan un servidor es una supercomputadora , esto puede ser así aunque no necesariamente.
Si bien lo normal es que para servidor se utiliza un equipo especialmente diseñado para este propósito lo cierto es que cualquier computadora puede ser un servidor.
Cuando hablamos de un servidor web en realidad estamos hablando de un servicio web, es decir un software que se ejecuta en ese servidor físico o virtual y que despacha tráfico por el protocolo HTTP.
Lo llamemos de cualquiera de las dos maneras, siempre estaremos hablando un programa informático que se encarga de recibir solicitudes de clientes que solicitan páginas HTML u otro tipo de archivos como imágenes y entregarlos al usuario.
Estas solicitudes pueden devolver contenido de dos tipos: contenido estático o contenido dinámico.
El contenido estático es el contenido que es entregado sin procesar en alguna forma, es decir tal como está almacenado se envía al usuario que lo solicito, como por ejemplo una imagen.
El otro tipo de contenido es el llamado dinámico, esto significa que el servidor devuelve contenido que no existe como tal en el servidor sino que es generado en el momento, como por ejemplo la página de resultados de un buscador.
Cuando hacemos una búsqueda el servidor recibe la petición en lugar de devolver la página inmediatamente, primero debe ejecutar el archivo que generará los resultados y luego devolver el contenido al cliente. Este procesamiento no lo hace directamente el servicio web sino que se lo envía a otro servicio o lo hace mediante algún módulo destinado a este fin como pueden ser PHP o ASP
Tipos de petición HTTP
Entre las formas de entender cómo funciona un servidor algo vital es tener en cuenta el protocolo HTTP. En el protocolo HTTP se definieron varios tipos de métodos como las peticiones GET, POST, PUT, DELETE, PATCH entre algunos más.
De estos los tipos los mas usados son sin duda GET y POST, donde el primero se usa para solicitar alguna página, foto o fichero al servidor y el segundo tipo llamado POST se utiliza para enviar datos al servidor, como por ejemplo para enviar los datos de un formulario web.
¿Cómo funciona un Servidor Web?
Antes de comenzar a analizar y responder esta pregunta, primero tenemos que hacernos otra pregunta que nos llevará a descubrir cómo funciona un servidor web: ¿Como esta formada una petición web?
Una petición esta formada por la URL del recurso y el tipo de petición (GET/POST/etc) a su vez en el header de la petición se puede indicar la versión del protocolo HTTP a usar, que contenido acepta, que algoritmo compresión admite, seguridad SSL, además se pueden incluir datos de autentificación como usuario, passwords, tokens de autenticación o el formato en que se envían los datos entre muchas otras cosas.
Cuando se realiza una solicitud sin importar el tipo, esta consta de 4 pasos:
Resolución DNS
Cuando hacemos una abrimos una página web nosotros escribimos la dirección, como por ejemplo google.com, sin embargo para poder llegar a google.com se necesita saber la IP de Google, que no es otra cosa que una dirección numérica única que identifica de forma única al servidor.
Para poder obtener la IP se hace una consulta a un servidor DNS, esto el usuario no lo ve porque sucede internamente en nuestro sistema.
Una vez que nuestro sistema operativo resolvió la consulta DNS y sabe como encontrá el servidor, nuestro sistema operativo a través del protocolo TCP/IP negocia una comunicación con el servidor remoto que aloja la página que queremos ver.
Una vez establecida la comunicación, luego mediante el protocolo HTTPS y usando una petición tipo de petición GET se solicita la URL en cuestión.
En la solicitud tal como dijimos anteriormente viaja un header que contiene diferentes datos para establecer una comunicación, por ejemplo el contenido que acepta, por ejemplo si queremos abrir la página pero no queremos que se nos carguen las imágenes solo el html esto se especifica en el header. esto es útil para sistemas robot que recorren la web indexando páginas y donde las imágenes son irrelevantes.
El servidor web procesa la solicitud
En este paso el servidor web debe determinar primero a que sitio corresponde la petición (ya que en un mismo servidor pueden alojar varios dominios) y lo hace a través del header recibido observando la URL que se solicitó.
Una vez que sabe de que dominio se trata puede levantar la configuración personalizada del sitio como puede ser la versión de PHP a utilizar y levantar las reglas del archivo htaccess en caso de Apache o LiteSpeed o sus equivalentes en otros tipos de servidores web.
Un sitio puede no tener reglas definidas sin embargo en caso de tenerlas estas modifican el comportamiento del servidor y la forma de responder a las peticiones.
Gracias al archivo .htaccess puedes crear URL amigables para ayudar al SEO o simplemente hacer las URL mas sencillas, se pueden establecer políticas de seguridad, permisos de acceso o denegación a archivos, filtrados de IP, modificar las cabeceras de respuesta u otros valores de configuración, las opciones son sumamente diversas
A su vez en este punto el servidor debe determinar que se está solicitando, por ejemplo si se trata de una imagen o un archivo HTML el servidor lo leerá del disco SSD y lo enviará al cliente, en cambio si se trata de una página .php o .asp el servidor primero ejecutará el código de dicho script para obtener el contenido que devolverá, que puede ser HTML, un JSON, texto o incluso una imagen o un archivo, a esto es lo que se llama contenido dinámico debido a que no existe en el servidor como tal sino que es generado en el momento para ser mostrado.
El servidor responde la solicitud
Una vez que el servidor obtuvo el contenido o datos devolverá una cabecera de respuesta donde por ejemplo especifica el tipo de datos devuelto, en ella indicará si es HTML, un JSON, una imagen o archivo de audio, entre otros, esto facilita al navegador saber que tiene que hacer con ese fichero y cómo debe tratarlo posteriormente.
Cada respuesta del servidor va acompañado de un numero de identificación que indica que ocurrió, por ejemplo si en una petición GET obtenemos el código 200 quiere decir que esta todo correcto y sin errores.
Si por el contrario nos responde con un error 500 será un error interno del servidor, si vemos un error 403 es porque no tenemos acceso a donde queremos entrar, y si recibimos un error 404 es porque la URL no se encontró.
Hay códigos de respuesta que abarcan diferentes situaciones, puedes ver un listado de códigos aquí, son vitales para poder interpretar cómo funciona un servidor en determinadas peticiones que le enviamos.
Conclusión
Los servidores web son un pilar fundamental en la creación de la World Wide Web y en la internet tal como la conocemos.
Los servicios que utilizamos diariamente para leer noticias, ver videos, escuchar música y hacer nuestras compras on-line implican aunque no nos demos cuenta el uso de servidores web por doquier, por eso es podemos decir que en apenas una generación han cambiado la forma en que nos comunicamos, en que hacemos negocios y hasta la forma en que vemos televisión.
Ahora que ya conoces el funcionamiento de un servidor web, puedes elegir un plan de hosting en nuestros servidores web de alta potencia, con discos SSD y hardware Intel de primera, que harán que tus sitios web vuelen de rápido.