jueves, 21 de febrero de 2013

Servidores Web

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 y undireccionales  y sincronas o asíncronas con el cliente generando o cediendo una respuesta en cualquier lenguaje o aplicación del lado del cliente.El código recibido por el cliente suele ser complicado y ejecutado por un navegador web para la transmisión de todos estos datos suele utilizarse algún protocolo. Generalmente se utiliza el protocolo HTTP para estas  comunicaciones , perteneciente a la capa de aplicación del modelo OSI. El termino también se emplea para referirse al ordenador que ejecuta el programa.





ARQUITECTURA


Socket a dirección DNS

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.

Resoluciones de DNS a IP

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.


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


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




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


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


Efectuación de la petición 

Se realiza la petición GET. Se leen las cabeceras HTTP de http transaction y mas tarde el cuerpo de la http transaction.
GET/index.htmlHTTP/1.1he de disco


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


Presentación visual del recurso
Se concluye la operación y se muestra en pantalla (si es preciso) la información.


Peticion Get pasiva

Javascipt 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 direccion actual del navegador Web. Si una parte del script ejecutatal sentencia
window.location.href='http://wikipedia.org' ;
El navegador hará tal petición Web sin que el usuario haya mediado en tal circunferencia o sus efectos. Del mismo modo se producirá una nueva petición Get si se altera el valor de window.location.search 

Petición Post

Es el segundo tipo de petición HTTP mas 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 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->valoren 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) Composición de una petición POST:
  • Referer: Especifica la url desde la cual se hizo la petición POST.
  • Content-Length: Especifica la longitud en bytes de los datos enviados en el cuerpo de la petición.
  • Origin: Especifica la url principal del sitio.[
  • User-Agent: Especifica el identificador del navegador Web desde el cual se hizo la petición.
  • Content-Type: Especifica el formato o MIME de los datos enviados en el cuerpo de la petición.
  • Accept: Especifica el MIME que se espera en la respuesta.
  • Accept-Language: Especifica el código del lenguaje esperado en la respuesta.
  • Accept-Charset: Especifica la codificación que se espera en la respuesta.
  • Cookie: Especifica un identificador de sesión en la petición derivado de un cookie.
  • Accept-Encoding: Especifica el tipo de codificación (generalmente compresión) que se espera de la respuesta. (No todos los navegadores envían esta cabecera).

Estructura de una Petición POST
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


Procesamiento de PHP
En PHP existen variables Globales que representan variables y datos de la conexiones que establece el Servidor con el cliente


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


Método POST 
Contiene todas las variables que se envían a través del método HTTP POST, se referencia a través del Array undimensional$_POST [`variable´]. Esta variable contiene el dato enviado por POST asociado a tal variable.


Sesiones
Contiene datos de sesión adquiridos mediante una petición GET, POST o la lectura de una Cookie se referencia a través del Array undimensional$_SESSION[`variable´]. Esta variable contiene el dato session.


Cookies
Contiene datos sobre todas las cookies adquiridas en la petición al server, proporcionales por el navegador en la petición HTTP se referencia a través del Array undimensional$_COOKIES[`variable´]


Servidor
Contiene datos proporcionales por el servidor Web.Sreferencia a través del Array undimensional$_SERVER[`variable´]

Como crear un servidor Web.





Ver mas información en :
REFERENCIA http://es.wikipedia.org/wiki/Servidor_web



No hay comentarios:

Publicar un comentario