Un protocolo sin estado es un protocolo de comunicación en el que el receptor no debe retener el estado de la sesión de solicitudes anteriores. El emisor transfiere el estado de la sesión relevante al receptor de tal manera que cada solicitud pueda entenderse de forma aislada, es decir, sin referencia al estado de la sesión de solicitudes anteriores retenidas por el receptor. [1]
Por el contrario, un protocolo con estado es un protocolo de comunicación en el que el receptor puede conservar el estado de la sesión de solicitudes anteriores.
En las redes informáticas , los ejemplos de protocolos sin estado incluyen el Protocolo de Internet (IP), que es la base de Internet , y el Protocolo de transferencia de hipertexto (HTTP), que es la base de la World Wide Web . Los ejemplos de protocolos con estado incluyen el Protocolo de control de transmisión (TCP) y el Protocolo de transferencia de archivos (FTP).
Los protocolos sin estado mejoran las propiedades de visibilidad, confiabilidad y escalabilidad. La visibilidad se mejora porque un sistema de monitoreo no tiene que mirar más allá de una sola solicitud para determinar su naturaleza completa. La confiabilidad se mejora porque facilita la tarea de recuperación de fallas parciales. La escalabilidad se mejora porque no tener que almacenar el estado de la sesión entre solicitudes permite que el servidor libere recursos rápidamente y simplifica aún más la implementación.
La desventaja de los protocolos sin estado es que pueden disminuir el rendimiento de la red al aumentar los datos repetitivos enviados en una serie de solicitudes, ya que esos datos no pueden dejarse en el servidor y reutilizarse.
Un servidor HTTP puede entender cada solicitud de forma aislada. [2]
Comparemos esto con un servidor FTP tradicional que lleva a cabo una sesión interactiva con el usuario. Durante la sesión, se le proporciona al usuario un medio para autenticarse y configurar varias variables (directorio de trabajo, modo de transferencia), todas almacenadas en el servidor como parte del estado de la sesión.
Puede haber interacciones complejas entre protocolos con estado y sin estado entre diferentes capas de protocolo. Por ejemplo, HTTP, un protocolo sin estado, se superpone a TCP , un protocolo con estado, que a su vez se superpone a IP , otro protocolo sin estado, que se enruta en una red que emplea BGP , otro protocolo con estado, para dirigir los paquetes IP que circulan por la red.
Este apilamiento de capas continúa incluso por encima de HTTP. Como solución alternativa a la falta de un estado de sesión retenido, los servidores HTTP implementan varios métodos de gestión de sesiones , [3] normalmente utilizando un identificador de sesión en una cookie HTTP que hace referencia a un estado de sesión almacenado en el servidor, creando efectivamente un protocolo con estado sobre HTTP. [4] Las cookies HTTP violan el estilo arquitectónico REST porque incluso sin hacer referencia a un estado de sesión almacenado en el servidor, son independientes [ aclaración necesaria ] del estado de la sesión (afectan a páginas anteriores del mismo sitio web en el historial del navegador) y no tienen una semántica definida. [5]
siguiente material tiene como objetivo presentar al lector las diversas técnicas que los desarrolladores han utilizado para implementar el seguimiento de sesiones en la Web. Se mencionan las principales características operativas de cada método, además de las deficiencias que se han observado en su uso. Se puede encontrar información adicional sobre la gestión de sesiones buscando en Internet. […]