Протокол передачи сеанса сообщений - Message Session Relay Protocol

В компьютерных сетях Протокол передачи сеанса сообщений (MSRP) - это протокол для передачи серии связанных мгновенных сообщений в контексте сеанса связи. Приложение создает экземпляр сеанса с Протокол описания сеанса (SDP) более Протокол инициирования сеанса (SIP) или другое рандеву методы.

Протокол MSRP определен в RFC 4975.[1] Сообщения MSRP также могут передаваться с использованием одноранговых посредников, с помощью расширений ретрансляции, определенных в RFC 4976.[2]

MSRP используется в RCS контекст, особенно для мгновенное сообщение, передача файла и делиться фотографиями Особенности.

Дизайн протокола

MSRP имеет синтаксис, аналогичный синтаксису других текстовых протоколов IETF, таких как SIP, HTTP и RTSP. Каждое сообщение является либо запросом, либо ответом, использует URI, сообщение содержит заголовки и тело, которое может нести любой тип данных, включая двоичную информацию. В отличие от SIP, MSRP намного проще. Первые 2 заголовка должны быть To-Path и From-Path, а последний должен иметь Content-Type, это значительно снижает сложность парсеров. Сообщения также должны заканчиваться 7 символами тире ('-'), за которыми следует идентификатор транзакции, который появляется в первой строке, за ними следует флаг продолжения, который представляет собой один символ и конец строки (CRLF). Эта последняя строка в конце сообщений позволяет довольно просто найти и определить границы сообщения. MSRP не определен для протоколов без подключения, таких как UDP, поэтому можно быть уверенным, что ответ на запрос поступит по тому же соединению. MSRP также полагается на надежный транспортный уровень, то есть гарантирует доставку и поддерживает порядок сообщений, что еще больше упрощает структуру протокола.

URI MSRP имеет схему (которая является "msrp" или "msrps"), полномочия, как определено RFC 3986, который содержит IP / доменное имя и, возможно, порт, необязательный идентификатор сеанса, транспорт и дополнительные необязательные параметры. Например:

msrp: //atlanta.example.com: 7654 / jshA7weztas; tcp

  • msrp это схема
  • atlanta.example.com:7654 это власть
  • jshA7weztas это идентификатор сеанса
  • tcp это транспорт

Использование в SIP

MSRP можно использовать в ГЛОТОК сессия:

Сеанс MSRP настраивается с помощью предложения-ответа SIP[3] модель. Тип носителя SDP m-line: сообщение и протокол либо TCP / MSRP для MSRP через TCP и TCP / TLS / MSRP для MSRP через безопасный TLS. Кроме того, URI MSRP указывается в дорожка атрибут.

Полный пример SDP, как это предусмотрено RFC:

v = 0o = alice 2890844526 2890844527 IN IP4 alice.example.coms = -c = IN IP4 alice.example.comt = 0 0m = сообщение 7394 TCP / MSRP * a = accept-types: text / plaina = path: msrp: / /alice.example.com:7394/2s93i9ek2a;tcp

Адрес и порт содержатся в строках c и m, а также в атрибуте пути на строке a. Как правило, другие типы носителей используют c-строку и m-строку для описания адреса и порта, но MSRP RFC 4975 раздел 8.1 говорит, что атрибут path является авторитетным источником для MSRP.

Реализации

Универсальная одноранговая библиотека с открытым исходным кодом реализована на следующих языках программирования:

Библиотеки

Клиенты

  • Мигать это кроссплатформенный SIP-клиент с поддержкой протокола MSRP.

Серверы

  • Реле MSRP имеет реализацию с открытым исходным кодом, написанную на Python, здесь.
  • Переключатель MSRP имеет реализацию с открытым исходным кодом, написанную на Python, здесь.
  • Kamailio SIP-сервер имеет встроенное реле MSRP с открытым исходным кодом, написанное на C, здесь.

Смотрите также

Рекомендации

  1. ^ RFC 4975, Протокол ретрансляции сеанса сообщений (MSRP), Б. Кэмпбелл (ред.), Р. Мэхи (ред.), К. Дженнингс (ред.), The Internet Society (сентябрь 2007 г.)
  2. ^ RFC 4976, Расширения ретрансляции для протокола ретрансляции сеанса сообщений (MSRP), К. Дженнингс (ред.), Р. Мэхи (ред.), А. Б. Роуч (ред.), The Internet Society (сентябрь 2007 г.)
  3. ^ RFC 3264, Модель предложения / ответа с протоколом описания сеанса (SDP), IETF, Интернет-сообщество (2002 г.)
  4. ^ [1] Веб-страница одноранговой библиотеки MSRP Java