Протокол WebSocket перешёл на стадию «предложенного стандарта» Интернет
13 декабря 2011 года
Комитет IETF, занимающийся развитием протоколов и архитектуры Интернет, объявил о публикации RFC 6455 с описанием протокола WebSocket, который после серии черновых версий получил статус "Предложенного стандарта" (Proposed Standard). На текущей стадии спецификация на протокол WebSocket, претендующего на роль стандарта Интернет, уже избавилась от наблюдаемой ранее незавершённости, например, связанной с определением метода надёжного блокирования атак, ориентированных на подмену кэша.
Переход протокола WebSocket на стадию "Предложенного стандарта" занял полтора года - первый черновик представленного RFC был опубликован ещё в мае 2010 года, после чего было выпущено 17 редакций документа. Следующей стадией развития RFC является придание статуса чернового стандарта (Draft Standard), по сути означающего полную стабилизацию протокола и учёт всех высказанных замечаний. На стадии чернового стандарта находятся большинство протоколов сети; лишь единицы после многих лет существования достигают наивысшего статуса - стандарт Интернета (всего статус стандарта получили около 70 RFC).
Протокол WebSocket разработан два года назад компанией Google для решения проблемы с организацией двустороннего надёжного обмена данными между web-приложением и сервером. По своей сути WebSockets является своеобразным аналогом TCP для Web и позволяет в произвольном порядке инициировать отправку данных от сервера к web-приложению, а не только от web-приложения к серверу. Для аутентификации и обеспечения безопасности передачи данных в Web Sockets используются стандартные механизмы браузера. Сам протокол не использует "сырые" TCP-соединения или множественные HTTP-запросы, вместо этого постоянное соединение поддерживается в рамках единого с HTTP канала передачи данных, по которому не передаётся лишних HTTP-заголовков. Установив WebSocket-соединение между сервером и клиентом, разработчик может отправить данные из web-браузера при помощи метода send() и получить отправленные со стороны сервера данные через установку специального обработчика событий.
Модель безопасности WebSockets базируется на механизме "Web Origin", который используется для определения доверительной области и ограничения полномочий браузеров при запросе внешних ресурсов, в частности - для защиты от CSRF-атак. Технология основана на идее изоляции браузером контента, полученного из разных источников с целью предотвращения злоупотребления влияния одного веб-сайта на операции с другим сайтом. Дополнительно описывается HTTP-заголовок "Origin", созданный для определения источника, ассоциированного с HTTP-запросом. Концепция "Web Origin" определена в RFC 6454, который продвигается в паре с RFC 6455, определяющем протокол WebSocket.
Альтернативные методы организации постоянно доступного канала связи с сервером излишне усложнены и неэффективны, так как основываются на периодической отправке проверяющих состояние запросов через метод XMLHttpRequests, на манипуляциях с iframe или на искусственном удержании HTTP-соединения в открытом состоянии. WebSocket обходится открытием одного активного соединения с сервером, что существенно снижает нагрузку, но требует обеспечения поддержки протокола на стороне клиента и сервера.
В настоящее время поддержка WebSocket уже реализована в большинстве современных браузеров, включая Opera, Firefox, Safari и Chrome. Поддержка WebSocket в Internet Explorer ожидается в версии 10, до этого момента можно использовать специальное дополнение или универсальную реализацию протокола на языке JavaScript, использующую функции Adobe Flash для создания постоянного канала связи. Компоненты для поддержки WebSocket на стороне сервера представлены на языках Python, PHP, Perl, Си, JavaScript (node.js), Java ( jwebsocket, GWT).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.