Protocolo sem estado
Em computação, um protocolo sem estado (do inglês stateless) é um protocolo de comunicação que considera cada requisição como uma transação independente que não está relacionada a qualquer requisição anterior, de forma que a comunicação consista de pares de requisição e resposta independentes. Um protocolo sem estado não requer que o servidor retenha informação ou estado de sessão sobre cada parceiro de comunicação para a duração de várias requisições. Em contraste, um protocolo que exija a manutenção do estado interno no servidor é conhecido como um protocolo com estado.
Exemplos de protocolos sem estado incluem o Protocolo de Internet (IP), que é a base para a Internet, e o Hypertext Transfer Protocol (HTTP), que é a base da comunicação de dados para a World Wide Web.
Exemplos
[editar | editar código-fonte]Um exemplo de um protocolo sem estado é o HTTP.[1] Este protocolo não prevê nenhum meio de armazenamento de dados de um usuário entre as solicitações.
Compare isso com um servidor FTP tradicional que realiza uma sessão interativa com o usuário. Durante a sessão, o usuário é provido com um meio para ser autenticado e definir várias variáveis (diretório de trabalho, modo de transferência), todos armazenados no servidor como parte do estado do usuário.
Vantagens e desvantagens
[editar | editar código-fonte]O design sem estado simplifica o projeto do servidor, pois não há necessidade de alocar armazenamento dinamicamente para lidar com conversas em andamento. Se um cliente morre no meio de uma transação, nenhuma parte do sistema precisa ser responsável pela limpeza do estado atual do servidor.
Uma desvantagem do design sem estado é que pode ser necessário incluir informação adicional em cada requisição, e esta informação adicional será necessária para ser interpretada pelo servidor.
Empilhamento das camadas de protocolo sem estado e com estado
[editar | editar código-fonte]Pode haver interações complexas entre protocolos com estado e sem estado entre as diferentes camadas de protocolo. Por exemplo, o HTTP é um exemplo de um protocolo sem estado no topo da camada TCP, um protocolo com estado, que está no topo da camada IP, outro protocolo sem estado, que é roteado em uma rede que utiliza BGP, um outro protocolo com estado, para direcionar os pacotes IP que trafegam na rede.
Este empilhamento de camadas continua mesmo acima do HTTP.[2] Como uma forma de contornar a falta de uma camada de sessão no HTTP, os servidores HTTP implementam vários métodos de gerenciamento de sessão, geralmente utilizando um identificador único em um cookie ou parâmetro que permite que o servidor rastreie as solicitações provenientes de um mesmo cliente, e efetivamente cria um protocolo com estado no topo do HTTP.
Referências
- ↑ http://www.w3.org/Protocols/rfc2616/rfc2616.html
- ↑ «métodos de gerenciamento de sessão revisados». C cookie bits. Toronto. Consultado em 12 de abril de 2011.
O material a seguir tem a intenção de apresentar ao leitor as várias técnicas que os desenvolvedores têm usado para implementar o rastreamento de sessão na web. As principais características operacionais de cada um dos métodos são mencionadas para além das deficiências que têm sido observadas na utilização. Informações adicionais sobre o gerenciamento de sessão podem ser encontrada através de pesquisa na Internet. […]