Протокол WebSocket перешёл на стадию "предложенного стандарта" Интернет

Комитет 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 6455, который продвигается в паре с 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).

©  OpenNet