Mejor respuesta
Sin estado significa que no tiene estado.
Tomemos un servidor web, por ejemplo. Puede ser con estado o sin estado.
Con estado significaría que el servidor almacena información de la sesión para identificar a un usuario en múltiples solicitudes posteriores. Si la sesión es válida, las solicitudes se realizarán correctamente.
Sin estado sería lo contrario. El servidor no almacenaría ningún estado, es decir, información de sesión para identificar al usuario en múltiples solicitudes posteriores. Cada solicitud debe incluir alguna forma de identificar al usuario. Una forma de lograrlo es utilizar un token (por ejemplo, un token web JSON u oAuth). Este token se enviaría con cada solicitud (generalmente en los encabezados de la solicitud).
Esto elimina la necesidad de que los servidores mantengan los datos de la sesión, lo que afecta la escalabilidad ya que, de lo contrario, moverse a varios servidores requiere compartir los datos de la sesión.
Respuesta
¿Alguna vez has oído hablar de algo llamado sesiones en el contexto de la Web?
Voy a explicar sin generalizar el concepto, sino apegándome a un encuentro más común que casi todos hemos tenido en Internet o WWW.
Los servidores con estado mantienen la información del estado del usuario en forma de sesiones. Esto es diferente de «iniciar sesión en su cuenta» en un sitio web. Hoy en día, la mayoría de los sitios web HTTP accesibles a través de WWW mantienen la información de la sesión del usuario. Por lo tanto, durante la ejecución de una sesión, todas sus solicitudes pertenecen a esa sesión en particular que se abrió cuando visitó por primera vez una página en ese sitio web. Generalmente, una sesión se termina solo cuando cierra su navegador. Mantener la información de la sesión ayuda al servidor web a ofrecer un servicio personalizado. Además, las sesiones también ayudan a monitorear el tráfico web concurrente en cualquier momento, ofrecen características de seguridad como prohibir a un usuario malintencionado que está tratando de desactivar el servidor enviando numerosas solicitudes al servidor (probablemente usando la misma sesión establecida). Por último, las sesiones se utilizan para «iniciar sesión» en el sitio web. Una vez que inicia sesión en el sitio web, el servicio web guarda su identificador único en la sesión que abrió y para todas sus solicitudes posteriores, el servidor web sabe que es usted quien accede al servicio.
Sin estado los servidores, por otro lado, no mantienen ninguna información de estado para el usuario. Cada solicitud es completamente independiente de la solicitud anterior. La arquitectura sin estado más común que utiliza HTTP es REST (Transferencia de estado REpresentacional) que se utiliza para diseñar API web. Los servidores sin estado aún pueden identificar al usuario si la solicitud al servicio incluye una identificación de usuario única que se asignó anteriormente al usuario. Pero esa identificación de usuario deberá pasarse en cada solicitud, a diferencia del caso de los servidores con estado que mantienen esta identificación de usuario en la sesión y los datos de la solicitud no necesariamente deben contener esta identificación.
A través de esta respuesta I He tratado de subrayar las principales diferencias entre los servidores con estado y sin estado. Las diferencias pueden extenderse a escenarios más generalizados.