Message Session Relay Protocol
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 RFC 4975 ↓. Komunikaty mogą być również przekazywane przez pośredników, z pomocą rozszerzeń zdefiniowanych w dokumencie RFC 4976 ↓.
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 RFC 3986 ↓, 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ź[1] 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 RFC 4975 ↓ 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ł RFC 6714 ↓ „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 library[2], 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
- ↑ RFC 3264 ↓.
- ↑ Strona internetowa MSRP Java peer library
.
Linki zewnętrzne
- B. Campbell, R. Mahy, C. Jennings, The Message Session Relay Protocol (MSRP), RFC 4975, IETF, wrzesień 2007, DOI: 10.17487/RFC4975, ISSN 2070-1721, OCLC 943595667 (ang.).
- C. Jennings, R. Mahy, A.B. Roach, Relay Extensions for the Message Sessions Relay Protocol (MSRP), RFC 4976, IETF, wrzesień 2007, DOI: 10.17487/RFC4976, ISSN 2070-1721, OCLC 943595667 (ang.).
- T. Berners-Lee, R. Fielding, L. Masinter, Uniform Resource Identifier (URI): Generic Syntax, STD 66, RFC 3986, IETF, styczeń 2005, DOI: 10.17487/RFC3986, ISSN 2070-1721, OCLC 943595667 (ang.).
- J. Rosenberg, H. Schulzrinne, An Offer/Answer Model with Session Description Protocol (SDP), RFC 3264, IETF, czerwiec 2002, DOI: 10.17487/RFC3264, ISSN 2070-1721, OCLC 943595667 (ang.).
- C. Holmberg, S. Blau, E. Burger, Connection Establishment for Media Anchoring (CEMA) for the Message Session Relay Protocol (MSRP), RFC 6714, IETF, sierpień 2012, DOI: 10.17487/RFC6714, ISSN 2070-1721, OCLC 943595667 (ang.).
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.