x
1

Servidores 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. El término también se emplea para referirse al ordenador donde se ejecutan esas tareas. Y

Un servidor web opera mediante el protocolo HTTP, de la capa de aplicación del Modelo OSI. Al protocolo HTTP se le asigna habitualmente el puerto TCP 80. Las peticiones al servidor suelen realizarse mediante HTTP utilizando el método de petición GET, en el que el recurso se solicita a través de la URL al servidor web.
GET /index.html HTTP/1.1 HOST: www.host.com

En la barra de URL de un navegador cualquiera, la petición anterior sería análoga a la siguiente dirección web:

www.host.com/index.html

El navegador, por medio de la interfaz de usuario, permite al usuario realizar una o varias peticiones web. La interfaz de usuario o entorno de usuario es el conjunto de elementos del navegador que permiten realizar la petición de forma activa. Una petición web no solo puede ser realizada mediante un navegador, sino con cualquier herramienta habilitada para tal fin, como una consola de comandos Telnet.

Elementos del entorno de usuario más comunes en navegadores web visuales:

Se produce una socket con un servidor dado en dirección IP mediante TCP. Por lo general las direcciones que el navegador posee inicialmente son direcciones DNS (direcciones alfanuméricas) que deberá convertir a direcciones numéricas.

Si la dirección dada es DNS y no existe una regla en la base de datos DNS, el Host Resolver Request solicita al servidor DNS la o las direcciones IPs correspondientes. El navegador crea una nueva regla y almacena la dirección IP junto a la dirección DNS en su base de datos de reglas DNS.

Una vez almacenada la regla, se realiza una petición a la base de datos DNS para recuperar los valores de la regla.

Se produce una socket con la dirección IP mediante TCP. La dirección IP puede haberse recuperado en el paso anterior.

Se crea la petición GET estableciendo la url ,un flag ,la priority de la petición y el method (implícitamente GET).

Se abre y/o se crea una entrada en el http cache.

Se realiza la petición GET. Se leen las cabeceras HTTP de la http transaction y más tarde el cuerpo de la http transaction.

Se consulta en el caché de disco si existe una entrada en el caché asociada al recurso que se ha solicitado. Los valores son created (true o false) y key (la url del recurso).

Si la entrada no existe (si el valor de created es false) se escriben los datos en el caché de disco. Si no, se lee directamente.

Se concluye la operación y se muestra en pantalla (si es preciso) la información. Luego de igual forma, comprueba que esté correcta.

Javascript permite realizar modificaciones en el estado del navegador. El estado del navegador viene definido por el array de objetos location del objeto global Window. Se referencia a tal objeto con window.location. En concreto window.location.href contiene la dirección actual del navegador web.

Si una parte del script ejecuta tal sentencia:

window.location.href='http://wikipedia.org';

El navegador hará tal petición web sin que el usuario haya mediado en tal circunstancia o sus efectos. Del mismo modo se producirá una nueva petición GET si se altera el valor de window.location.search o window.location.protocol.

La tarea del navegador web es crear la petición a partir de los datos recogidos en el entorno de usuario de elementos del mismo, como enlaces, el valor del texto de la barra de búsqueda, los metatags.

Al pulsar en el enlace, el navegador crea automáticamente la petición GET y las cabeceras de la petición sobre la base de los metatags (cabeceras definidas), las cookies y cabeceras automáticas del navegador, para luego enviarlas junto a la petición al servidor.

Es el segundo tipo de petición HTTP más utilizado. Los datos a enviar al servidor se incluyen en el cuerpo de la misma petición con las cabeceras HTTP asignadas correspondientemente respecto al tipo de petición. Generalmente se asocia con los formularios web en los que los datos suelen ser cifrados para enviarlos de manera segura al servidor.

Por motivos de convención se incluye en la petición la cabecera application/x-www-form-urlencoded, que indica el formato o codificación de los datos a enviar; esta es variable->valor en el formato: variable=valor separada cada par variable->valor por &. Esta cabecera, en los formularios HTML se envía automáticamente, pero en otras tecnologías web tal como AJAX, si se desea hacer correctamente una petición POST, debe ser especificado o instanciado el objeto: setRequestHeader("Content-type:application/x-www-form-urlencode"); ajax.send(data);

Si se utilizase el método GET los datos deberían de ser añadidos a la URL, lo que los expondría a ser vistos de forma directa.

Estructura típica de una petición POST

Muestra

Petition type

POST url HTTP/1.1

POST comment.php HTTP/1.1

Referer

http-url-referer

index.php

Content-Length

contentlenght-int

63

Origin

http-url-origin

http://es.wikipedia.org

User-Agent

useragent-string

Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) ...

Content-Type

content-type-string

application/x-www-form-urlencoded

Accept

mimetypes-accepted-string

application/xml,application/xhtml+xml ...

Accept-Language

language-accepted-string

es-ES,es;q=0.8

Accept-Charset

charset-accepted-string

ISO-8859-1,utf-8;q=0.7,*;q=0.3

Cookie

phpsessid-string

PHPSESSID=gm0ugf96iojuldio8i51u92716

Accept-Encoding

accept-encoding-string

gzip,deflate,sdch

Content

Content-string

&data=4&lang=es+es

Las cabeceras más comunes que se envían en una petición POST:

Los datos que se envían en el cuerpo de la petición POST deben tener algún formato que permita manipularlos en un futuro procesamiento. Por ello la petición debe tener asignada la cabecera Content-Type cuyo valor será la codificación de los datos. De este modo el sistema podrá diferenciar entre variables aisladas, datos binarios, texto plano, o cualquier otro tipo de formato. El formato de una cadena de datos se denomina MIME y es el valor que deberá ser incluido en esta cabecera.[1]

En HTML la cabecera Content-Type se especifica automáticamente y su valor es application/x-www-form-urlencoded, no obstante pueden especificarse por estándar otros dos valores: multipart/form-data y text/plain utilizando el atributo enctype del elemento form de la siguiente manera

O cualquier otro valor MIME. El multipart/form-data se utiliza para enviar grandes cadenas binarias que suponen cualquier otro tipo de documento que no sea texto plano, como imágenes, vídeos o ejecutables. Para varios valores, separar por comas.

El application/x-www-form-urlencoded codifica de forma automática los valores de todos los elementos del formulario del modo variable=valor, separados por &. El atributo name de un input suele ser el nombre de la variable y su value el valor. Los espacios se reemplazan por + y los caracteres no alfanuméricos por $HH donde HH representa el número hexadecimal del carácter ASCII.

que representado de otra forma es:

El navegador recopila la información del formulario para crear la petición y enviarla. Las cabeceras las envía junto a la petición POST, y se recopilan sobre la base de los metatags definidos en el código, los automáticos del navegador y las cookies. Es el navegador, también, el que codifica los datos si es necesario. [cita requerida]

El servidor web se ejecuta en un ordenador manteniéndose a la espera de peticiones por parte de un cliente (un navegador web) y responde a estas peticiones adecuadamente, mediante una página web que se exhibirá en el navegador o mostrando el respectivo mensaje si se detectó algún error. A modo de ejemplo, al teclear www.wikipedia.org en nuestro navegador, este realiza una petición HTTP al servidor de dicha dirección. El servidor responde al cliente enviando el código HTML de la página; el cliente, una vez recibido el código, lo interpreta y lo exhibe en pantalla. Como vemos con este ejemplo, 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 tan sólo se limita a transferir el código de la página sin llevar a cabo ninguna interpretación de la misma.

Además de la transferencia de código HTML, los servidores web pueden entregar aplicaciones web. Estas son porciones de código que se ejecutan cuando se realizan ciertas peticiones o respuestas HTTP. Hay que distinguir entre:

Las aplicaciones de servidor muchas veces suelen ser la mejor opción para realizar aplicaciones web. La razón es que, al ejecutarse ésta en el servidor y no en la máquina del cliente, este no necesita ninguna capacidad añadida, como sí ocurre en el caso de querer ejecutar aplicaciones Javascript o Java. Así pues, cualquier cliente dotado de un navegador web básico puede utilizar este tipo de aplicaciones.

El hecho de que HTTP y HTML estén íntimamente ligados no debe dar lugar a confundir ambos términos. HTML es un lenguaje de marcas y HTTP es un "protocolo".

Una aplicación del lado del servidor es cualquier programa o conjunto de instrucciones diseñadas con la finalidad de que un servidor web las procese para realizar alguna acción. Las aplicaciones del lado del servidor están escritas mediante algún lenguaje de programación, entre los que destacan:

El 75% de las aplicaciones del lado del servidor están escritas en PHP, seguido de ASP y las demás opciones usadas de forma alternativa y muy casual.[2]

Un servidor web tiene la función de procesar los scripts del lado del servidor para dar una salida en HTML y otros lenguajes del lado del cliente al navegador web del cliente. La información a procesar podrá ser cedida por el cliente al script mediante cualquier aplicación en el entorno del navegador. Para ello pueden utilizarse formularios web, enlaces con los valores implícitos en la cadena o cualquier otro método.

En PHP existen variables globales que representan variables y datos de la conexiones que establece el servidor con el cliente.

Contiene todas las variables que se envían a través del método HTTP GET, se referencian a través del array unidimensional $_GET['variable']. Esta variable contiene el dato enviado por GET asociado a tal variable, en caso de que exista.

Contiene todas las variables que se envían a través del método HTTP POST, se referencian a través del array unidimensional $_POST['variable']. Esta variable contiene el dato enviado por POST asociado a tal variable.

Contiene datos de sesión adquiridos mediante una petición GET, POST o la lectura de una cookie.[cita requerida] Se referencia a través del array unidimensional $_SESSION['variable']. Esta variable contiene un dato de sesión.

Contiene datos sobre todas las cookies adquiridas en la petición al servidor, proporcionadas por el navegador en la petición HTTP. Se referencia a través del array unidimensional $_COOKIES['variable'].

Contiene datos proporcionados por el servidor web. Se referencia a través del array unidimensional $_SERVER['variable'].

1) Dado el siguiente código PHP:

En el caso anterior, podría tomarse por supuesta la decisión del usuario utilizando un enlace cuyo destino sea el archivo que contenga el script anterior + la variable y el valor utilizando la siguiente sintaxis: archivo.php?var=val donde var es el nombre de una variable dada y val es valor asignado a la variable.

2) En caso afirmativo, el script anterior genera el siguiente código HTML que es enviado posteriormente al navegador:

3) El navegador interpreta el código HTML (PHP Siempre devuelve HTML al navegador) y lo muestra similar a:

Su dirección web es 192.168.0.1

Un servidor web local es aquel servidor web que reside en una red local al equipo de referencia. El servidor web local puede estar instalado en cualquiera de los equipos que forman parte de una red local. Es por tanto obvio, que todos los servidores web, son locales a la red local en la que se encuentran, o como mínimo, locales al sistema en el que están instalados.

Cuando un servidor web se encuentra instalado en el mismo equipo desde el cual se desea acceder puede utilizarse la dirección de Loopback, 127.0.0.1 en Ipv4 y ::1 en Ipv6. El puerto TCP 80 se obvia. Los archivos se almacenan en un directorio determinado por la configuración, generalmente modificable.

Existen numerosas aplicaciones que facilitan la instalación automática de servidores web Apache y aplicaciones adicionales como Mysql y PHP (entre otros), de forma conjunta, como XAMPP, JAMP o EasyPHP. Estas aplicaciones reciben el nombre de LAMP cuando se instalan en plataformas Linux, WAMP en sistemas Windows y MAMP en sistemas Apple Macintosh.

Algunos servidores web importantes son:

Otros servidores, más simples pero más rápidos, son:



Escribe un comentario o lo que quieras sobre Servidores web (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!