Вы находитесь на странице: 1из 11

Servidor web

De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda Un servidor web o servidor HTTP es un programa informtico que procesa una aplicacin del lado del servidor realizando conexiones bidireccionales y/o unidireccionales y sncronas o asncronas con el cliente generando o cediendo una respuesta en cualquier lenguaje o Aplicacin del lado del cliente. El cdigo recibido por el cliente suele ser compilado y ejecutado por un navegador web. Para la transmisin de todos estos datos suele utilizarse algn protocolo. Generalmente se utiliza el protocolo HTTP para estas comunicaciones, perteneciente a la capa de aplicacin del modelo OSI. El trmino tambin se emplea para referirse al ordenador que ejecuta el programa.

Arquitectura de distribucin de los servidores de la Fundacin Wikimedia

ndice
[ocultar]

1 Arquitectura o 1.1 Peticin GET 1.1.1 Esquema de una peticin GET 1.1.1.1 Peticin Web 1.1.1.2 1.1 Socket a direccin DNS 1.1.1.3 1.2 Resolucin de DNS a IP 1.1.1.4 1.3 Recuperacin de la regla DNS 1.1.1.5 1.4 Socket a direccin IP 1.1.1.6 1.5 Preparacin de la peticin 1.1.1.7 1.6 Apertura Cach 1.1.1.8 1.7 Efectuacin de la peticin 1.1.1.9 1.8 Consulta en Cach 1.1.1.10 1.9 Retribucin boleana existencialista del recurso solicitado 1.1.1.11 2.0 Presentacin visual del recurso

1.1.2 Peticin GET pasiva 1.1.3 Procedimiento del navegador o 1.2 Peticin POST 1.2.1 Estructura de una peticin POST 1.2.2 Composicin de una peticin POST o 1.3 Estructura de una respuesta POST 1.3.1 Codificacin del mensaje del cuerpo de la peticin 1.3.2 Procedimiento del navegador 2 Funcionamiento 3 Aplicacin del lado del Servidor o 3.1 Procesamiento del lado del servidor 3.1.1 Procesamiento de PHP 3.1.1.1 Mtodo GET 3.1.1.2 Mtodo POST 3.1.1.3 Sesiones 3.1.1.4 Cookies 3.1.1.5 Servidor 3.1.1.6 Procesamiento 4 Servidor Web Local 5 Software 6 Vase tambin 7 Referencias 8 Enlaces externos

Arquitectura[editar editar cdigo]


Peticin GET[editar editar cdigo]
Un servidor web opera mediante el protocolo HTTP, de la capa de aplicacin del Modelo OSI. Al protocolo HTTP se le asigna habitualmente el puerto TCP 80. Las peticiones al servidor suelen realizarse mediante HTTP utilizando el mtodo de peticin GET en el que el recurso se solicita a travs 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 peticin anterior sera anloga a la siguiente direccin Web:
www.host.com/index.html

Esquema de una peticin GET[editar editar cdigo]


Peticin Web[editar editar cdigo]

Vase tambin: Navegador Web. Vase tambin: Telnet.

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 peticin de forma activa. Una peticin Web no

slo 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 ms comunes en navegadores Web visuales: Descripcin Es una porcin de contenido Web, texto, imagen y otros elementos, que enlaza con una direccin Web. Al pulsar un hipervnculo el Hipervnculo enlace o link navegador genera una peticin GET automtica a la direccin URL de dicho link. Al realizar el envo satisfactorio de los datos de un formulario, el Formulario web navegador Web genera una peticin GET o POST (comnmente POST) automtica a la par que enva los datos al servidor. Todos los navegadores incluyen una barra de direcciones mediante la cual puede accederse manualmente a cualquier direccin URL, de Barra de modo que el navegador generar una peticin GET automtica a dicha direcciones URL cada vez que el usuario lo desee. Cualquier aplicacin Javascript tiene acceso al estado del navegador, Script activo o cmo puede modificar los datos que describen tal estado, de forma pasiva (sin medio de la intervencin del usuario) o de forma activa pasivo (mediante alguna accin del usuario).
1.1 Socket a direccin DNS[editar editar cdigo]

Nombre

Se produce una socket con un servidor dado en direccin IP mediante TCP. Por lo general las direcciones que el navegador posee inicialmente son direcciones DNS (direcciones alfanumricas) que deber convertir a direcciones numricas.
1.2 Resolucin de DNS a IP[editar editar cdigo]

Si la direccin 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 direccin IP junto a la direccin DNS en su base de datos de reglas DNS.
1.3 Recuperacin de la regla DNS[editar editar cdigo]

Una vez almacenada la regla se realiza una peticin a la base de datos DNS para recuperar los valores de la regla.
1.4 Socket a direccin IP[editar editar cdigo]

Se produce una socket con la direccin IP mediante TCP. La direccin IP puede haberse recuperado en el paso anterior.
SOCKET 192.168.0.1
1.5 Preparacin de la peticin[editar editar cdigo]

Se crea la peticin GET estableciendo la url, un flag, la priority de la peticin y el method (implcitamente GET).
1.6 Apertura Cach[editar editar cdigo]

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


1.7 Efectuacin de la peticin[editar editar cdigo]

Se realiza la peticin GET. Se leen las cabeceras HTTP de la http transaction y ms tarde el cuerpo de la http transaction.
GET /index.html HTTP/1.1
1.8 Consulta en Cach[editar editar cdigo]

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).
1.9 Retribucin boleana existencialista del recurso solicitado[editar editar cdigo]

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.
2.0 Presentacin visual del recurso[editar editar cdigo]

Se concluye la operacin y se muestra en pantalla (si es preciso) la informacin. Peticin GET pasiva[editar editar cdigo] 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 direccin actual del navegador Web. Si una parte del script ejecuta tal sentencia:
window.location.href='http://wikipedia.org';

El navegador har tal peticin Web sin que el usuario haya mediado en tal circunstancia o sus efectos. Del mismo modo se producir una nueva peticin GET si se altera el valor de window.location.search o window.location.protocol. Procedimiento del navegador[editar editar cdigo] La tarea del navegador Web es crear la peticin 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 bsqueda, los metatags.
<a href="http://es.wikipedia.org">Entrar</a>

Al pulsar en el enlace, el navegador crea automticamente la peticin GET y las cabeceras de la peticin en base a los metatags (cabeceras definidas), los cookies y cabeceras automticas del navegador, para luego enviarlas junto a la peticin al Servidor.

Peticin POST[editar editar cdigo]


Es el segundo tipo de peticin HTTP ms utilizado. Los datos a enviar al servidor se incluyen en el cuerpo de la misma peticin con las cabeceras HTTP asignadas correspondientemente respecto al tipo de peticin. Generalmente se asocia con los formularios web en el que los datos suelen ser cifrados para enviarlos de manera segura al servidor. Por motivos de convencin se incluye en la peticin la cabecera application/x-wwwform-urlencoded que indica el formato o codificacin 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 enva automticamente, pero en otras tecnologas web tal como AJAX, si se desea hacer correctamente una peticin POST debe ser especificado o instanciado el objeto: setRequestHeader("Contenttype:application/x-www-form-urlencode"); ajax.send(data);

Si se utilizase el mtodo GET los datos deberan de ser aadidos a la URL, lo que los expondra a ser vistos de forma directa. Estructura de una peticin POST[editar editar cdigo]
Artculo principal: Cabeceras HTTP.

Estructura tpica de una peticin POST Petition POST url HTTP/1.1 type http-url-referer Referer Contentcontentlenght-int Length http-url-origin Origin User-Agent useragent-string ContentType Accept AcceptLanguage AcceptCharset Cookie AcceptEncoding
content-typestring mimetypesaccepted-string languageaccepted-string

Muestra
POST comment.php HTTP/1.1 index.php 63 http://es.wikipedia.org Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) ... application/x-www-form-urlencoded application/xml,application/xhtml+xml ... es-ES,es;q=0.8

charset-acceptedISO-8859-1,utf-8;q=0.7,*;q=0.3 string phpsessid-string accept-encodingstring PHPSESSID=gm0ugf96iojuldio8i51u92716 gzip,deflate,sdch

Content

Content-string

&data=4&lang=es+es

Composicin de una peticin POST[editar editar cdigo] Las cabeceras ms comunes que se envan en una peticin POST:

Petition type: Especifica el tipo de peticin HTTP. (Esta cabecera no tiene nombre, se enva tal cual) Referer: Especifica la url desde la cual se hizo la peticin POST. Content-Length: Especifica la longitud en bytes de los datos enviados en el cuerpo de la peticin. Origin: Especifica la url principal del sitio.[cita requerida] User-Agent:Especifica el identificador del navegador Web desde el cual se hizo la peticin. Content-Type: Especifica el formato o MIME de los datos enviados en el cuerpo de la peticin. Accept: Especifica el MIME que se espera en la respuesta. Accept-Language: Especifica el cdigo del lenguaje esperado en la respuesta. Accept-Charset: Especifica la codificacin que se espera en la respuesta. Cookie: Especifica un identificador de sesin en la peticin derivado de un cookie. Accept-Encoding: Especifica el tipo de codificacin (generalmente compresin) que se espera de la respuesta. (No todos los navegadores envan esta cabecera)

Estructura de una respuesta POST[editar editar cdigo]


Artculo principal: Cabeceras HTTP.

Estructura tpica de una respuesta POST Muestra HTTP version & state HTTP-version-state HTTP/1.1 200 OK date-string Tue, 07 Jun 2011 05:52:31 GMT Date server-string Apache/2.2.17 (Win32) mod_ssl/2.2.17... Server expire-date-string Thu, 19 Nov 1981 08:52:00 GMT Expires Cache-control-string no-store, no-cache, must-revalidate... Cache-Control pragma-string no-cache Pragma Content-length-int 297 Content-Length Content-type-string text/html Content-Type Keep-alive-string timeout=5, max=98 Keep-Alive Connection-string Keep-Alive Connection X-powered-by-string PHP/5.3.5 X-Powered-By Codificacin del mensaje del cuerpo de la peticin[editar editar cdigo] Los datos que se envan en el cuerpo de la peticin POST deben tener algn formato que permita manipularlos en un futuro procesamiento. Por ello la peticin debe tener asignada la cabecera Content-Type cuyo valor ser la codificacin 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 automticamente y su valor es application/x-www-form-urlencoded, no obstante pueden especificarse por estndar otros dos valores: multipart/form-data y text/plain utilizando el atributo enctype del elemento form de la siguiente manera
<form enctype="multipart/form-data">...</form> <form enctype="text/plain">...</form> <form enctype="application/x-www-form-urlencoded">...</form>

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 imgenes, vdeos o ejecutables. Para varios valores, separar por comas. El application/x-www-form-urlencoded codifica de forma automtica 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 alfanumricos por $HH donde HH representa el nmero hexadecimal del carcter ASCII. id=valor+de+la+variable&tama%A4o=4 que representado de otra forma es: id: valor de la variable tamao: 4 Procedimiento del navegador[editar editar cdigo] El navegador recopila la informacin del formulario para crear la peticin y enviarla. Las cabeceras las enva junto a la peticin POST, y se recopilan en base a los metatags definidos en el cdigo, los automticos del navegador y los Cookies. Es el navegador, tambin, el que codifica los datos si es necesario. [cita requerida]

Funcionamiento[editar editar cdigo]

Servidor

El Servidor web se ejecuta en un ordenador mantenindose a la espera de peticiones por parte de un cliente (un navegador web) y que responde a estas peticiones adecuadamente, mediante una pgina web que se exhibir en el navegador o mostrando el respectivo mensaje si se detect algn error. A modo de ejemplo, al teclear www.wikipedia.org en nuestro navegador, ste realiza una peticin HTTP al servidor de dicha direccin. El servidor responde al cliente enviando el cdigo HTML de la pgina; el cliente, una vez recibido el cdigo, lo interpreta y lo exhibe en pantalla. Como vemos con este ejemplo, el cliente es el encargado de interpretar el cdigo HTML, es decir, de mostrar las fuentes, los colores y la disposicin de los textos y objetos de la pgina; el servidor tan slo se limita a transferir el cdigo de la pgina sin llevar a cabo ninguna interpretacin de la misma. Adems de la transferencia de cdigo HTML, los Servidores web pueden entregar aplicaciones web. stas son porciones de cdigo que se ejecutan cuando se realizan ciertas peticiones o respuestas HTTP. Hay que distinguir entre:

Aplicaciones en el lado del cliente: el cliente web es el encargado de ejecutarlas en la mquina del usuario. Son las aplicaciones tipo Java "applets" o Javascript: el servidor proporciona el cdigo de las aplicaciones al cliente y ste, mediante el navegador, las ejecuta. Es necesario, por tanto, que el cliente disponga de un navegador con capacidad para ejecutar aplicaciones (tambin llamadas scripts). Comnmente, los navegadores permiten ejecutar aplicaciones escritas en lenguaje javascript y java, aunque pueden aadirse ms lenguajes mediante el uso de plugins. Aplicaciones en el lado del servidor: el servidor web ejecuta la aplicacin; sta, una vez ejecutada, genera cierto cdigo HTML; el servidor toma este cdigo recin creado y lo enva al cliente por medio del protocolo HTTP.

Las aplicaciones de servidor muchas veces suelen ser la mejor opcin para realizar aplicaciones web. La razn es que, al ejecutarse sta en el servidor y no en la mquina del cliente, ste no necesita ninguna capacidad aadida, como s ocurre en el caso de querer ejecutar aplicaciones javascript o java. As pues, cualquier cliente dotado de un navegador web bsico puede utilizar este tipo de aplicaciones. El hecho de que HTTP y HTML estn ntimamente ligados no debe dar lugar a confundir ambos trminos. HTML es un lenguaje de marcas y HTTP es un "protocolo".

Aplicacin del lado del Servidor[editar editar cdigo]


Una aplicacin del lado del servidor es cualquier programa o conjunto de instrucciones diseadas con la finalidad de que un Servidor Web las procese para realizar alguna accin. Las aplicaciones del lado del servidor estn escritas mediante algn lenguaje de programacin, entre los que destacan: Lenguaje PHP Fecha de primera versin estable 1995 Sistema operativo Multiplataforma Windows (Algunas versiones) ltima versin estable 5.3.5 4.0

ASP.Net 1998

Perl Python Ruby

1987 1991 1995

Multiplataforma Multiplataforma Multiplataforma

5.12.3 3.2.0 1.9.3-p125

El 75% de las aplicaciones del lado del servidor estn escritas en PHP, seguido de ASP y las dems opciones usadas de forma alternativa y muy casual.2 En 2009 Node.js fue creado por Ryan Dahl, abriendo pblicamente la oportunidad de usar javascript del lado del servidor. Evento que revoluciona la web, y da inicio a una nueva era del desarrollo en internet. Node.js, dado a sus usuarios, programadores web de todo el mundo, est creciendo como la mejor opcin para desarrollo de aplicaciones del lado del servidor, desplazando lenguajes tradicionales en esta tarea. Node.js trabaja sobre el rpido motor V8 que usa Google Chrome para la interpretacin de javascript. 3

Procesamiento del lado del servidor[editar editar cdigo]


Un servidor web tiene la funcin 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 informacin a procesar podr ser cedida por el cliente al script mediante cualquier aplicacin en el entorno del Navegador. Para ello pueden utilizarse formularios web, enlaces con los valores implcitos en la cadena o cualquier otro mtodo.

Rack con servidores Procesamiento de PHP[editar editar cdigo]


Artculo principal: PHP.

En PHP existen variables Globales que representan variables y datos de la conexiones que establece el Servidor con el cliente.
Mtodo GET[editar editar cdigo]

Contiene todas las variables que se envan a travs del mtodo HTTP GET, se referencian a travs del Array unidimensional $_GET['variable']. Esta variable contiene el dato enviado por GET asociado a tal variable, en caso de que exista.
Mtodo POST[editar editar cdigo]

Contiene todas las variables que se envan a travs del mtodo HTTP POST, se referencian a travs del Array unidimensional $_POST['variable']. Esta variable contiene el dato enviado por POST asociado a tal variable.
Sesiones[editar editar cdigo]

Contiene datos de sesin adquiridos mediante una peticin GET, POST o la lectura de una Cookie[cita requerida]. Se referencia a travs del Array unidimensional $_SESSION['variable'].Esta variable contiene un dato de session.
Cookies[editar editar cdigo]

Contiene datos sobre todas las cookies adquiridas en la peticin al server, proporcionadas por el navegador en la peticin HTTP. Se referencia a travs del Array unidimensional $_COOKIES['variable']
Servidor[editar editar cdigo]

Contiene datos proporcionados por el Servidor Web. Se referencia a travs del Array unidimensional $_SERVER['variable']
Procesamiento[editar editar cdigo]

1) Dado el siguiente cdigo PHP.


if(!empty($_GET['ip']){ if($_GET['ip']=="yes"){ ip(); }} function ip(){ if ($_SERVER['REMOTE_ADDR']=="192.168.0.1"){ echo "<b>Su direccin web es 192.168.0.1 </b>"; } else { echo "<b>Su direccin web no es 192.168.0.1 sino ".$_SERVER['REMOTE_ADDR']."</b>"; }}

En el caso anterior, podra tomarse por supuesta la decisin 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.
http://ruta/archivo.php?ip=yes

2) En caso afirmativo el Script anterior genera el siguiente cdigo html que es enviado posteriormente al navegador.
<b>Su direccin web es 192.168.0.1 </b>

3) El navegador interpreta el cdigo html y lo muestra similar a : Su direccin web es 192.168.0.1

Servidor Web Local[editar editar cdigo]


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 mnimo, locales al sistema en el que estn instalados. Cuando un servidor Web se encuentra instalado en el mismo equipo desde el cual se desea acceder puede utilizarse la direccin 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 configuracin, generalmente modificable. Existen numerosas aplicaciones que facilitan la instalacin automtica 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.

Вам также может понравиться