HTTP - que es el protocolo de transporte real entre el servidor y el cliente - es "sin estado", ya que no recuerda nada entre invocaciones. CADA recurso al que se accede a través de HTTP es una solicitud única sin conexión entre ellos.Si carga una página web con un archivo HTML que contiene tres etiquetas <img>
que llegan al mismo servidor, habrá cuatro conexiones TCP negociadas y abiertas, cuatro transferencias de datos, cuatro conexiones cerradas. Simplemente no hay Estado mantiene en el servidor en el protocolo de nivel que tendrá el servidor saber nada de ti ya que vienen.
(Bueno, eso es cierto para HTTP hasta 1,0, en todo caso. HTTP 1.1 agrega persistentes mecanismos de conexión de varios tipos debido a los inevitables problemas de rendimiento que engendra un protocolo verdaderamente sin estado. Vamos a pasar por alto esto por el momento porque realmente no hacen HTTP con estado, simplemente lo vuelven sucio: sin estado en lugar de pura- sin estado.)
Para ayudarlo a comprender la diferencia, imagine que un protocolo como Telnet o SSH no tiene estado. Si desea obtener una lista de directorios de un archivo remoto, deberá, como una operación atómica, conectarse, iniciar sesión, cambiar al directorio y emitir el comando ls
. Cuando el comando ls
termina de mostrar los contenidos del directorio, la conexión se cierra. Si luego desea mostrar el contenido de un archivo específico, deberá volver a conectarse, iniciar sesión, cambiar al directorio y ahora emitir el comando cat
. Cuando finaliza el comando que muestra el archivo, la conexión se cierra nuevamente.
Cuando lo ves de esa manera, aunque el objetivo de Telnet/SSH, suena bastante estúpido, ¿no? Bueno, de alguna manera es y de alguna manera no lo es. Cuando un protocolo es sin estado, el servidor puede hacer optimizaciones bastante buenas y los datos se pueden distribuir fácilmente. Los servidores que usan protocolos sin estado pueden escalar de manera muy efectiva, así que mientras las transferencias de datos individuales pueden ser muy lentas (abrir y cerrar conexiones TCP NO es barato) un sistema general puede ser muy, muy eficiente y puede escalar a cualquier cantidad de usuarios.
Pero ...
Casi cualquier cosa que usted quiere hacer que no sea la visualización de páginas web estáticas implicará sesiones y estados. Cuando HTTP se utiliza para su propósito original (compartir información estática como documentos científicos), el protocolo sin estado tiene mucho sentido. Cuando empiezas a usarlo para cosas como aplicaciones web, tiendas en línea, etc., la apatridia comienza a ser una molestia porque se trata de actividades inherentemente con estado. Como resultado, las personas rápidamente descubrieron formas de unificar el estado sobre el protocolo sin estado. Estos mecanismos han incluido cosas como las cookies, como el estado de codificación en las URL y que el servidor active dinámicamente los datos, como las solicitudes de estado ocultas, como ... bueno, como un montón de cosas que incluyen las más modernas. cosas como Web Sockets.
Éstos son algunos enlaces se puede seguir para obtener una comprensión más profunda de los conceptos:
Danos alguna referencia de reserva/papel que estás estudiando. No entiendo por qué están conectando el estado de un protocolo de red con el estado de un objeto en una sola pregunta? ¿Dónde podemos encontrar esa información sobre Spring beans que usted mencionó? – Ritesh