Diferencia entre revisiones de «HTTP»

Contenido eliminado Contenido añadido
Sin resumen de edición
Etiqueta: editor de código 2017
Sin resumen de edición
Etiqueta: editor de código 2017
Línea 23:
##[[/Conexiones/Pipelined Connections|Pipelined Connections]]
 
=== Proxies ===
 
Un servidor proxy es un equipo que se encuentra entre un cliente y un servidor. es un servidor transparente para los usuarios finales.
en estos casos verdaderamente las solicitudes HTTP que se mandan desde un navegador llegan es a un proxy y del servidor proxy van hacia el servidor deseado.
el servidor proxy hace de intermediario entre el usuario final y el servidor, todos los archivos que manda el servidor y el usuario primero pasan por el proxy y luego van a su destino final.
 
los servidores proxy se utilizan mayor mente para inspeccionar las solicitudes HTTP y tomas algunas acciones adicionales como por ejemplo:
En una oficina se requiere que los empleados no gasten su tiempo en Facebook o Instagram, así que los empleados al solicitar entrar a estas paginas el proxy niega la solicitud y no manda ninguna petición al servidor para que así no hallan distracciones en la oficina.
 
Sin embargo, un servidor proxy puede ser mucho más sofisticado que simplemente dejar mensajes a
Hosts específicos, un cortafuegos simple podría realizar ese deber. Un servidor proxy también podría inspeccionar
Mensajes para eliminar datos confidenciales, como los encabezados Referer que apuntan a recursos internos
En la red de la empresa. Un proxy de control de acceso también puede registrar mensajes HTTP para crear auditorías
de todo el tráfico. Muchos proxies de control de acceso requieren autenticar el usuario.
 
* Los proxies pueden proporcionar una capa adicional de seguridad mediante el filtrado de HTTP potencialmente peligroso como un ataque de inyección de SQL o Scripts Maliciosos.
* '''<big>Caching Proxies</big>''' pueden almacenar copias de recursos de acceso frecuente y responder a mensajes Solicitando directamente esos recursos.
* Un proxy no tiene que ser un servidor físico si no tambien puede ser una herramienta llamada Fiddler que depure HTTP y reenvie todo el trafico
 
 
==== Tipos de Proxys ====
<big>Proxies Directos:</big> suelen estar más cerca del cliente que el servidor, y los proxies directos requieren generalmente algunas
Configuraciones en el software del cliente o navegador web para trabajar.
<br />
<big>Proxies Inversos:</big> es un servidor proxy que está más cerca del servidor que el cliente y está completamente
Transparente para el cliente.
 
=== Conexiones Persistentes ===
En los primeros días de la web, un agente de usuario podría abrir y cerrar una conexión para cada petición individual se envía a un servidor. Esta aplicación estaba de acuerdo con la idea de HTTP de ser un protocolo sin estado completamente. A medida que el número de solicitudes por página creció, también lo hizo los gastos indirectos generados por apretones de manos TCP y las estructuras de datos en memoria necesaria para establecer cada socket TCP.
 
Las conexiones persistentes, es la idea de utilizar la misma conexión TCP para enviar y recibir múltiples peticiones HTTP / respuestas, en lugar de abrir una nueva para cada par petición / respuesta única. El uso de conexiones persistentes es muy importante para mejorar el rendimiento de HTTP.
 
Los clientes Web a menudo abren conexiones para el mismo sitio. Por ejemplo, la mayoría de las imágenes incrustadas en una página web a menudo vienen del mismo sitio web, y un número significativo de hipervínculos a otros objetos menudo apuntan al mismo sitio. Por lo tanto, una aplicación que inicia una petición HTTP a un servidor probablemente hará que más solicitudes a ese servidor en un futuro próximo (a buscar las imágenes en línea, por ejemplo). Esta propiedad se denomina sitio localidad.
 
Por esta razón, HTTP / 1.1 (y versiones mejoradas de HTTP / 1.0) permite que los dispositivos HTTP para mantener las conexiones TCP abiertas después de transacciones completo y reutilizar las conexiones preexistentes para futuras peticiones HTTP. Conexiones TCP que se mantengan cerradas, después de completar las transacciones se llaman conexiones persistentes. Conexiones no persistentes se cierran después de cada transacción. Las conexiones persistentes permanecen abiertas entre operaciones, hasta que el cliente o el servidor decide cerrarlas.
 
Las conexiones persistentes, también evitan la estrategia de arranque lento, que es parte del control de congestión de TCP, haciendo que las conexiones persistentes funcionan mejor con el tiempo. En resumen, las conexiones persistentes reducen el uso de memoria, el uso de CPU, la congestión de la red,
 
la latencia, y en general a mejorar la respuesta de una página con el tiempo. Pero, como todo en la vida hay un inconveniente.
 
Como se menciona anteriormente, un servidor tiene un número finito de conexiones entrantes que puede soportar. Pero cada servidor soporta una cantidad de conexiones diferentes dependiendo de ciertos factores que hacen que el servidor se encuentre configurado para limitar el número de conexiones simultáneas, pero este límite se encuentra por debajo del punto donde el servidor se caiga. Unos de estos factores es que depende de la cantidad de memoria disponible, la configuración del servidor software, el rendimiento de la aplicación, entre otras.
 
La configuración es una medida de seguridad para ayudar a prevenir la denegación de servicio ataques. Es relativamente fácil para alguien para crear un programa que se abrirá miles de conexiones persistentes con un servidor y el servidor no pueda responder a los clientes reales.
 
Las conexiones persistentes son una optimización del rendimiento, sino también una vulnerabilidad. Y teniendo en este detalle, hay que tener presente el periodo de tiempo se debe mantener una conexión persistente abierta.
 
Las conexiones pueden permanecer abiertas durante el tiempo que el sitio web se ejecute, pero también se ve afectada por el límite de conexiones que para ese momento el servidor este soportando, y por eso la gran mayoría de ellos, están configurados para cerrar las conexiones persistentes que se encuentran inactivas durante un determinado periodo de tiempo.
 
A demás de cerrar las conexiones persistentes, una cantidad de software de servicio web, de igual manera puede desactivar estas conexiones. Esto es muy común en servicios compartidos. En estos servidores compartidos se sacrifica el rendimiento del sitio web por permitir múltiples conexiones, tantas como sean posibles. Debido a la persistencia conexiones son el estilo de conexión predeterminado con HTTP 1.1, un servidor que no permite conexiones persistentes tiene que incluir una cabecera de conexión en cada respuesta HTTP. El código siguiente es un ejemplo.
 
HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/7.0 X-AspNet-Version: 2.0.50727 X-Powered-By: ASP.NET Connection: close
 
Content-Length: 17149
 
La conexión: lo que se encuentra en connection es un estado close, esto quiere decir que el sitio web no cuenta con una conexión persistente y debe ser cerrada tan pronto como sea posible. El agente no está autorizado a hacer una segunda solicitud en la misma conexión.
 
=== Pipelined Connections ===
Pipelining HTTP es una técnica donde se envían peticiones sin esperar respuestas; amplia un poco las conexiones persistentes, al usar el protocolo HTTP / 1.1 que extiende solicitudes opcionales.
 
Este tipo de conexiones no son tan utilizadas por los clientes o servidores, a diferencia de las conexiones paralelas o persistentes; ya que en este tipo, un cliente puede enviar múltiples peticiones, pero puede perder la llegada de algunas respuestas. Las ventajas de estas conexiones, es que Permite reducir la latencia y, además, Un servidor envía respuestas a las solicitudes en el mismo orden en que se reciben. Sin embargo, presenta algunas desventajas grandes que no permiten la aceptación total de los usuarios y servidores, tal como que las conexiones pueden cerrar sin que se obtenga una respuesta.
 
= La arquitectura de la Web =