Servidor web

De Wikipedia
Saltar a navegación Saltar a la gueta
Ficha de softwareServidor web
First Web Server.jpg
Tipu funcionalidad de software (es) Traducir y tipu de software
Etiqueta de Stack Exchange Stack Exchange
Cambiar los datos en Wikidata

Un servidor web o servidor HTTP ye un programa informáticu que procesa una aplicación del llau del servidor, realizando conexones bidireccionales o unidireccionales y síncronas o asíncronas col veceru y xenerando o dexando una respuesta en cualquier llinguaxe o Aplicación del llau del veceru. El códigu recibíu pol veceru ye renderizado por un navegador web. Pa la tresmisión de toos estos datos suel utilizase dalgún protocolo. Xeneralmente úsase'l protocolu HTTP pa estes comunicaciones, perteneciente a la capa d'aplicación del modelu OSI. El términu tamién s'emplega pa referise al ordenador.

Arquiteutura[editar | editar la fonte]

Pidimientu GET[editar | editar la fonte]

Un servidor web opera por aciu el protocolu HTTP, de la capa d'aplicación del Modelu OSI. Al protocolu HTTP asígnase-y davezu'l puertu TCP 80. Los pidimientos al servidor suelen realizase por aciu HTTP utilizando'l métodu de pidimientu GET, nel que'l recursu solicítase al traviés de la url al servidor Web.
GET /index.html HTTP/1.1 HOST: www.host.com

Na barra d'URL d'un navegador cualesquier, el pidimientu anterior sería análoga a la siguiente direición Web:

www.host.com/index.html

Esquema d'un pidimientu GET[editar | editar la fonte]

Pidimientu Web[editar | editar la fonte]
Ver tamién: Navegador Web
Ver tamién: Telnet

El navegador, per mediu de la interfaz d'usuariu, dexa al usuariu realizar una o dellos pidimientos Web. La interfaz d'usuariu o redolada d'usuariu ye'l conxuntu d'elementos del navegador que dexen realizar el pidimientu de forma activa. Un pidimientu Web non solo puede ser realizada por aciu un navegador, sinón con cualquier ferramienta habilitada pa tal fin, como una consola de comandos Telnet.

Elementos de la redolada d'usuariu más comunes en navegador Web visuales:

Nome Descripción
Hipervínculo enllaz o link Ye una porción de conteníu Web, testu, imaxe y otros elementos, qu'enllaza con una direición Web. Al pulsiar un hipervínculo, el navegador xenera un pidimientu GET automática a la direición URL de dichu link.
Formulario Web Al realizar la unviada satisfactoria de los datos d'un formulariu, el navegador Web xenera un pidimientu GET o POST (comúnmente POST) automática al par qu'unvia los datos al servidor.
Barra de direiciones Toos el navegadores inclúin una barra de direiciones por aciu la cual puede aportase manualmente a cualquier direición URL, de cuenta que'l navegador va xenerar un pidimientu GET automática a dicha URL cada vegada que l'usuariu deseyar.
Script activu o pasivu Cualquier aplicación Javascript tien accesu al estáu del navegador, cómo puede modificar los datos que describen tal estáu, de forma pasiva (ensin mediu de la intervención del usuariu) o de forma activa (por aciu dalguna aición del usuariu).

===== 1.1 Socket a direición DNS produz una socket con un servidor dau en direición IP por aciu TCP. Polo xeneral les direiciones que'l navegador tien primeramente son direiciones DNS (direiciones alfanuméricas) que tendrá de convertir a direiciones numbériques.

1.2 Resolvimientu de DNS a IP[editar | editar la fonte]

Si la direición dada ye DNS y nun esiste una regla na base de datos DNS, el Host Resolver Request solicita al servidor DNS la o les direiciones IPs correspondientes. El navegador crea una nueva regla y almacena la direición IP xunto a la direición DNS na so base de datos de regles DNS.

1.3 Recuperación de reglar DNS[editar | editar la fonte]

Una vegada almacenada la regla, realízase un pidimientu a la base de datos DNS pa recuperar los valores de la regla.

===== 1.4 Socket a direición IP produz una socket cola direición IP por aciu TCP. La direición IP pue recuperase nel pasu anterior.

SOCKET 192.168.0.1

===== 1.5 Preparación de la pidimientu créase la pidimientu GET estableciendo la url ,un flag ,la priority del pidimientu y el method (implícitamente GET).

1.6 Apertura Caché[editar | editar la fonte]

Ábrese y/o se crea una entrada nel http cache.

===== 1.7 Efeutuación de la pidimientu realiza la pidimientu GET. Lléense les cabeceres HTTP de la http transaction y más tarde el cuerpu de la http transaction.

GET /index.html HTTP/1.1

1.8 Consulta en Caxé[editar | editar la fonte]

Consultar nel caxé de discu si esiste una entrada nel caxé acomuñada al recursu que se solicitó. Los valores son created (true o false) y key (la url del recursu).

1.9 Respuesta booleana de la esistencia del recursu solicitáu[editar | editar la fonte]

Si la entrada nun esiste (si'l valor de created ye false) escríbense los datos nel caxé de discu. Si non, lléese direutamente.

===== 2.0 Presentación visual del recursu conclúyese la operación y amuésase en pantalla (si ye precisu) la información.

Pidimientu GET pasiva[editar | editar la fonte]

Javascript dexa realizar cambeos nel estáu del navegador. L'estáu del navegador vien definíu pol array d'oxetos location del oxetu global Window. Referenciar a tal oxetu con window.location. En concretu window.location.href contién la direición actual del navegador Web.

Si una parte del script executa tal sentencia:

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

El navegador va faer tal pidimientu Web ensin que l'usuariu mediara en tal circunstancia o los sos efeutos. De la mesma va producise un nuevu pidimientu GET si altériase'l valor de window.location.search o window.location.protocol.

Procedimientu del navegador[editar | editar la fonte]

La xera del navegador Web ye crear el pidimientu a partir de los datos recoyíos na redolada d'usuariu d'elementos del mesmu, como enllaces, el valor del testu de la barra de busca, los metatags.

<a href="http://es.wikipedia.org">Entrar</a>

Al pulsiar nel enllaz, el navegador crea automáticamente el pidimientu GET y les cabeceres del pidimientu sobre la base de los metatags (cabeceres definíes), los cookies y cabeceres automátiques del navegador, pa depués unviales xunto al pidimientu al Servidor.

Pidimientu POST[editar | editar la fonte]

Ye'l segundu tipu de pidimientu HTTP más utilizáu. Los datos a unviar al servidor incluyir nel cuerpu del mesmu pidimientu coles cabeceres HTTP asignaes correspondientemente respectu al tipu de pidimientu. Xeneralmente acomúñase colos formulario web nos que los datos suelen ser cifraos pa unvialos de manera segura al servidor.

Por motivos de convención incluyir nel pidimientu la cabecera application/x-www-form-urlencoded, qu'indica'l formatu o codificación de los datos a unviar; esta ye variable->valor nel formatu: variable=valor separada cada par variable->valor por &. Esta cabecera, nos formularios HTML únviase automáticamente, pero n'otres teunoloxíes web tal como AJAX, si deseyar faer correchamente un pidimientu POST, ten de ser especificáu o instanciado l'oxetu: setRequestHeader("Content-type:application/x-www-form-urlencode"); ajax.send(data);

Si utilizara'l métodu GET los datos deberíen de ser añedíos a la URL, lo que los espondría a ser vistos de forma direuta.

Estructura d'un pidimientu POST[editar | editar la fonte]

Artículu principal: Cabeceres HTTP

Estructura típica d'un pidimientu POST

Amuesa

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; O; 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

ye-YE,ye;q=0.8

Accept-Charset

charset-accepted-string

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

Cookie

phpsessid-string

PHPSESSID=gm0ugf96iojuldio8i51o92716

Accept-Encoding

accept-encoding-string

gzip,deflate,sdch

Content

Content-string

&data=4&lang=es+ye

Composición d'un pidimientu POST[editar | editar la fonte]

Les cabeceres más comunes que s'unvien nun pidimientu POST:

  • Petition type: Especifica'l tipu de pidimientu HTTP. (Esta cabecera nun tien nome, únviase talo como)
  • Referer: Especifica la url dende la cual fíxose'l pidimientu POST.
  • Content-Length: Especifica'l llargor en bytes de los datos unviaos nel cuerpu del pidimientu.
  • Origin: Especifica la url principal del sitiu.[ensin referencies]
  • User-Agent:Especifica l'identificador del navegador Web dende'l cual fíxose'l pidimientu.
  • Content-Type: Especifica'l formatu o ACORIQUE de los datos unviaos nel cuerpu del pidimientu.
  • Accept: Especifica'l ACORIQUE que s'espera na respuesta.
  • Accept-Language: Especifica'l códigu del llinguaxe esperáu na respuesta.
  • Accept-Charset: Especifica la codificación que s'espera na respuesta.
  • Cookie: Especifica un identificador de sesión nel pidimientu deriváu d'un cookie.
  • Accept-Encoding: Especifica'l tipu de codificación (xeneralmente compresión) que s'espera de la respuesta. (Non toos el navegadores unvien esta cabecera)

Estructura d'una respuesta POST[editar | editar la fonte]

Artículu principal: Cabeceres HTTP
Estructura típica d'una respuesta POST Amuesa
HTTP version & state HTTP-version-state HTTP/1.1 200 OK
Date date-string Tue, 07 Jun 2011 05:52:31 GMT
Server server-string Apache/2.2.17 (Win32) mod_ssl/2.2.17...
Expires expire-date-string Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control Cache-control-string non-store, non-cache, must-revalidate...
Pragma pragma-string non-cache
Content-Length Content-length-int 297
Content-Type Content-type-string text/html
Keep-Alive Keep-alive-string timeout=5, max=98
Connection Connection-string Keep-Alive
X-Powered-By X-powered-by-string PHP/5.3.5

Codificación del mensaxe del cuerpu del pidimientu[editar | editar la fonte]

Los datos que s'unvien nel cuerpu del pidimientu POST tienen de tener dalgún formatu que dexe manipolialos nun futuru procesamientu. Por ello'l pidimientu tien de tener asignada la cabecera Content-Type que'l so valor va ser la codificación de los datos. D'esta miente el sistema va poder estremar ente variables aisllaes, datos binarios, testu planu, o cualesquier otru tipu de formatu. El formatu d'una cadena de datos denominar ACORIQUE y ye el valor que tendrá de ser incluyíu nesta cabecera.[1]

En HTML la cabecera Content-Type especifícase automáticamente y el so valor ye application/x-www-form-urlencoded, sicasí pueden especificase por estándar otros dos valores: multipart/form-data y text/plain utilizando l'atributu enctype del elementu 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 cualesquier otru valor ACORIQUE. El multipart/form-data utilizar pa unviar grandes cadenes binaries que suponen cualesquier otru tipu de documentu que nun sía testu planu, como imáxenes, videos o ejecutables. Pa dellos valores, dixebrar por comes.

El application/x-www-form-urlencoded codifica de forma automática los valores de tolos elementos del formulariu de la manera variable=valor, dixebraos por &. L'atributu name d'un input suel ser el nome de la variable y la so value el valor. Los espacios reemplazar por + y los calteres non alfanuméricos por $HH onde HH representa'l númberu hexadecimal del calter ASCII.

id=valor+de+la variable&tama%A4o=4

que representáu d'otra forma ye:

id: valor de la variable
tamañu: 4

Procedimientu del navegador[editar | editar la fonte]

El navegador arrexunta la información del formulariu pa crear el pidimientu y unviala. Les cabeceres unviar xunto al pidimientu POST, y arrexuntar sobre la base de los metatags definíos nel códigu, los automáticos del navegador y los Cookies. Ye'l navegador, tamién, el que codifica los datos si ye necesariu. [ensin referencies]

Funcionamientu[editar | editar la fonte]

Servidor

El Servidor web executar nun ordenador calteniéndose a la espera de pidimientos per parte d'un veceru (un navegador web) y respuende a estos pidimientos afechiscamente, por aciu una páxina web que se va esibir nel navegador o amosando'l respeutivu mensaxe si detectóse dalgún error. A manera d'exemplu, al teclear www.wikipedia.org nel nuesu navegador, ésti realiza un pidimientu HTTP al servidor de dicha direición. El servidor respuende al veceru unviando'l códigu HTML de la páxina; el veceru, una vegada recibíu'l códigu, interpretar y esibir en pantalla. Como vemos con esti exemplu, el veceru ye l'encargáu d'interpretar el códigu HTML, esto ye, d'amosar les fontes, los colores y la disposición de los testos y oxetos de la páxina; el servidor tan solo llindar a tresferir el códigu de la páxina ensin llevar a cabu nenguna interpretación de la mesma.

Amás de la tresferencia de códigu HTML, los Servidores web pueden apurrir aplicaciones web. Estes son porciones de códigu que s'executen cuando se realicen ciertos pidimientos o respuestes HTTP. Hai qu'estremar ente:

  • Aplicaciones nel llau del veceru: el vecera web ye l'encargáu d'executales na máquina del usuariu. Son les aplicaciones tipu Java "applets" o Javascript: el servidor apurre'l códigu de les aplicaciones al veceru y ésti, por aciu el navegador, executar. Ye necesariu, por tanto, que'l veceru disponga d'un navegador con capacidá pa executar aplicaciones (tamién llamaes scripts). Comúnmente, el navegadores dexen executar aplicaciones escrites en llinguaxe javascript y java, anque pueden añedir más llinguaxes por aciu l'usu de plugins.
  • Aplicaciones nel llau del servidor: el servidor web executa l'aplicación; ésta, una vegada executada, xenera ciertu códigu HTML; el servidor toma esti códigu recién creáu y unviar al veceru per mediu del protocolu HTTP.

Les aplicaciones de servidor munches vegaes suelen ser la meyor opción pa realizar aplicaciones web. La razón ye que, al executase ésta nel servidor y non na máquina del veceru, ésti nun precisa nenguna capacidá añedida, como sí asocede nel casu de querer executar aplicaciones javascript o java. Con éses cualquier veceru dotáu d'un navegador web básicu puede utilizar esti tipu d'aplicaciones.

El fechu de qu'HTTP y HTML tean íntimamente amestaos nun tien de dar llugar a confundir dambos términos. HTML ye un llinguaxe de marques y HTTP ye un "protocolu".

Aplicación del llau del Servidor[editar | editar la fonte]

Una aplicación del llau del servidor ye cualquier programa o conxuntu d'instrucciones diseñaes cola cuenta de qu'un Servidor Web procesar pa realizar dalguna aición. Les aplicaciones del llau del servidor tán escrites por aciu dalgún llinguaxe de programación, ente los que destaquen:

LlinguaxeFecha de primera versión estableSistema operativuÚltima versión estable
PHP1995Multiplataforma5.6.4
ASP1998Windows (Delles versiones)4.0
Perl1987Multiplataforma5.12.3
Python1991Multiplataforma3.2.0
Ruby1995Multiplataforma1.9.3-p125

El 75% de les aplicaciones del llau del servidor tán escrites en PHP, siguíu d'ASP y les demás opciones usaes de forma alternativa y bien casual.[2]

Procesamientu del llau del servidor[editar | editar la fonte]

Un servidor web tien la función de procesar los scripts del llau del servidor pa dar una salida en HTML y otros llinguaxes del llau del veceru al Navegador Web del veceru. La información a procesar va poder ser vencida pol veceru al script por aciu cualquier aplicación na redolada del Navegador. Pa ello pueden utilizase formulario web, enllaces colos valores implícitos na cadena o cualesquier otru métodu.

Rack con servidores

Procesamientu de PHP[editar | editar la fonte]

Artículu principal: PHP

En PHP esisten variables Globales que representen variables y datos de la conexones qu'establez el Servidor col veceru.

Métodu GET[editar | editar la fonte]

Contién toles variables que s'unvien al traviés del métodu HTTP GET, referénciense al traviés del Array unidimensional $_GET['variable']. Esta variable contién el datu unviáu por GET acomuñáu a tal variable, en casu de qu'esista.

Métodu POST[editar | editar la fonte]

Contién toles variables que s'unvien al traviés del métodu HTTP POST, referénciense al traviés del Array unidimensional $_POST['variable']. Esta variable contién el datu unviáu por POST acomuñáu a tal variable.

Sesiones[editar | editar la fonte]

Contién datos de sesión adquiríos por aciu un pidimientu GET, POST o la llectura d'una Cookie[ensin referencies]. Referénciase al traviés del Array unidimensional $_SESSION['variable'].Esta variable contién un datu de session.

Cookies[editar | editar la fonte]

Contién datos sobre toles cookies adquiríes nel pidimientu al server, apurríes pol navegador nel pidimientu HTTP. Referénciase al traviés del Array unidimensional $_COOKIES['variable']

Servidor[editar | editar la fonte]

Contién datos proporcionaos pol Servidor Web. Referénciase al traviés del Array unidimensional $_SERVER['variable']

Procesamientu[editar | editar la fonte]

1) Dau'l siguiente códigu PHP. <html>

if(!empty($_GET['ip']){
if($_GET['ip']=="yes"){
ip();
}}
function ip(){
if ($_SERVER['REMOTE_ADDR']=="192.168.0.1"){
echo "<b>La so direición web ye 192.168.0.1 </b>";
} else {
echo "<b>La so direición web nun ye 192.168.0.1 sinón ".$_SERVER['REMOTE_ADDR']."</b>";
}}

</html> Nel casu anterior, podría tomase por supuesta la decisión del usuariu utilizando un enllaz que'l so destino sía l'archivu que contenga'l Script anterior + la variable y el valor utilizando la siguiente sintaxis: archivu.php?var=val onde var ye'l nome d'una variable dada y val ye valor asignáu a la variable.

http://ruta/archivo.php?ip=yes

2) En casu afirmativu'l Script anterior xenera'l siguiente códigu html que ye unviáu darréu al navegador.

<b>La so direición web ye 192.168.0.1 </b>

3) El navegador interpreta'l códigu html y amosar similar a :

La so direición web ye 192.168.0.1

Servidor Web Local[editar | editar la fonte]

Un Servidor Web Local ye aquel Servidor Web que mora nuna rede llocal al equipu de referencia. El Servidor web Local pue tar instaláu en cualesquier de los equipos que formen parte d'una rede llocal. Ye por tanto obviu, que tolos Servidores Web, son locales a la rede llocal na que s'atopen, o a lo menos, locales al sistema nel que tán instalaos.

Cuando un servidor Web atópase instaláu nel mesmu equipu dende'l cual deseyar aportar puede utilizase la direición de Loopback, 127.0.0.1 en Ipv4 y ::1 en Ipv6. El puertu TCP 80 resálvase. Los archivos almacenar nun direutoriu determináu pola configuración, xeneralmente modificable.

Esisten numberoses aplicaciones que faciliten la instalación automática de servidores web Apache y aplicaciones adicionales como Mysql y PHP (ente otros), de forma conxunta, como XAMPP, JAMP o EasyPHP. Estes aplicaciones reciben el nome de LAMP cuando s'instalen en plataformes Linux, WAMP en sistemes Windows y MAMP en sistemes Apple Macintosh.

Software[editar | editar la fonte]

Dellos servidores web importantes son:

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

Ver tamién[editar | editar la fonte]

Referencies[editar | editar la fonte]

  1. «Form enctype».
  2. «1».

Enllaces esternos[editar | editar la fonte]