Está en la página 1de 9

Servidor web

Servidor web
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
Peticin GET
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 Peticin Web
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:
Nombre Hipervnculo enlace o link Formulario web Descripcin Es una porcin de contenido Web, texto, imagen y otros elementos, que enlaza con una direccin Web. Al pulsar un hipervnculo el 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 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 modo que el navegador generar una peticin GET automtica a dicha URL cada vez que el usuario lo desee. Cualquier aplicacin Javascript tiene acceso al estado del navegador, cmo puede modificar los datos que describen tal estado, de forma pasiva (sin medio de la intervencin del usuario) o de forma activa (mediante alguna accin del usuario).

Barra de direcciones

Script activo o pasivo

Servidor web 1.1 Socket a direccin DNS 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 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 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 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 Se crea la peticin GET estableciendo la url, un flag, la priority de la peticin y el method (implcitamente GET). 1.6 Apertura Cach Se abre y/o se crea una entrada en el http cache 1.7 Efectuacin de la peticin 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 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 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 Se concluye la operacin y se muestra en pantalla (si es preciso) la informacin. Peticin GET pasiva 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:

Servidor web 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 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
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-www-form-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("Content-type: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
Estructura tpica de una peticin POST Petition type Referer Content-Length Origin User-Agent Content-Type Accept POST url HTTP/1.1 http-url-referer contentlenght-int http-url-origin useragent-string content-type-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

mimetypes-accepted-string application/xml,application/xhtml+xml ... es-ES,es;q=0.8 ISO-8859-1,utf-8;q=0.7,*;q=0.3 PHPSESSID=gm0ugf96iojuldio8i51u92716 gzip,deflate,sdch &data=4&lang=es+es

Accept-Language language-accepted-string Accept-Charset Cookie charset-accepted-string phpsessid-string

Accept-Encoding accept-encoding-string Content Content-string

Servidor web Composicin de una peticin POST 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.[citarequerida] 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


Estructura tpica de una respuesta POST HTTP version & state HTTP-version-state Date Server Expires Cache-Control Pragma Content-Length Content-Type Keep-Alive Connection X-Powered-By date-string server-string expire-date-string Muestra HTTP/1.1 200 OK Tue, 07 Jun 2011 05:52:31 GMT Apache/2.2.17 (Win32) mod_ssl/2.2.17... Thu, 19 Nov 1981 08:52:00 GMT

Cache-control-string no-store, no-cache, must-revalidate... pragma-string Content-length-int Content-type-string Keep-alive-string Connection-string no-cache 297 text/html timeout=5, max=98 Keep-Alive

X-powered-by-string PHP/5.3.5

Codificacin del mensaje del cuerpo de la peticin 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

Servidor web

<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 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. [citarequerida]

Funcionamiento
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 [2] 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.

Servidor web 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


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 Fecha de primera versin estable Sistema operativo PHP 1995 Multiplataforma ltima versin estable 5.3.5

ASP.Net 1998 Perl Python Ruby 1987 1991 1995

Windows (Algunas versiones) 4.0 Multiplataforma Multiplataforma Multiplataforma 5.12.3 3.2.0 1.9.2-p180

El 75% de las aplicaciones del lado del servidor estn escritas en PHP, siendo ASP y las dems opciones usadas de forma alternativa y muy casual.[3]

Procesamiento del lado del servidor


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. Procesamiento de PHP En PHP existen variables Globales que representan variables y datos de la conexiones que establece el Servidor con el cliente. Mtodo GET 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.

Servidor

Servidor web Mtodo POST 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, en caso de que exista. Sesiones Contiene datos de sesin adquiridos mediante una peticin GET, POST o la lectura de una Cookie[citarequerida]. Se referencia a travs del Array unidimensional $_SESSION['variable'].Esta variable contiene un dato de session. Cookies 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 Contiene datos proporcionados por el Servidor Web. Se referencia a travs del Array unidimensional $_SERVER['variable'] Procesamiento 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. 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

Servidor Web Local


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.

Software
Algunos servidores web importantes son: Apache IIS Cherokee Tomcat Otros servidores, ms simples pero ms rpidos, son: lighttpd thttpd

Referencias
[1] Form enctype (http:/ / www. w3. org/ TR/ html4/ interact/ forms. html#h-17. 13. 4. 2). [2] http:/ / www. wikipedia. org [3] 1 (http:/ / w3techs. com/ technologies/ overview/ programming_language/ all).

Enlaces externos
World Wide Web Consortium (W3C) (http://www.w3c.es/)

Fuentes y contribuyentes del artculo

Fuentes y contribuyentes del artculo


Servidor web Fuente: http://es.wikipedia.org/w/index.php?oldid=53068618 Contribuyentes: 142857, Adryitan, Airunp, Alhassam, Alhen, Alvaro qc, AugustoRoccasalva, Caos, Carlospeo, Cesarth15, ColdWind, Comae, Ctrl Z, Diegusjaimes, Djrolando, Dodo, Edub, Edupedro, Elmonstrito, Emijrp, Er Komandante, FAR, Gabriel Acquistapace, Gacq, GermanX, Halfdrag, Hameryko, ILoveSugar, Isha, Jaido2012, JavierCantero, Jkbw, Jomra, Jorge c2010, Jose figueredo, Joseaperez, Jugones55, Leonpolanco, Limbo@MX, Linfocito B, Luismcl, Mad neg, MadriCR, MarcoAurelio, Matdrodes, Poc-oban, Queninosta, Qwertyytrewqqwerty, Raulmingardi, Rodrigouf, Rsg, Saloca, Savh, SirSlither, Superzerocool, TArea, Technopat, Tigerfenix, Tirithel, Tony Rotondas, Tuwebhost, Voise, 226 ediciones annimas

Fuentes de imagen, Licencias y contribuyentes


Archivo:Servidor005.JPG Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Servidor005.JPG Licencia: Creative Commons Attribution 2.0 Contribuyentes: Hector Jaimes

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/