servidores web o http
Post on 05-Dec-2014
386 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
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
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.
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.
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
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
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.
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.
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
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
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
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.
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
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.
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]
top related