Message Session Relay Protocol
MSRP (англ. Message Session Relay Protocol) - протокол передачи последовательности связанных мгновенных сообщений в рамках сеанса связи. Приложение создает сеанс c SDP протоколом через протокол установления сеанса SIP.
MSRP протокол определен в RFC 4975. MSPR сообщения могут также передаваться с помощью посредников, при подключении расширений, определенных в RFC 4976.
MSRP используется в RCS для обмена мгновенными сообщениями, передачи файлов и обмена фотографиями.
Конструкция протокола
MSRP имеет схожий синтаксис с другими IETF протоколами, такими как SIP, HTTP и RTSP. Каждое сообщение запроса или ответа, использует идентификаторы URI. Сообщение содержит заголовок и тело, которое может содержать любой тип данных, включая двоичные данные. В отличие от SIP, MSRP протокол гораздо проще. Первых два заголовка должны содержать путь назначения и путь отправки, a последний - тип содержимого, что значительно снижает трудоемкость разбора сообщения. Сообщения должны заканчиваться семью символами тире ('-'). С помощью последней строчки сообщения становится намного проще определить его границы. MSRP не определен для протоколов без установления соединения, таких как UDP, таким образом можно быть уверенным, что ответ на запрос будет прибывать в том же соединении. MSRP использует надежный транспортный уровень, то есть, гарантирует доставку и поддерживает порядок сообщений, что еще больше упрощает структуру протокола.
Конструкция: MSRP URI (который является "msrp" или "msrps"), адрес, определенный в RFC 3986, который содержит IP-адрес/доменное имя и порт, опциональный идентификатор сессии, протокол передачи данных и дополнительные необязательные параметры. Например:
msrp://atlanta.example.com:7654/jshA7weztas;tcp
- msrp - URI
- atlanta.example.com:7654 - адрес
- jshA7weztas - идентификатор сессии
- tcp -протокол передачи данных
Использование в SIP
MSRP могут быть использованы в рамках протокола SIP сессии:
- для мгновенного обмена сообщениями в режимах один-к-одному или один-ко-многим
- для передачи файлов
- для фотографий общего доступа (например, поделиться изображением)
Полный SDP пример, как это предусмотрено в документе RFC:
v=0 o=alice 2890844526 2890844527 IN IP4 alice.example.com s= - c=IN IP4 alice.example.com t=0 0 m=message 7394 TCP/MSRP * a=accept-types:text/plain a=path:msrp://alice.example.com:7394/2s93i9ek2a;tcp
Реализации
Библиотека с открытым исходным кодом реализована в следующих языках программирования:
Библиотеки
- Java's MSRP Peer library, которая была портирована на другие языки программирования:
- C#/.Net version
- Java ME
- Python MSRPlib
Клиенты
- Blink - это кроссплатформенный SIP-клиент с поддержкой протокола MSRP.
Сервера
- MSRP сервер имеет реализацию с открытым исходным кодом, написанным на Python.
Ссылки
См. также
- SIMPLE
- Session Initiation Protocol (SIP)
- IP Multimedia Subsystem (IMS)
- Rich Communication Suite (RCS)