Message Session Relay Protocol (MSRP) jest protokołem stosowanym w sieciach komputerowych do transmisji sekwencji powiązanych wiadomości w kontekście sesji komunikacyjnej. Aplikacja może utworzyć (zestawić) sesję za pomocą Session Description Protocol (tzw. SDP), z użyciem Session Initiation Protocol (tzw. SIP), lub gamy innych metod konfiguracji sieci, najczęściej dostępny portem TCP nr 2855.

Protokół MSRP jest zdefiniowany w dokumencie . Komunikaty mogą być również przekazywane przez pośredników, z pomocą rozszerzeń zdefiniowanych w dokumencie .

MSRP jest używany w kontekście RCS (joyn), szczególnie dla usług wiadomości błyskawicznych, transferu plików i udostępniania zdjęć.

Architektura MSRP MSRP ma podobną składnię (syntax), jak i inne protokoły tekstowe udokumentowane przez Internet Engineering Task Force (IETF), takie jak np. SIP, HTTP, czy RTSP.

Każdy komunikat jest albo zapytaniem, albo odpowiedzią (REQUEST-RESPONSE). URI są używane, komunikat zawiera nagłówki i sekcję body, które może przyjąć dowolny typ danych, w tym dane binarne. W odróżnieniu od SIP, MSRP jest bardziej uproszczone. Pierwsze 2 nagłówki zawsze są następujące To-Path i From-Path, a ostatni musi określać Content-Type (typ zawartości), to znacznie zmniejsza złożoność dla parserów. Możliwe są również:

Message-ID Success-Report Failure-Report Byte-Range Status

Komunikaty muszą kończyć się 7-ma znakami myślnika („ – „), a następnie identyfikatorem transakcji, który pojawia się w pierwszej linijce, następnie flagą kontynuacji, oraz znakiem końca wiersza (CRLF). Tak standaryzowana ostatnia linia na końcu komunikatu sprawia, że jest prosto odkryć granice komunikatu. MSRP nie jest zdefiniowany do działania w CL-mode (tzw. Connectionless communication, jak np. UDP), więc nie zapewnia, że odpowiedź na zapytanie przybędzie w trakcie tego samego połączenia. MSRP również zależy od niezawodności w warstwie transportowej (vide Model OSI), to jest: gwarantuje dostawy i utrzymuje kolejność komunikatów, co jeszcze bardziej upraszcza design całego protokołu.

Stosowane są dwie metody zapytań: SEND REPORT

Adresy URI dla MSRP jak to określono , są schematyczne, tj. zaczynają się od „msrp://” lub „msrps://”, oraz zawierają adres IP/nazwę organu (organizacji), opcjonalnie: numer portu, identyfikator sesji, i dodatkowe parametry.

Przykład msrp://atlanta.example.com:7531/jshA7weztas;tcp msrp jest schematem atlanta.example.com jest adresem (organizacja) 7351 jest numerem użytego portu jshA7weztas jest identyfikatorem sesji tcp określono protokół transportowy

Użytkowanie w SIP MSRP może być stosowany w sesjach SIP: wiadomości błyskawiczne w trybie jeden do jednego lub jeden do wielu aby przesłać pliki w komunikatorach, przesyłkę slajdu prezentacji niektóre aplikacje do udostępniania zdjęć (np. Image Share) na podstawie wcześniejszego podziału funkcji między użytkownikami końcowymi Sesja MSRP jest zestawiana przez model oferta-odpowiedź Protokół Deskrypcji Sesji (SDP), określa typ medium w linii „m” jako message (komunikat), w kolejnym miejscu protokół jako TCP/MSRP dla MSRP przez TCP, oraz jako TCP/TLS/MSRP dla bezpiecznego protokołu TLS.

Ponadto w atrybucie path podany jest jeden lub więcej adresów URI urządzeń MSRP przez które przechodzi komunikat.

Pełny przykład SDP, jak jest to podane w dokumencie RFC: v=0 o=alice 2890844526 2890844527 IN IP4 alice.example.com s= – c=IN IP4 alice.example.com t=0 0 m=message 7531 TCP/MSRP * a=accept-types:text/plain a=path:msrp://alice.example.com:7531/2s93i9ek2a;tcp

MSRP zawiera adres i port, a w tym samym czasie wiersz c (c-line) zawiera adres, oraz wiersz m (m-line) zawiera port, to jest przyczyną niejasności. Generalnie, inne typy nośników (mediów) używają wiersza c (c-line) i m (m-line) by opisać adres, jednak MSRP stanowi, że informacja ta została wyspecyfikowana również jako atrybut path. To może spowodować, że niektóre urządzenia nieprawidłowo zestawią sesję, w szczególności działające w B2BUA (Back-to-back user agent) wymaga, aby zmienić atrybut path każdemu komunikatowi MSRP w kolejce a wysyłanemu do różnych urządzeń. Aby przezwyciężyć to, artykuł „CEMA for MSRP” zmienia sposób w jaki urządzenia świadome CEMA (Connection Establishment for Media Anchoring) korzystają z SDP, który rozwiązał problem wybudzenia tych urządzeń, za pomocą atrybutu (msrp-cema), oraz podjął kroki pogłębiające kwestie bezpieczeństwa i wydajności takich integracji.

Implementacje Wspólna i otwarta biblioteka jest zaimplementowana w różnych językach programowania:

Biblioteki Java MSRP Peer libraryStrona internetowa MSRP Java peer library., na następujące porty: C#/.Net Java ME Python MSRPlib Centralized Conferencing framework (Sourceforge)

Klienci Blink to cross-platformowy klient SIP z supportem protokołu MSRP. Wireshark narzędzie monitorujące ruch sieciowy

Serwery Przekaźnik MSRP ma swoją implementację (open source) napisaną w Pythonie, tutaj. Switch MSRP również ma implementację (open source), napisaną w Pythonie, tutaj. Kamailio (serwer SIP) ma wbudowany przekaźnik (open source) do MSRP, napisany w C, tutaj.

Przypisy

Linki zewnętrzne

Kategoria:Protokoły sieciowe