2011-04-29 4 views
20

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

ответ

11

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

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

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

0

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

32

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

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

Есть три способа это может быть достигнуто в HTTP:

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

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

с) В-третьих, «скрытые поля формы», в котором состояние посылается клиенту как часть ответа, и возвращается на сервер как часть скрытых данных из форм в

масштабируемостью и высокой доступности

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

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

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

see more here

1

HTTP является лицом без гражданства protocol.all веб-приложения являются лицами без гражданства. когда запрос отправляется на сервер, устанавливается соединение между клиентом и сервером, сервер получает запрос, обрабатывает запрос и отправляет ответ., и соединение закрывается. если отправляется другой запрос, он будет рассматриваться как новый запрос, и будет установлено новое соединение. , чтобы сделать http stateful. мы используем методы управления сеансом. , так что он использует данные, поступающие из предыдущего запроса при обработке настоящего запроса.i.e, он использует одно и то же соединение для ряда взаимодействий клиентского сервера. Методы управления сессиями: 1.покрытая форма поле 2.cookie 3.session 4.url-rewriting;

1

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

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

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

0

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

From this link

Смежные вопросы