Протокол без сохранения состояния — это протокол связи , в котором получатель не должен сохранять состояние сеанса из предыдущих запросов. Отправитель передает соответствующее состояние сеанса получателю таким образом, что каждый запрос может быть понят изолированно, то есть без ссылки на состояние сеанса из предыдущих запросов, сохраненных получателем. [1]
Напротив, протокол с отслеживанием состояния — это протокол связи, в котором получатель может сохранять состояние сеанса из предыдущих запросов.
В компьютерных сетях примерами протоколов без сохранения состояния являются Интернет-протокол (IP), который является основой Интернета , и Протокол передачи гипертекста (HTTP), который является основой Всемирной паутины . Примерами протоколов с сохранением состояния являются Протокол управления передачей (TCP) и Протокол передачи файлов (FTP).
Протоколы без сохранения состояния улучшают свойства видимости, надежности и масштабируемости. Видимость улучшается, поскольку системе мониторинга не нужно смотреть дальше одного запроса, чтобы определить его полную природу. Надежность улучшается, поскольку она облегчает задачу восстановления после частичных сбоев. Масштабируемость улучшается, поскольку отсутствие необходимости хранить состояние сеанса между запросами позволяет серверу быстро освобождать ресурсы и еще больше упрощает реализацию.
Недостатком протоколов без сохранения состояния является то, что они могут снизить производительность сети за счет увеличения объема повторяющихся данных, отправляемых в серии запросов, поскольку эти данные нельзя оставить на сервере и использовать повторно.
HTTP- сервер может понимать каждый запрос изолированно. [2]
Сравните это с традиционным FTP- сервером, который проводит интерактивный сеанс с пользователем. Во время сеанса пользователю предоставляется возможность пройти аутентификацию и задать различные переменные (рабочий каталог, режим передачи), все это хранится на сервере как часть состояния сеанса.
Между протоколами с сохранением и без сохранения состояния могут быть сложные взаимодействия между различными уровнями протоколов. Например, HTTP, протокол без сохранения состояния, располагается поверх TCP , протокола с сохранением состояния, который располагается поверх IP , другого протокола без сохранения состояния, который маршрутизируется в сети, использующей BGP , другой протокол с сохранением состояния, для направления IP-пакетов, проходящих по сети.
Это наложение слоев продолжается даже выше HTTP. В качестве обходного пути для отсутствия сохраненного состояния сеанса HTTP-серверы реализуют различные методы управления сеансами , [3] обычно используя идентификатор сеанса в HTTP-cookie, ссылающемся на состояние сеанса, сохраненное на сервере, эффективно создавая протокол с сохранением состояния поверх HTTP. [4] HTTP-cookie нарушают архитектурный стиль REST , поскольку даже без ссылки на состояние сеанса, сохраненное на сервере, они независимы [ требуется разъяснение ] от состояния сеанса (они влияют на предыдущие страницы того же веб-сайта в истории браузера) и не имеют определенной семантики. [5]
Следующий материал предназначен для того, чтобы познакомить читателя с различными методами, которые разработчики использовали для реализации отслеживания сеансов в Интернете. Упоминаются основные эксплуатационные характеристики каждого метода в дополнение к недостаткам, которые были замечены при использовании. Дополнительную информацию об управлении сеансами можно найти, выполнив поиск в Интернете. […]