servidores web o http

15
SERVIDORES WEB O HTTP PRESENTADO POR: JESÚS ADOLFO BALTAN RAMÍREZ UNIVERSIDAD DEL VALLE SEDE BUGA VI SEMESTRE DE TECNOLOGÍA EN SISTEMAS DE INFORMACIÓN APLICACIONES EN LA WEB Y REDES INALÁMBRICAS. GUADALAJARA DE BUGA SEPTIEMBRE 01 DEL 2013

Upload: jesus-baltan-ramirez

Post on 05-Dec-2014

386 views

Category:

Technology


0 download

DESCRIPTION

Una breve descripción sobre los servidores web o http

TRANSCRIPT

Page 1: Servidores web o http

SERVIDORES WEB O HTTP

PRESENTADO POR:

JESÚS ADOLFO BALTAN RAMÍREZ

UNIVERSIDAD DEL VALLE

SEDE BUGA

VI SEMESTRE DE TECNOLOGÍA EN SISTEMAS DE INFORMACIÓN

APLICACIONES EN LA WEB Y REDES INALÁMBRICAS.

GUADALAJARA DE BUGA

SEPTIEMBRE 01 DEL 2013

Page 2: Servidores web o http

1

INIDICE

Pág.

1. Definición de que es un servidor 2

2. Modelo Cliente-Servidor. 2

3. ¿Qué es un servidor web o http? 4

4. ¿Cómo funciona el servidor web? 5

5. Tipos de peticiones de los servidores web. 9

5.1. Petición de tipo GET. 9

5.2. Petición de tipo POST. 10

6. Aplicación del lado del servidor. 12

6.1. Procesamiento del lado del servidor. 12

7. Servidor web local. 12

8. Conclusiones. 13

9. Referencias 14

Page 3: Servidores web o http

2

1. ¿Qué es un servidor?

Desde el punto de vista de hardware un servidor es un equipo especialmente

diseñado para almacenar grandes cantidades de información y atender múltiples

usuarios a los cuales son llamados clientes, los cuales estos realizan múltiples

peticiones y este responder a esta petición, son equipos muy potentes los cuales si

los comparamos con equipo domestico este queda por muy debajo en cuanto sus

prestaciones, dado a que el equipo domestico no son diseñados para este tipo de

tareas, aunque hoy en día muchas aplicaciones convierten estos equipos en

servidores, pero con las desventaja que no rendirán lo mismo como si fuese un

servidor real.

Estos equipos son parte de diferentes redes de quipos interconectados como la

rede LAN, estos equipos pueden pertenecer a una red de nodos de diferentes tipos

de servidores intercambiando información para ofrecer al cliente o usuario lo que

él requiera.

Desde el punto de vista del software un servidor es tipo de programa que ejecuta

tareas en nombre del usuario y el cual están en beneficio del cliente (usuario), este

software está especialmente diseñado para que equipo sea capaz de atender

múltiples usuarios y ofrecerle todos los servicios que este software ofrece. Estos

permiten al usuario almacenar información para que este pueda accederla de

forma remota, además de también de tener acceso a esta.

2. Modelo Cliente-Servidor

Es un modelo de aplicaciones donde las diferentes tareas se reparten entre los

proveedores de servicios y datos que son los servidores y unos demandantes que

son los clientes.

En esta arquitectura el cliente hace una petición, la cual es enviada en la red donde

llega al servidor que está especificado en dicha petición, el servidor procesa esa

petición y una vez procesada envía una respuesta de regreso al cliente.

Page 4: Servidores web o http

3

Figura 1.1 – es quema del modelo cliente servidor

En este modelo la capacidad de procesamiento está repartida entre los clientes y

servidores aunque la mayor capacidad de procesamiento recae hoy en día en los

servidores los cuales debe proveer servicios no a uno si no a muchos usuarios a la

vez, la mayor característica a nivel organizativo es la centralización de la

información y la separación de responsabilidades haciendo mucho más fácil el

diseño de un sistema de información.

La separación entre el cliente y servidor es del tipo lógico (software) donde no el

servidor no necesariamente necesita ejecutarse en un solo servidor, este puede

ejecutarse en uno o más servidores.

Hablamos de esta parte del modelo cliente servidor para profundizar un poco más

el tema y para que sea más entendible la parte sobre los servidores web o http, ya

que esto se basa en dicho modelo, en la cual el servidor como ya se sabe será el

servidor web o http y el cliente seria en nuestra maquina aunque precisamente

hablando de la parte física, en cuanto a nivel lógico es decir el software el cliente

será en muchos casos nuestro navegador web, en la cual con el navegamos y sin

darnos cuenta hace un proceso donde enviaremos muchas peticiones donde irán a

parar a muchos servidores a nivel mundial.

Page 5: Servidores web o http

4

3. ¿Qué es un servidor web?

Es un software que procesa la aplicación del lado del servidor es decir, es el

servidor quien procesa dicha información, el cual realiza conexiones bidireccionales

o unidireccionales de forma sincrónica o asincrónica, de un cliente generado o

concebido dándole una respuesta en cualquier lenguaje de programación o una

aplicación cliente como por ejemplo nuestros browsers (IE, Chrome Firefox entre

otros), el cual es el encargado de compilar el código de respuesta enviado por el

servidor.

Para la transmisión de datos usa unos protocolos como el HTTP que es el más

usado por esta clase de servidor, dicha comunicación cumple estrictamente con el

modelo de capas del modelo OSI, para ser preciso un servidor web es manejado

por la capa de aplicación del modelo OSI

Figura 2.1 – gráficamente podemos describir la interacción entre un servidor web y un equipo

cliente el cual accede a un dicho recurso que está en ese servidor

Page 6: Servidores web o http

5

4. ¿Cómo funciona el servidor web?

Cuando el usuario (cliente) teclea una URL y le da en ir, el navegador o browser (en

inglés), lo que hace es analizar dicha dirección, capturando la parte http:// y la que

sigue la procesa como una dirección de dominio o nombre de dominio de servicio

DSN (Domain Service Name) una vez obtenida la dirección IP de dicho nombre

DSN, lo que hace después es establecer una conexión TCP con el puerto 80 al

servidor web, si después de la dirección hay una diagonal (/) el navegador envía lo

que le sigue a esta diagonal y es interpretado como la dirección de una página o

archivo en específico en el servidor. Luego este le envía una respuesta para que el

navegador lo despliegue.

Bien eso es una pequeño resumen de lo que se hace, el servidor realiza una serie

de pasos en su ciclo principal

1. Acepta una conexión TCP de un cliente

2. Obtiene el nombre del archivo solicitado

3. Obtiene el archivo (del disco)

4. Envía el archivo como forma de respuesta al cliente

5. Libera o cierra la conexión con el cliente

Aunque hoy en día los servidores web son capaces de realizar más tareas, estas

cinco son las más esenciales que ellos hacen.

Este diseño tiene un problema es la cantidad de peticiones que pueden atender

por segundo ya que cada solicitud es también es una solicitud de acceso al disco

duro para que este pueda acceder a dicho archivo, por lo tanto no puede atender

más peticiones por segundo que acceso al disco duro, un disco duro SCSI de alta

calidad tiene un tiempo de acceso de 5 mseg (0.005 segundos), cosa que para este

tipo de servidores es un gran limitante ya que las páginas web de alta demanda

por lo general hacen más de 200 peticiones por segundo, para solucionar este

problema los servidores web mantienen una cache en memoria de los archivos más

usados frecuentemente, así que antes de acceder al disco duro el servidor verifica

la cache y si está allí acede a él si no hace un acceso al disco duro.

Pero dicha solución hace requerir una gran cantidad de memoria principal y más

tiempo para hacer la verificación en la cache para manejar su contenido

Page 7: Servidores web o http

6

Figura 3.1 – funcionamiento de un servidor web de manera resumida

Para mejorar dicha solución se acudió a los multi-subprocesos, dicha mejora

consiste en un modelo Front-End el cual es encargado de aceptar todas las

solicitudes entrantes y x cantidad de módulos o subprocesos acceden a la cache,

hay que recordar que todos los módulos pertenecen al mismo proceso y que cada

módulo tiene un espacio dentro la memoria cache de estas páginas recientemente

utilizadas.

Cuando llega una solicitud Front-End, esta es aceptada y se construye un pequeño

registro en la memoria donde estará descrita la solicitud, luego es entregada a uno

de los subprocesos o módulos.

Page 8: Servidores web o http

7

Figura 4.1 – un servidor web que atiende múltiples peticiones los cuales serán procesado por un

subproceso, pero antes pasan por un Front-End

Hay otros diseños donde la solicitud Front-End es eliminada y cada subproceso o

modulo tratan de acceder a sus propias solicitudes pero para aquello se logre se

necesita un protocolo que bloquee estas para que no hayan conflicto entre

módulos.

Ahora miremos con más detalle cómo funciona este modelo de solicitud Front-End:

Cuando un módulo acepta una solicitud, lo primero que hace es mirar en la cache

si existe la página solicitada, si la encuentra actualiza el registro para crear un

apuntador al archivo de registro. Si en caso de no encontrarse lo que hace el

modulo es iniciar el proceso de acceso a disco duro para leer la cache esto tal vez

haga que borre algunos archivos en la cache para darle espacio al nuevo archivo,

una vez el archivo llega a la cache es enviado al cliente para que este lo pueda

procesar.

Esto permite que se atienda muchas solicitudes sin gastar tiempo de CPU y

mientras unos módulos están bloqueados hay otros que están trabajando

activamente en otras solicitudes.

Hoy en día los servidores web o http solo no hacen aceptar solicitudes y regresar

nombres de archivos, si no que estos procesos en si son muy complejos y hacen

que lleven otros procesos, estos procesos son una serie de pasos que llevan cada

uno de los módulos, pueda que cada uno de los módulos puedan hacer cada uno

de esos pasos o no; estos procesos son.

Page 9: Servidores web o http

8

1. Resuelve el nombre de la página solicitada

2. Autentifica al cliente

3. Realiza control de acceso del cliente

4. Realiza control de acceso en la página web

5. Verifica el cache

6. Obtiene del disco la página solicitada

7. Determina el tipo MIME que se incluirá la respuesta

8. Se encarga de los diversos detalles

9. Regresa la respuesta al cliente

10. Realiza una entrada en el registro del servidor.

El primer paso es necesario dado a que la solicitud que entra tal vez no contenga el

archivo que se solicita, para ello deber expandirse para obtener este archivo y

poder ser enviado al cliente, además los actuales navegadores pueden recoger el

idioma en la cual queremos ver el archivo y el servidor busca si lo hay en ese

idioma.

El segundo paso es también muy importante si hablamos de seguridad ya que el

servidor debe autentificar para darle acceso a ciertas páginas y negar el acceso a

otras en las cuales no posee permisos para su ingreso

El tercer paso tiene que ver con la segunda ya que verifica las restricciones que

tiene la solicitud y estas deben satisfacer la identificación del cliente

El cuarto paso verifica si hay restricciones de acceso relacionadas con la pagina

misma, permitiendo el acceso o no a ciertos archivos en la cual puedan contener

información importantes o guarde configuraciones en la cual puedan verse

involucrados otros usuarios.

El quinto y sexto paso consisten en obtener la página del disco duro, siendo el

sexto el que hace las solicitudes de acceso al disco duro

El séptimo paso consiste en determinar el tipo MIME (consultar en la

documentación de la universidad) a partir de la extensión de los archivos y

posiblemente los otros recursos

El octavo paso tiene que ver con la variedad de tareas como la construcción de

perfiles de usuarios o la recolección de ciertas estadísticas

Page 10: Servidores web o http

9

El noveno paso tiene que ver el lugar que se envía el resultado

Y el décimo paso tiene que ver con la creación de la entrada al registro del sistema

con fines administrativos, esto con el objetivo de buscar registros con datos

importantes sobre cómo se comportan los usuarios cuando acceden al servidor

5. Tipos de peticiones de los servidores web

Como sabremos un servidor web opera bajo el protocolo HTTP, el cual pertenece a

la capa de aplicación del modelo OSI, a este protocolo se le define habitualmente

el puerto TCP 80, haciendo dichas peticiones a través del protocolo HTTP.

El protocolo HTTP posee 8 métodos de peticiones ya definidos pero esta vez

vamos hablar de los dos más usados que son la petición GET y la petición POST

5.1. La petición GET: se caracteriza por estar presente en la URL y el cual

indica dicho recurso a través de ella por ejemplo

GET /images/logo.png HTTP/1.1

U otro ejemplo es con parámetros

/index.php?page=main&lang=es

Por recomendación de seguridad no se recomienda usar este tipo de

petición en la cual una aplicación que causen efectos y envíen

información importante ya que esta será enviada por la URL, esto

hace que la URL se agrande mucho por ejemplo esta:

http://www.concept1024.net/usuarios.php?id=151356213565315&tip

o=4541635...

Cuando el usuario a través del navegador hace una petición al

servidor este realiza los siguientes pasos:

1. Se crea un socket a una dirección DNS: se abre un socket a un

servidor dado mediante el protocolo TCP, lo cual lo que debe

hacer es convertir esta dirección en una dirección numérica

2. Resolución de DNS a IP: si la dirección dada es DNS y no está en la

base de datos DNS , el host Resolve Requets solicita al servidor

Page 11: Servidores web o http

10

DNS la o las direcciones IP correspondientes, para que luego el

navegador cree las reglas y se almacena la dirección IP junto la

dirección DNS en la bases de datos

3. Recuperación de la reglas DNS: una vez almacenada la regla se

realiza una petición a la bases de datos para recuperar las reglas

de la petición

4. Se crea Socket a una dirección IP: se crea otra socket mediante

TCP, dicha dirección puede ser recuperada después del anterior

paso

5. Se prepara la petición: se crea una petición GET con una URL el

cual tendrá una bandera o flag, la prioridad y el método que en

este caso es implícitamente tipo GET

6. Se crea una cache.

7. Se efectúa la petición: se realizan las peticiones GET en la cual se

leen las cabeceras HTTP de la http transaction y luego del cuerpo

de la http transaction

8. Consulta en la cache: recuerden que anteriormente hablamos de

este paso donde se verifica si el recurso está en cache y en caso

de estarlo lo envía al cliente, si no existe hace una solicitud de

acceso al disco duro para recuperar el recurso y enviarlo al cliente

9. Retribución booleana de existencia: en caso de no existir el

recurso (el valor de la variable create es false) y dichos datos son

escritos en el registro, en caso de existir se lee directamente

10. Presentación visual del recurso; termina la operación y se presenta

visualmente la información solicitada

5.2. petición POST: aquí los datos son sometidos a un proceso de cifrado

para obtener el recurso, los datos son incluidos en el cuerpo de la

petición, aunque este implica que se pueda crear otro recurso

En la cabecera de la petición va incluida la siguiente instrucción:

application/x-www-form-urlencoded, la cual indica el formato y la

codificación de los datos enviados.

En una petición tipo POST por lo general tiene algunas de estas

cabeceras:

Petition type: especifica el tipo de petición HTTP

Referer: especifica la url desde el cual se especifica la petición

Page 12: Servidores web o http

11

Content-Length: especifica el tamaño en bytes de los datos

envaidos en la petición

Origin: especifica la url especifica 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)

Codificación del mensaje del cuerpo de la petición:

Los datos que son enviados al cuerpo de la petición deben tener

un formato, el cual le permita al servidor manipularlos, para

aquello la petición debe tener una cabecera content-type cuyo

valor será la decodificación de los datos, para así el sistema pueda

diferenciar entre las variables aisladas, datos binarios, textos

planos o cualquier otro tipo de datos a este formato de cabecera

le denominamos MIME.

Page 13: Servidores web o http

12

6. Aplicación del lado del servidor

Una aplicación del lado del servidor es cualquier programa el cual puedan ser

procesadas por el servidor con el objetivo de hacer en el ciertas acciones, estas

aplicaciones están escritas en cualquier lenguaje de programación. Ejemplos de

estas aplicaciones tenemos

PHP

Perl

Python

Rubi

6.1. Procesamiento del lado del servidor: Un servidor web es el encargado

de procesar los scripts del lado del servidor para que este de una

salida en HTML y otros lenguajes al lado del cliente, así este último

pueda visualizar lo que el servidor le envía, la información que va ser

procesada, puede ser cedida por el cliente al script mediante

cualquier aplicación en el entorno de un navegador, esto implica que

deberá usarse formularios o enlaces con la formación dentro de esta

o cualquier otro método usado.

7. Servidor web local

Es un servidor web alojado en un equipo de referencia dentro una red local, siendo

así que este puede estar instalado en cualquiera de los equipos de dicha red, como

vemos aquí podemos decir que todos los servidores son servidores locales ya que

a este servidor podemos acceder desde el equipo donde está alojado o desde un

equipo la cual pertenezca a esta red local.

Se puede acceder a él a través de las dirección IP LoopBack la cual es 127.0.0.1 si

hablamos de IPv4 si hablamos de direcciones IPv6 se pueden acceder desde la

dirección : : 1, el puerto TCP 80 se obvia y los archivos se almacena en una carpeta

determinada por la configuración de estos servidores

Para esto existen muchas aplicaciones que permiten estos como lo son xampp el

cual nos permite acceder a estos servidores desde el equipo local de manera rápida

y sencilla

Page 14: Servidores web o http

13

8. Conclusiones

Bueno para terminar ya este trabajo hemos visto algunos aspectos muy

importantes sobre lo que trata los servidores web, ya que allí es donde se alojan

todas las páginas webs que nosotros conocemos, además que cada vez que

nosotros enviamos datos a estos, además de enviar datos enviamos peticiones para

obtener un recurso que esta nos ofrece.

Recordemos que cada vez que pedimos un recurso el servidor hace una serie de

pasos para garantizar que lo que nos envía sea exactamente lo que pedimos y no

generar conflictos a la hora que nos muestre en nuestro navegador dicho recurso

Una cosa importante es lo que tiene que ver con los equipos de cómputo para

estos servidores ya que un computador de mesa no es el mejor equipo para estos

servidores debido a la cantidad peticiones que tiene que atender es bastante

grande, de tal modo que para estos equipos deben ser equipos que posean muy

rápidos microprocesadores, disco duros con un mínimo de tiempo de acceso y

sobre todo un SO el cual permita su fácil administración.

Aunque para los servidores locales no hay que necesidad de tener estos equipos

potentes ya que en este caso por ejemplo si uso mi computador para probar mi

página web, la cantidad de peticiones será muy baja y entonces mi equipo puede

ser capaz de atender dichas peticiones

Aprendimos sobre los dos tipos de peticiones más usadas en los servidores web

que son la petición tipo GET y la petición tipo POST, las cuales a pesar que ambas

cosas hacen casi lo mismo, la manera que lo hacen es demasiado diferente

mientras que en el GET nosotros solicitamos un recurso a través de la URL en la

petición POST la enviamos de manera oculta sin que sea visible al usuario

(transparente) y además de cifrada.

Otra cosa que vimos es la importancia de usar la petición POST cuando estamos

trabajando con formularios, dado a que los datos a enviar son muy importantes y

deben tener la mejor seguridad para que lleguen al servidor.

Page 15: Servidores web o http

14

9. Referencias

1. Andrew S. Tanenbaum, Redes de computadoras – cuarta edición, México,

Pearson Educación, 2003. 618p (Cap. 7 – Capa de Aplicación).

2. Wikipedia – Cliente servidor <es.wikipedia.org/wiki/Cliente-servidor>

[consulta: sep. 01 del 2013]

3. Wikipedia – Servidor Web <es.wikipedia.org/wiki/Servidor_web> [consulta:

sep. 02 del 2013]