En informática y redes en particular, una sesión es un enlace bidireccional delimitado en el tiempo, una capa práctica (relativamente alta) del protocolo TCP/IP que permite la expresión interactiva y el intercambio de información entre dos o más dispositivos o extremos de comunicación, ya sean ordenadores, sistemas automatizados o usuarios activos (véase sesión de inicio de sesión ). Una sesión se establece en un momento determinado y luego se finaliza. Una sesión de comunicación establecida puede implicar más de un mensaje en cada dirección. Una sesión suele ser con estado , lo que significa que al menos una de las partes comunicantes necesita mantener información sobre el estado actual y guardar información sobre el historial de la sesión para poder comunicarse, a diferencia de la comunicación sin estado , donde la comunicación consiste en solicitudes independientes con sus respectivas respuestas.
Una sesión establecida es el requisito básico para realizar una comunicación orientada a la conexión . Una sesión también es el paso básico para transmitir en modos de comunicación sin conexión . Sin embargo, cualquier transmisión unidireccional no define una sesión. [ 1 ]
El transporte de comunicaciones puede implementarse como parte de protocolos y servicios en la capa de aplicación , en la capa de sesión o en la capa de transporte en el modelo OSI .
- Ejemplos de la capa de aplicación:
- Sesiones HTTP , que permiten asociar información con visitantes individuales.
- Una sesión de inicio de sesión remoto telnet
- Ejemplo de capa de sesión:
- Una llamada telefónica por Internet basada en el Protocolo de Inicio de Sesión (SIP)
- Ejemplo de capa de transporte:
- Una sesión TCP , que es sinónimo de un circuito virtual TCP , una conexión TCP o un socket TCP establecido .
En el caso de protocolos de transporte que no implementan una capa de sesión formal (por ejemplo, UDP ) o donde las sesiones en la capa de aplicación suelen ser muy breves (por ejemplo, HTTP), las sesiones se mantienen mediante un programa de nivel superior que utiliza un método definido en los datos que se intercambian. Por ejemplo, un intercambio HTTP entre un navegador y un host remoto puede incluir una cookie HTTP que identifica el estado, como un ID de sesión único , información sobre las preferencias del usuario o el nivel de autorización.
Se creía que HTTP/1.0 solo permitía una única solicitud y respuesta durante una sesión web/HTTP. La versión HTTP/1.1 mejoró esto al completar la Interfaz de Puerta de Enlace Común (CGI), lo que facilitó el mantenimiento de la sesión web y permitió el uso de cookies HTTP y la carga de archivos.
La mayoría de las sesiones cliente-servidor se mantienen mediante la capa de transporte: una única conexión para una única sesión. Sin embargo, cada fase de transacción de una sesión web/HTTP crea una conexión independiente. Mantener la continuidad de la sesión entre fases requiere un ID de sesión . El ID de sesión se encuentra integrado en los enlaces de las páginas web dinámicas para que se transmita al CGI. El CGI utiliza el ID de sesión para garantizar la continuidad de la sesión entre las fases de transacción. Una ventaja de una conexión por fase es que funciona bien con conexiones de bajo ancho de banda (módem).<A HREF><FORM>
Implementación de software
Las sesiones TCP se implementan normalmente en software mediante procesos secundarios y/o multihilo , donde se crea un nuevo proceso o hilo cuando el ordenador establece o se une a una sesión. Las sesiones HTTP no suelen implementarse con un hilo por sesión, sino mediante una base de datos con información sobre el estado de cada sesión. La ventaja de usar múltiples procesos o hilos es la menor complejidad del software, ya que cada hilo es una instancia con su propio historial y variables encapsuladas. La desventaja es el elevado consumo de recursos del sistema y la posibilidad de que la sesión se interrumpa si se reinicia el sistema.
Cuando un cliente puede conectarse a cualquier servidor de un clúster, surge un problema particular al intentar mantener la coherencia, ya que los servidores deben conservar el estado de la sesión. El cliente debe conectarse al mismo servidor durante toda la sesión, o bien los servidores deben transmitir la información de la sesión a través de un sistema de archivos o base de datos compartidos. De lo contrario, el cliente podría reconectarse a un servidor diferente al que inició la sesión, lo que provocaría problemas si el nuevo servidor no tuviera acceso al estado almacenado del anterior.
Sesiones web del lado del servidor
Las sesiones del lado del servidor son prácticas y eficientes, pero pueden resultar difíciles de gestionar junto con sistemas de equilibrio de carga/alta disponibilidad y, en algunos sistemas embebidos sin almacenamiento, resultan completamente inutilizables. El problema del equilibrio de carga puede resolverse mediante el uso de almacenamiento compartido o aplicando el emparejamiento forzado entre cada cliente y un único servidor del clúster, aunque esto puede comprometer la eficiencia del sistema y la distribución de la carga.
Un método para utilizar sesiones del lado del servidor en sistemas sin almacenamiento masivo consiste en reservar una parte de la RAM para almacenar los datos de la sesión. Este método es aplicable a servidores con un número limitado de clientes (por ejemplo, un enrutador o un punto de acceso con acceso poco frecuente o restringido a más de un cliente a la vez).
Sesiones web del lado del cliente
Las sesiones del lado del cliente utilizan cookies y técnicas criptográficas para mantener el estado sin almacenar tantos datos en el servidor. Al presentar una página web dinámica, el servidor envía los datos del estado actual al cliente (navegador web) en forma de cookie. El cliente guarda la cookie en memoria o en disco. Con cada solicitud posterior, el cliente envía la cookie de vuelta al servidor, y este utiliza los datos para recordar el estado de la aplicación para ese cliente específico y generar una respuesta adecuada.
Este mecanismo puede funcionar bien en algunos contextos; sin embargo, los datos almacenados en el cliente son vulnerables a la manipulación por parte del usuario o del software que tenga acceso al equipo cliente. Para utilizar sesiones del lado del cliente donde se requiere confidencialidad e integridad, se debe garantizar lo siguiente:
- Confidencialidad: Nadie, excepto el servidor, debería poder interpretar los datos de la sesión.
- Integridad de los datos: Nadie, aparte del servidor, debe manipular los datos de la sesión (ni accidental ni maliciosamente).
- Autenticidad: Nada, aparte del servidor, debería poder iniciar sesiones válidas.
Para lograr esto, el servidor debe cifrar los datos de la sesión antes de enviarlos al cliente, y se debe impedir la modificación de dicha información por parte de terceros mediante medios criptográficos.
La transmisión de información de estado con cada solicitud solo es práctica cuando el tamaño de la cookie es pequeño. En esencia, las sesiones del cliente intercambian espacio en disco del servidor por el ancho de banda adicional que requiere cada solicitud web. Además, los navegadores web limitan la cantidad y el tamaño de las cookies que puede almacenar un sitio web. Para mejorar la eficiencia y permitir el almacenamiento de más datos de sesión, el servidor puede comprimir los datos antes de crear la cookie y descomprimirlos posteriormente cuando el cliente la devuelve.
token de sesión HTTP
Un token de sesión es un identificador único que se genera y envía desde un servidor a un cliente para identificar la sesión de interacción actual. El cliente suele almacenar y enviar el token como una cookie HTTP o como un parámetro en consultas GET o POST. La razón para usar tokens de sesión es que el cliente solo tiene que gestionar el identificador; todos los datos de la sesión se almacenan en el servidor (normalmente en una base de datos a la que el cliente no tiene acceso directo) vinculados a dicho identificador. Algunos ejemplos de nombres que utilizan ciertos lenguajes de programación para nombrar sus cookies HTTP son JSESSIONID ( JSP ), PHPSESSID ( PHP ), CGISESSID ( CGI ) y ASPSESSIONID ( ASP ).
Gestión de sesiones
En la interacción persona-ordenador , la gestión de sesiones es el proceso de realizar un seguimiento de la actividad de un usuario a lo largo de las sesiones de interacción con el sistema informático .
Las tareas típicas de gestión de sesiones en un entorno de escritorio incluyen el seguimiento de las aplicaciones abiertas y los documentos que cada aplicación ha abierto, de modo que se pueda restaurar el mismo estado cuando el usuario cierre sesión y vuelva a iniciarla. En un sitio web, la gestión de sesiones podría implicar que el usuario tenga que volver a iniciar sesión si la sesión ha caducado (es decir, si ha transcurrido un tiempo determinado sin actividad del usuario). También se utiliza para almacenar información en el servidor entre solicitudes HTTP.
Gestión de sesiones de escritorio
Un gestor de sesiones de escritorio es un programa que permite guardar y restaurar sesiones de escritorio. Una sesión de escritorio comprende todas las ventanas que se están ejecutando y su contenido actual. En sistemas Linux , la gestión de sesiones la proporciona el gestor de sesiones X. En sistemas Microsoft Windows , la gestión de sesiones la proporciona el subsistema del gestor de sesiones (smss.exe); la funcionalidad de las sesiones de usuario puede ampliarse mediante aplicaciones de terceros como twinsplay .
Gestión de sesiones del navegador
La gestión de sesiones es especialmente útil en un navegador web , donde un usuario puede guardar todas las páginas abiertas y la configuración, y restaurarlas posteriormente o en un ordenador diferente (véase portabilidad de datos ).
Para ayudar a recuperarse de un fallo del sistema o de una aplicación, las páginas y la configuración también se pueden restaurar en la siguiente ejecución. Google Chrome , Mozilla Firefox , Internet Explorer , OmniWeb y Opera son ejemplos de navegadores web que admiten la gestión de sesiones. La gestión de sesiones se suele realizar mediante el uso de cookies .
Gestión de sesiones del servidor web
El Protocolo de Transferencia de Hipertexto (HTTP) no tiene estado. La gestión de sesiones es la técnica que utilizan los desarrolladores web para que el protocolo HTTP admita el estado de sesión. Por ejemplo, una vez que un usuario se ha autenticado en el servidor web, su siguiente solicitud HTTP (GET o POST) no debería provocar que el servidor web vuelva a solicitar su cuenta y contraseña. Para obtener más información sobre los métodos utilizados para lograr esto, consulte Cookie HTTP e ID de sesión.
En situaciones donde varios servidores web deben compartir información sobre el estado de la sesión (como suele ocurrir en un entorno de clúster ), la información de la sesión debe compartirse entre los nodos del clúster que ejecutan el software del servidor web. Los métodos para compartir el estado de la sesión entre nodos en un clúster incluyen: multidifusión de información de sesión a nodos miembros (consulte JGroups para ver un ejemplo de esta técnica), compartir información de sesión con un nodo asociado mediante memoria compartida distribuida o virtualización de memoria , compartir información de sesión entre nodos mediante sockets de red, almacenar información de sesión en un sistema de archivos compartido, como un sistema de archivos distribuido o un sistema de archivos global , o almacenar la información de sesión fuera del clúster en una base de datos .
Si la información de sesión se considera información transitoria y volátil que no es necesaria para la no repudiación de transacciones y no contiene datos sujetos a auditorías de cumplimiento (en EE. UU., por ejemplo, véanse la Ley de Portabilidad y Responsabilidad del Seguro Médico (HIPAA) y la Ley Sarbanes-Oxley como ejemplos de dos leyes que exigen auditorías de cumplimiento), entonces se puede utilizar cualquier método para almacenar dicha información. Sin embargo, si la información de sesión está sujeta a auditorías de cumplimiento, se debe considerar el método utilizado para el almacenamiento, la replicación y la agrupación de sesiones.
En una arquitectura orientada a servicios , las aplicaciones consumidoras pueden utilizar mensajes del Protocolo simple de acceso a objetos ( SOAP) , construidos con mensajes del Lenguaje de marcado extensible ( XML ), para que los servidores web creen sesiones.
Gestión de sesiones por SMS
Así como HTTP es un protocolo sin estado , también lo es SMS . Cuando SMS se volvió interoperable entre redes rivales en 1999, [ 2 ] y la mensajería de texto comenzó su ascenso para convertirse en una forma de comunicación global ubicua, [ 3 ] varias empresas se interesaron en utilizar el canal SMS con fines comerciales. Los servicios iniciales no requerían gestión de sesiones ya que eran comunicaciones unidireccionales (por ejemplo, en 2000, el primer servicio de noticias móviles se entregó a través de SMS en Finlandia ). Hoy en día, estas aplicaciones se denominan mensajería de aplicación a pares (A2P) en contraposición a la mensajería de pares a pares (P2P) . El desarrollo de aplicaciones empresariales interactivas requirió gestión de sesiones, pero debido a que SMS es un protocolo sin estado según lo definen los estándares GSM, [ 4 ] las primeras implementaciones se controlaban del lado del cliente haciendo que los usuarios finales ingresaran comandos e identificadores de servicio manualmente.
Véase también
Referencias
- ↑ Protocolo sin sesión y protocolo orientado a la sesión
- ↑ Directrices de mensajería entre operadores (PDF) , CTIA , consultado el 2 de junio de 2018
- ↑ ¡Feliz cumpleaños! BBC News World Edition, http://news.bbc.co.uk/2/hi/uk_news/2538083.stm 3 de diciembre de 2002.
- ↑ Documento GSM 28/85 "Servicios y funcionalidades que se prestarán en el sistema GSM" rev2, junio de 1985
Enlaces externos
- Sesiones de Doug Lea
- redes informáticas