WebSocket — протокол полнодуплексной двунаправленной связи

Обмен сообщениями между браузером и веб-сервером в режиме реального времени. История открытия канала WebSocket. Ответ сервера, подтверждающий переход на WebSocket. Защита от поддельных запросов. Функция обратного вызова при установлении соединения.

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 22.05.2015
Размер файла 18,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Реферат

WebSocket

WebSocket -- протокол полнодуплексной двунаправленной связи поверх TCP соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени.

В настоящее время в W3C происходит стандартизация API Web Sockets, а в IETF находится на утверждении стандарт протокола Web Socket.

Открытие канала WebSocket

Для установления соединения WebSocket клиент и сервер используют протокол, похожий на HTTP. Клиент формирует особый HTTP-запрос, на который сервер отвечает специальным образом.

Протокол 75

До редакции черновика протокола номер 75 включительно соединение WebSocket устанавливалось следующим образом. Запрос клиента:

GET /demo HTTP/1.1

Upgrade: WebSocket

Connection: Upgrade

Host: example.com

Origin: http://example.com

WebSocket-Protocol: sample

Ответ сервера, подтверждающий переход на WebSocket:

HTTP/1.1 101 Web Socket Protocol Handshake

Upgrade: WebSocket

Connection: Upgrade

WebSocket-Origin: http://example.com

WebSocket-Location: ws://example.com/demo

WebSocket-Protocol: sample

Сразу после отправки ответа WebSocket соединение считается установленным, клиент и сервер могут начинать двунаправленный обмен сообщениями по этому же TCP-соединению. Для передачи текстового сообщения (в формате UTF-8) необходимо перед ним передать нулевой байт, а после -- байт со значением 255.

Протокол 76

Начиная с 2 июня 2010 года в протокол WebSocket были внесены изменения, изменившие процедуру установления соединения WebSocket без сохранения обратной совместимости. В 76-ой редакции черновика протокола WebSocket добавлена защита от поддельных запросов. Клиент, поддерживающий новую схему, присылает следующий запрос:

GET /demo HTTP/1.1

Upgrade: WebSocket

Connection: Upgrade

Sec-WebSocket-Key2: 4 @1 46546xW%0l 1 5

Host: example.com

Sec-WebSocket-Key1: 12998 5 Y3 1 .P00

Origin: http://example.com

WebSocket-Protocol: sample

^n:ds[4U

В запрос добавлены новые заголовки "Sec-WebSocket-Key1" и "Sec-WebSocket-Key2" и 8-байтовое тело запроса. Все они генерируются клиентом случайным образом.

Ответ сервера, подтверждающий переход на WebSocket:

HTTP/1.1 101 Web Socket Protocol Handshake

Upgrade: WebSocket

Connection: Upgrade

Sec-WebSocket-Origin: http://example.com

Sec-WebSocket-Location: ws://example.com/demo

Sec-WebSocket-Protocol: sample

8jKS'y:G*Co,Wxa-

Ответ содержит новые названия заголовков ("Sec-WebSocket-Origin","Sec-WebSocket-Location","Sec-WebSocket-Protocol" вместо "WebSocket-Origin", "WebSocket-Location","WebSocket-Protocol") и 16-байтное тело ответа, вычисляемое следующим образом:

из строки со значением заголовка запроса Sec-WebSocket-Key1 исключить все символы, не являющиеся цифрами (не попадающие в диапазон '0'..'9');

полученную строку превратить в 64-битное целое число (для примера выше получим 1299853100);

полученное число разделить целочисленным делением на количество пробелов в исходной строке со значением заголовка;

полученное число представить в виде 4-х байтового 32-битного числа в формате big endian: старший байт хранится по нулевому смещению;

проделать то же самое с заголовком Sec-WebSocket-Key2;

интерпретируя числа из пунктов 4) и 5) как 4-х байтовые строки, конкатенировать их (сложить в одну строку) и добавить как строку тело запроса;

вычислить от полученной 16-байтной строки значение MD5 и записать это значение в тело ответа "как есть", без преобразования в какое-либо представление;

Примечания.

Несмотря на "похожесть" новых запросов и ответов на запросы и ответы протокола HTTP, они таковыми не являются. Например, в запросе есть тело, но в заголовках поле "Content-Length" отсутствует (что нарушает соглашения HTTP).

Серверной части следует поддерживать оба вида клиентов и отличать их по наличию или отсутствию в запросе заголовков Sec-WebSocket-Key1 и Sec-WebSocket-Key2.

Протокол 07

В 07-ой версии черновика протокола от 22 апреля 2011 были внесены изменения. Клиент присылает следующий запрос:

GET /chat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

Sec-WebSocket-Origin: http://example.com

Sec-WebSocket-Protocol: chat, superchat

Sec-WebSocket-Version: 7

Ответ сервера имеет следующий вид:

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Sec-WebSocket-Protocol: chat

Ответ содержит заголовок Sec-WebSocket-Protocol с единственным протоколом, выбранным сервером (chat) из всех поддерживаемых клиентом (chat, superchat). Заголовок Sec-WebSocket-Accept формируется следующим образом:

взять строковое значение из заголовка Sec-WebSocket-Key и сконкатенировать со строкой 258EAFA5-E914-47DA-95CA-C5AB0DC85B11 (в приведённом примере получится dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11)

вычислить хеш SHA-1 от полученой строки (получится 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea)

закодировать хеш в base64 (s3pPLMBiTxaQ9kYGzzhZRbK+xOo=)

Схема URL

Протокол Web Socket определяет две URI схемы, ws: (нешифрованное соединение) и wss: (шифрованное соединение).

Реализация WebSocket в браузерах

Для установки соединения скрипт создает новый объект WebSocket, которому в параметре передает WebSocket URI и определяет функции обратного вызова при установлении соединения, получении сообщения и разрыве соединения.

<html>

<head>

<script>

var webSocket = new WebSocket('ws://localhost/echo');

webSocket.onopen = function(event) {

alert('onopen');

webSocket.send("Hello Web Socket!");

};

webSocket.onmessage = function(event) {

alert('onmessage, ' + event.data);

webSocket.close();

};

webSocket.onclose = function(event) {

alert('onclose');

};

</script>

</head>

<body>

</body>

</html>

В настоящее время WebSocket поддерживается в следующих браузерах:

Google Chrome (начиная с версии 4.0.249.0);

Apple Safari (начиная с версии 5.0.7533.16);

Mozilla Firefox (начиная с версии 4);

Opera (начиная с версии 10.70 9067);

В конце ноября 2010 Adam Barth опубликовал результаты исследования надежности используемого протокола. По его результатам выяснилось, что в случае использования прозрачных прокси-серверов, возможна подмена кеша передаваемых данных с тем, что пользователи вместо реальных данных будут получать версию данных от злоумышленника. Проблема оказалась довольно серьезной для того, чтобы разработчики Firefox и Opera объявили, что до устранения проблем в будущих версиях их браузеров поддержка веб-сокетов будет закрыта, хотя осталась возможность их включить.

браузер сервер запрос

Размещено на Allbest.ru


Подобные документы

  • Проведение тестирования производительности Node.js сервера в зависимости от количества и интенсивности подключений, анализ данных. Аппаратные и программные компоненты тестового стенда. Принцип работы протокола websocket. Серверная часть приложения.

    курсовая работа [3,8 M], добавлен 07.07.2013

  • Основные операции обмена, реализованные в спецификации MPI. Обобщенный механизм блокирующих и неблокирующих обменов. Функции управления дополнительным буфером. Функция блокировки процесса до завершения приема или передачи в неблокирующем режиме.

    лекция [183,2 K], добавлен 22.10.2014

  • Специфіка діяльності систем віддаленого моніторингу та управління комп'ютером. Технології розробки систем моніторингу і управління та різноманітність мов програмування. Аналіз предметної області, структури додатку. Робота с XML, JSON та WebSocket.

    дипломная работа [2,9 M], добавлен 08.06.2015

  • Протокол для поддержания системы передачи сообщений, обеспечение непрерывной работы SMTP-сервера. Примеры использования команды LIST, работа через протокол POP3, особенности авторизации. Условия работы режима "обновление". Пример сеанса с POP3 сервером.

    реферат [16,1 K], добавлен 03.05.2010

  • Разработка клиентской и серверной частей программы, осуществляющей обмен текстовыми сообщениями между удаленными компьютерами локальной сети. Ключевые элементы управления программой, ее листинг и тестирование. Использование систем защиты информации.

    курсовая работа [1,9 M], добавлен 18.12.2011

  • Электронная почта – средство обмена информацией; администрирование почтового сервера. Протоколы принудительной доставки почты. Создание и настройка виртуального сервера, параметры его конфигурации. Управление входящими сообщениями и почтовыми ящиками.

    презентация [296,8 K], добавлен 10.11.2013

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

    лабораторная работа [674,8 K], добавлен 15.02.2009

  • Просмотр, запись и чтение данных буфера обмена. Динамический обмен данными (DDE), способы его организации. Атомы в Windows, их понятие и функции. Особенности задания параметра lParam сообщений DDE. Обмен и передача данных между клиентом и сервером.

    лекция [303,7 K], добавлен 24.06.2009

  • Структура и характеристики незащищенной сети. Анализ угроз и уязвимостей локальной вычислительной сети. Технология, компоненты и сервисы ViPNet. Организация защищенного канала между несколькими ЛВС через Internet и туннелей на однокарточных координаторах.

    курсовая работа [586,0 K], добавлен 23.06.2011

  • Обмен данными между различными программами. Способы передачи сообщений и обработки ошибок в сети. Обмен данными между маршрутизаторами. Основное преимущество LonWorks. Практика применения протоколов BAC-NET, LONWORKS и KNX в странах Европы и России.

    курсовая работа [76,7 K], добавлен 07.05.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.