Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DATO CURIOSO
<HTML>
</HTML>
La versión del protocolo se envía con cada petición: HTTP/1.0 se añade a la línea
de la petición GET.
Se envía también un código de estado al comienzo de la respuesta, permitiendo así
que el navegador pueda responder al éxito o fracaso de la petición realizada, y
actuar en consecuencia (como actualizar el archivo o usar la caché local de algún
modo).
El concepto de cabeceras de HTTP, se presentó tanto para las peticiones como
para las respuestas, permitiendo la trasmisión de meta-data y conformando un
protocolo muy versátil y ampliable.
Con el uso de las cabeceras de HTTP, se pudieron transmitir otros documentos
además de HTML, mediante la cabecera Content-Type.
Una petición normal, sigue la estructura:
200 OK
Content-Type: text/html
<HTML>
<IMG SRC="/miImagen.gif">
</HTML>
200 OK
Content-Type: text/gif
(image content)
Estas innovaciones, no se desarrollaron de forma planeada, sino más bien con una
aproximación de prueba y error, entre los años 1991 y 1995: un servidor y un
navegador, añadían una nueva funcionalidad y se evaluaba su aceptación. Debido
a esto, en ese periodo eran muy comunes los problemas de interoperatividad. En
Noviembre de 1996, para poner fin a estos problemas se publicó un documento
informativo que describía las prácticas adecuadas, RFC 1945. Esté documento es
la definición del protocolo HTTP/1.0. Resulta curioso, que realmente no es un
estándar oficial.
Host: developer.mozilla.org
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header
200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a"
Server: Apache
Transfer-Encoding: chunked
(...contenido...)
Host: developer.mozilla.org
Accept: */*
Accept-Language: en-US,en;q=0.5
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header
200 OK
Age: 9578461
Cache-Control: public, max-age=315360000
Connection: keep-alive
Content-Length: 3077
Content-Type: image/png
Server: Apache
La visión original de Tim Berners-Lee para la Web no era solo un medio de 'solo'
lectura. Él había visionado una Web donde la gente pudiese añadir y mover
documentos de forma remota, un estilo de sistema de archivos distribuido. Sobre el
año 1996, HTTP se había desarrollado para permitir la autoría, y fue creado
un estándar denominado WebDAB. Este fue más tarde ampliado por aplicaciones
especificas como CardDAV, para permitir libros de direcciones, y CalDAV para
trabajar con calendarios. Pero todos estas extensiones '*DAV', tenían una
debilidad, y es que debian ser implementadas por los servidores, para poder ser
usadas, lo cual era bastante complejo. Así pues su uso en la Web fue bastante
acotado.
En el año 2000, un nuevo formato para usar HTTP fue diseñado: REST (del
inglés: 'Representational State Transfer'). Las acciones de la nueva API, no
estaban supeditadas a nuevos métodos HTTP, unicamente al acceso a URIs
especificas con métodos HTTP/1.1). Esto permitió que cualquier aplicación Web
dispusiera de una API, para permitir la recuperación y modificación de datos, sin
tener que actualizar servidores o navegadores; todo lo que se necesitaba era
incluido en los archivos servidos por los sitios Web. La contrapartida del modelo
REST está en que cada sitio Web define su propia versión no estándar de API
RESTful y tiene un control total sobre ella; al contrario del formato *DAV donde
clientes y servidores eran interoperables. La arquitectura REST empezó a ser muy
común a partir del año 2010.
Desde el año 2005, las APIs disponibles para páginas Web a aumentado
considerablemente, y muchas de estas nuevas APIs dependen de cabeceras
HTTP específicas para funciones concretas:
Esto permite al servidor almacenar datos en la caché del cliente, previamente a que
estos sean pedidos, mediante un mecanismo denominado 'server push'.
Estandarizado de manera oficial en Mayo de 2015, HTTP/2 ha conseguido muchos
éxitos. En Julio de 2016, un 8.7% de todos los sitios Web[1] estaban usandolo ya,
representando más del 68% de todo su tráfico[2]. Los sitios Web con mucho tráfico,
fueron aquellos que lo adoptaron más rápidamente, ahorrando considerablemente
las sobrecargas en la transferencia de datos, ... y en sus presupuestos.
Para poder mostrar una página Web, el navegador envía una petición de
documento HTML al servidor. Entonces procesa este documento, y envía más
peticiones para solicitar scripts, hojas de estilo (CSS), y otros datos que necesite
(normalmente vídeos y/o imágenes). El navegador, une todos estos documentos y
datos, y compone el resultado final: la página Web. Los scripts, los ejecuta también
el navegador, y también pueden generar más peticiones de datos en el tiempo, y el
navegador, gestionará y actualizará la página Web en consecuencia.
Una página Web, es un documento de hipertexto (HTTP), luego habrá partes del
texto en la página que puedan ser enlaces (links) que pueden ser activados
(normalmente al hacer click sobre ellos) para hacer una petición de una nueva
página Web, permitiendo así dirigir su agente de usuario y navegar por la Web. El
navegador, traduce esas direcciones en peticiones de HTTP, e interpretara y
procesará las respuestas HTTP, para presentar al usuario la página Web que
desea.
El servidor Web
Un servidor no tiene que ser necesariamente un único equipo físico, aunque si que
varios servidores pueden estar funcionando en un único computador. En el
estándar HTTP/1.1 y Host , pueden incluso compartir la misma dirección de IP.
Proxies
HTTP es sencillo
Presentadas en la versión HTTP/1.0, las cabeceras de HTTP, han hecho que este
protocolo sea fácil de ampliar y de experimentar con él. Funcionalidades nuevas
pueden desarrollarse, sin más que un cliente y su servidor, comprendan la misma
semántica sobre las cabeceras de HTTP.
HTTP es un protocolo sin estado, es decir: no guarda ningún dato entre dos
peticiones en la mísma sesión. Esto crea problemáticas, en caso de que los
usuarios requieran interactuar con determinadas páginas Web de forma ordenada
y coherente, por ejemplo, para el uso de "cestas de la compra" en páginas que
utilizan en comercio electrónico. Pero, mientras HTTP ciertamente es un protocolo
sin estado, el uso de HTTP cookies, si permite guardar datos con respecto a la
sesión de comunicación. Usando la capacidad de ampliación del protocolo HTTP,
las cookies permiten crear un contexto común para cada sesión de comunicación.
HTTP y conexiones
Una conexión se gestiona al nivel de la capa de trasporte, y por tanto queda fuera
del alcance del protocolo HTTP. Aún con este factor, HTTP no necesita que el
protocolo que lo sustenta mantenga una conexión continua entre los participantes
en la comunicación, solamente necesita que sea un protocolo fiable o que no
pierda mensajes (como mínimo, en todo caso, un protocolo que sea capaz de
detectar que se ha pedido un mensaje y reporte un error). De los dos protocolos
más comunes en Internet, TCP es fiable, mientras que UDP, no lo es. Por lo tanto
HTTP, se apoya en el uso del protocolo TCP, que está orientado a conexión,
aunque una conexión continua no es necesaria siempre.
En la versión del protocolo HTTP/1.0, habría una conexión TCP por cada
petición/respuesta intercambiada, presentando esto dos grandes inconvenientes:
abrir y crear una conexión requiere varias rondas de mensajes y por lo tanto
resultaba lento. Esto sería más eficiente si se mandaran varios mensajes.
Se presenta a continuación una lista con los elementos que se pueden controlar
con el protocolo HTTP:
Cache
El como se almacenan los documentos en la caché, puede ser especificado por
HTTP. El servidor puede indicar a los proxies y clientes, que quiere almacenar y
durante cuanto tiempo. Aunque el cliente, también puede indicar a los proxies de
caché intermedios que ignoren el documento almacenado.
Flexibilidad del requisito de origen
Para prevenir invasiones de la privacidad de los usuarios, los navegadores Web,
solamente permiten a páginas del mismo origen, compartir la información o datos.
Esto es una complicación para el servidor, asi que mediante cabeceras HTTP, se
puede flexibilizar o relajar esta división entre cliente y servidor
Autentificación
Hay páginas Web, que pueden estar protegidas, de manera que solo los usuarios
autorizados puedan acceder. HTTP provee de servicios básicos de autentificación,
por ejemplo mediante el uso de cabeceras como: WWW-Authenticate, o
estableciendo una sesión especifica mediante el uso de HTTP cookies.
Proxies y tunneling
Servidores y/o clientes pueden estar en intranets y esconder así su verdadera
dirección IP a otros. Las peticiones HTTP utilizan los proxies para acceder a ellos.
Pero no todos los proxies son HTTP proxies. El protocolo SOCKS, por ejemplo,
opera a un nivel más bajo. Otros protocolos, como el FTP, pueden ser servidos
mediante estos proxies.
Sesiones
El uso de HTTP cookies permite relacionar peticiones con el estado del servidor.
Esto define las sesiones, a pesar de que por definición el protocolo HTTP es un
protocolo sin estado. Esto es muy útil no sólo para aplicaciones de comercio
electrónico, sino también para cualquier sitio que permita configuración al usuario.
Flujo de HTTP
Cuando el cliente quiere comunicarse con el servidor, tanto si es directamente con
él, o a través de un proxy intermedio, realiza los siguientes pasos:
1. Abre una conexión TCP: la conexión TCP se usará para hacer una petición, o
varias, y recibir la respuesta. El cliente pude abrir una conexión nueva, reusar una
existente, o abrir varias a la vez hacia el servidor.
2. Hacer una petición HTTP: Los mensajes HTTP (previos a HTTP/2) son legibles en
texto plano. A partir de la versión del protocolo HTTP/2, los mensajes se
encapsulan en franjas, haciendo que no sean directamente interpretables, aunque
el principio de operación es el mismo.
3. GET / HTTP/1.1
4. Host: developer.mozilla.org
Accept-Language: fr
8. Server: Apache
14.
<!DOCTYPE html... (here comes the 29769 bytes of the requested web page)
Mensajes HTTP
En las versiones del protocolo HTTP/1.1 y anteriores los mensajes eran de formato
texto y eran totalmente comprensibles directamente por una persona. En HTTP/2,
los mensajes estan estructurados en un nuevo formato binario y las tramas
permiten la compresión de las cabeceras y su multiplexación. Así pues, incluso si
solamente parte del mensaje original en HTTP se envía en este formato, la
sematica de cada mensaje es la misma y el cliente puede formar el mensaje
original en HTTP/1.1. Luego, es posible interpretar los mensajes HTTP/2 en el
formato de HTTP/1.1.
Existen dos tipos de mensajes HTTP: peticiones y respuestas, cada uno sigue su
propio formato.
Peticiones
Un ejemplo de repuesta:
Conclusión
El protocolo HTTP es un protocolo ampliable y fácil de usar. Su estructura cliente-
servidor, junto con la capacidad para usar cabeceras, permite a este protocolo
evolucionar con las nuevas y futuras aplicaciones en Internet.
En la actualidad, empleamos las páginas web para comprar online, pedir cita en el
médico o realizar gestiones bancarias. Algo que no era común que hiciésemos
desde nuestro portátil o smartphone hace no demasiados años. Las cosas han
cambiado.
Ha surgido entonces la necesidad de proteger la información que se transfiere
entre el navegador del usuario y los servidores web. Es decir, era necesario un
protocolo más seguro que cifre las conexiones de manera que ningún usuario
malintencionado pueda interceptarla o robarla. De este modo surgió HTTPS.
Por tanto, para que tu página web funcione bajo el protocolo HTTPS es necesario
instalar un Certificado SSL.
La seguridad de tus clientes debe ser un aspecto prioritario para ti. La recogida y
el envío de datos de forma segura es la única forma de protegerlos y que se
sientan seguros a la hora de facilitarte sus datos de pago, su información personal
o cualquier otro dato que pueda ser importante para ellos.
¿Y sabes lo más importante de todo? Google no para de trabajar por una web más
segura. Tanto es así que, coincidiendo con el lanzamiento de Google Chrome 68,
empezó a marcar como “no seguras” todas las páginas webs que todavía
funcionan con HTTP. O lo que es lo mismo, todas las webs que no
tienen instalado un certificado SSL.
Por tanto, los certificados SSL ya no es cosa solo de los ecommerce o tiendas
online. Cualquier página que tengas, ya sea un blog de moda, una web corporativa
o una página personal que trate información importante -datos personales, correo
electrónico de tus suscriptores, entre otras- necesitan estar protegidas con un SSL
para que Google no las penalice.
Además, como empresa puede ser una buena idea implementar otras seguridades
adicionales añadidas para evitar el spam o posibles ataques. Haz que la seguridad
de tu página web sea una prioridad.
Por eso, el que cada vez seamos más páginas las que adoptamos
este protocolo es una muy buena noticia para la seguridad y
privacidad de todos los usuarios. Pero aún queda un largo camino
por recorrer, ya que según páginas como Stat Operator sólo
116.675 de un millón de las páginas más importantes de la red
utilizan este protocolo por defecto.
HTTP: El Protocolo de transferencia de hipertexto (Hypertext Transfer Protocol o HTTP) es el
protocolo de comunicación que permite las transferencias de información en la World Wide Web.
Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y
un servidor. El cliente (se le suele llamar "agente de usuario", en inglés user agent) realiza una
petición enviando un mensaje, con cierto formato al servidor. El servidor (se le suele llamar un
servidor web) le envía un mensaje de respuesta. Si un servidor necesita enviar un mensaje a un
cliente, comprueba si hay una conexión HTTP que pertenece a la sesión requerida y está en el
estado "respondiendo una solicitud HTTP" (incluida una encuesta larga) con lo que el mensaje se
agrega al contenedor de respuesta para la conexión y enviado al usuario. En un caso típico, hay un
tiempo de espera adicional (50 milisegundos) frente a la posibilidad de que el servidor pronto
tenga más mensajes para la sesión. Si no hay una conexión HTTP adecuada disponible, los
mensajes se colocan en la cola de envío de la sesión actual. Sin embargo, encuentran su camino
hasta que el recibo sea confirmado explícitamente por el cliente. Para todos los protocolos, el
cliente debe devolver un acuse de recibo explícito dentro de un tiempo razonable (se puede
agregar a un contenedor para la siguiente solicitud)
HTTPS
El Protocolo seguro de transferencia de hipertexto (en inglés, Hypertext Transfer
Protocol Secure o HTTPS) es un protocolo de aplicación basado en el protocolo HTTP,
destinado a la transferencia segura de datos de hipertexto, es decir, es la versión segura
de HTTP.
Usa TLS para crear un canal cifrado (cuyo nivel de cifrado depende del servidor remoto y del
navegador utilizado por el cliente) más apropiado para el tráfico de información sensible que el
protocolo HTTP. De este modo se consigue que la información sensible (usuario y claves de
paso normalmente) no pueda ser usada por un atacante que haya conseguido interceptar la
transferencia de datos de la conexión, ya que lo único que obtendrá será un flujo de datos
cifrados que le resultará imposible de descifrar.
El puerto estándar para este protocolo es el 443. (También comúnmente usado el 4433)
Netscape Communications creó HTTPS en 1992 para su navegador Netscape Navigator.1
Originalmente, HTTPS era utilizado solamente con el cifrado SSL, pero este se volvió obsoleto
ante TLS. HTTPS fue adoptado como un estándar web con la publicación de RFC 2818 en
mayo del 2000.
Adopción de HTTPS[editar]
En febrero de 2017, la adopción HTTPS fue:
Limitaciones[editar]
El nivel de protección depende de la exactitud de la implementación del navegador web, el
software del servidor y los algoritmos de cifrado actualmente soportados. Vea la lista en Idea
Principal.
También, HTTPS es vulnerable cuando se aplica a contenido estático de publicación
disponible. El sitio entero puede ser indexado usando una araña web, y la URI del recurso
cifrado puede ser adivinada conociendo solamente el tamaño de la petición/respuesta.16 Esto
permite a un atacante tener acceso al texto plano (contenido estático de publicación), y
al texto cifrado (La versión cifrada del contenido estático), permitiendo un ataque criptográfico.
Debido a que SSL opera bajo HTTP y no tiene conocimiento de protocolos de nivel más alto,
los servidores SSL solo pueden presentar estrictamente un certificado para una combinación
de puerto/IP en particular17 Esto quiere decir, que en la mayoría de los casos, no es
recomendable usar Hosting virtual name-based con HTTPS. Existe una solución
llamada Server Name Indication (SNI) que envía el hostname al servidor antes de que la
conexión sea cifrada, sin embargo muchos navegadores antiguos no soportan esta extensión.
El soporte para SNI está disponible desde Firefox 2, Opera 8, e Internet Explorer
7 sobre Windows Vista.181920
Es posible que una persona estando en la misma red Wifi que nosotros, pueda capturar
nuestro tráfico de red, y en el caso de transportar información sensible y no cifrada, pueda
acceder a ella. La recomendación general es utilizar siempre páginas que tengan
implementado HTTPS para la realización de compras o intercambios de información
sensible o confidencial y garantizar así una primera barrera de seguridad para nuestros
datos personales.
En el protocolo HTTP las direcciones URL inician
con “http://”. Mientras que, en el HTTPS, dichos enlaces
empiezan con “https://”.
Generalmente, el protocolo HTTP usa el puerto 80, por
omisión. En cambio, los HTTPS utilizan el puerto 443.
A diferencia del HTTP que está sujeto a ataques man-in-the-
middle y eavesdropping, por lo que permiten que las
personas malintencionadas adquieran acceso a cuentas de un
sitio web, bancos e información confidencial; el HTTPS se
encuentra diseñado para soportar y resistir dichos ataques,
por lo que resulta más seguro.
Regularmente, el HTTP opera en la capa más alta del
Modelo OSI. Sin embargo, el protocolo HTTPS opera en una
subcapa más baja para garantizar el cifrado de un mensaje
HTTP previo a la trasmisión y descifrar los datos, una vez
recibidos.
Capas de red de HTTPS ¿Cuáles son y cómo funciona este protocolo?
Cifrado
Integridad
Así como existen riesgos de seguridad con los que se puedan perder
los datos, también es posible que el mensaje transmitido desde el
navegador web hasta el servidor sea capturado con el fin de
cambiar la información que hay en él. Por lo que, una vez
modificado, se enviará al destinatario y así, afectará la integridad
del emisor.
Autenticación
Limitaciones del protocolo ¿Cuáles son los puntos débiles del HTTPS?
Por lo tanto, podrá ser usurpada desde allí. Es decir, desde una web
falsa o insegura. Como conclusión, la presencia del candado
correspondiente al protocolo HTTPS, simplemente indica el uso de
un certificado que garantiza un tráfico seguro y libre de las
miradas de terceros. Sin embargo, dicho protocolo no emite avisos
en torno a la inseguridad que contenga un sitio HTTPS malicioso
que puede estar manipulado por estafadores online.
REFERENCIAS