Подтвердить что ты не робот

Протокол состояния и протокол состояния

Как понять протокол без учета состояния и протокол состояния? HTTP - протокол без учета состояния, а FTP - протокол с состоянием. Для веб-приложений, требующих большого количества взаимодействий, базовый протокол должен быть сдержанным. Правильно ли я понимаю?

4b9b3361

Ответ 1

Поскольку вы спрашиваете о веб-приложении, протокол всегда будет безстоящим - протокол для Интернета - http (или https), и все, что она написала.

Я думаю, что вы думаете о том, что вы предоставляете механизм состояния в своем веб-приложении. Типичный подход к этому заключается в том, что вы создаете уникальный идентификатор сеанса пользователя в своем веб-приложении (идентификатор сеанса той или иной формы является обычной практикой), который передается между браузером и сервером. Обычно это делается в файле cookie, хотя это может быть сделано, с немного более сложными для вас в зависимости от вашей платформы/структуры, и от URL-адреса.

В вашем серверном коде хранится информация о состоянии (опять же, обычно называемая сеансом пользователя), однако он хочет использовать sessionID для поиска. Трафик http просто передает идентификатор сессии. Пока этот идентификатор существует, каждая транзакция http полностью независима от всех остальных, поэтому сам трафик протокола не имеет статуса.

Ответ 2

HTTP - это протокол без учета состояния, другими словами сервер забудет все, что связано с состоянием клиента/браузера. Хотя веб-приложения сделали его практически похожим на состояние.

Протокол без состояния может быть принудительно вести себя так, как если бы он был с точки зрения состояния. Это может быть выполнено, если сервер отправляет состояние клиенту, и если клиент отправляет его обратно на сервер, каждый раз.

В HTTP можно выполнить три способа:

a) Один из них - это файлы cookie, и в этом случае состояние отправляется и возвращается в заголовках HTTP.

b) Второй является расширением URL-адреса, и в этом случае состояние отправляется как часть URL-адреса в качестве ответа.

c) Третий - это "скрытые поля формы", в которых состояние отправляется клиенту как часть ответа и возвращается на сервер как часть скрытых данных формы

СКОРОСТЬ И ВЫСОКАЯ ДОСТУПНОСТЬ

Одной из основных причин, по которой HTTP так хорошо масштабируется, является ее безгражданство. Протокол без учета состояния облегчает проблему репликации, поскольку само государство не нужно хранить на сервере.

Протоколы с полномочиями логически тяжелы для надежного внедрения в Интернете. Серверы без учета состояния также легко масштабируемы, в то время как для обеспечения работоспособности серверов масштабируемость является проблематичной. Запрос без сохранения состояния может быть отправлен в любой node в любое время, в то время как с Stateful это не так.

HTTP по протоколу Stateless увеличивает доступность для веб-приложений без состояния, что в противном случае было бы трудно или невозможно реализовать. Если соединение потеряно, отсутствует состояние, которое потеряно, простой запрос resend решит проблему. Запросы без учета состояния также могут быть кэшируемыми.

подробнее см. здесь

Ответ 3

HTTP является stateless protocol. Все веб-приложения также являются stateless.

Когда запрос отправляется на сервер, между клиентом и сервером устанавливается соединение. Сервер получает запрос, обрабатывает запрос и отправляет ответ, а затем соединение будет закрыто.

Если будет отправлен другой запрос, после этого он будет рассматриваться как новый запрос, и будет установлено новое соединение.

Чтобы сделать HTTP stateful, мы используем методы управления сессиями. Таким образом, он использует данные, поступающие из предыдущего запроса, при обработке текущего запроса, т.е. он использует то же соединение для серии взаимодействий клиент-сервер.

Методы управления сеансами:

  1. скрытое поле формы
  2. печенье
  3. сессия
  4. URL переписывания

Ответ 4

Твой вопрос на месте, и да, было бы здорово, если бы ваши интернет-транзакции с вашим банком были сделаны через соединение с состоянием. Увы, HTTP не имеет гражданства из-за причудливой ошибки в FTP и 12 ограничений сокета в частичной таблице сокетов в BSD 1989 года. Маркус Ранум объяснил все это здесь.

Таким образом, HTTP отбрасывает состояние, которое он наследует от TCP, и должен воссоздать состояние на уровне приложения в виде файлов cookie. Результатом является crappy internet security.

Проект Seif предлагает исправить все это, используя "безопасный JSON через TCP". DNS и органы сертификации не требуются. Протокол и seifnode.js завершены и на github с лицензией MIT.

Ответ 5

  HTTP не "наследует" от TCP, а использует его для транспорта. HTTP использует TCP для соединения с состоянием, но затем отключается. Позже он подключится снова, если это необходимо. Поэтому, просматривая веб-сайт, вы создаете много разных соединений. Каждое из этих подключений является состоянием, но разговор в целом - нет, так как вы прерываете соединение с каждым разговором.

По этой ссылке

Ответ 6

В принципе, да, но у вас нет выбора, кроме использования HTTP, в котором находятся веб-сайты. Таким образом, вам приходится иметь дело с компромиссами, чтобы сделать HTTP stateful, иначе управление сеансом. Возможности в основном передают идентификатор сеанса через каждый вызов в URL-адресе, поэтому вы знаете, когда разговариваете с кем-то, о котором вы говорили раньше, или с помощью файлов cookie, которые достигают той же цели, не загромождая URL. Однако большинство современных языков веб-разработки заботятся об этом; если вы google для выбранного вами языка + "управление сеансами", вы должны получить некоторые идеи о том, как это сделать.