XMPP - XMPP

XMPP
XMPP logo.svg
Nemzetközi szabvány RFC 6120 (Core) (2011)

RFC 6121 (IM és jelenlét) (2011)
RFC 7622 (Címformátum) (2015)
RFC 3922 (CPIM) (2004)

RFC 3923 (titkosítás) (2004)
Bemutatott 1999 ; 22 évvel ezelőtt ( 1999 )
Ipar Azonnali üzenetküldés
Weboldal www .xmpp .org

A bővíthető üzenetküldési és jelenléti protokoll ( XMPP , eredeti nevén Jabber ) egy nyílt kommunikációs protokoll, amelyet azonnali üzenetküldésre (IM), jelenléti információkra és a névjegyzék karbantartására terveztek . Az XML (Extensible Markup Language) alapján lehetővé teszi a strukturált adatok közel valós idejű cseréjét két vagy több hálózati entitás között. A kiterjeszthető protokoll a hagyományos IM-en kívül számos alkalmazást kínál az üzenetorientált köztes szoftverek szélesebb körében , beleértve a VoIP , video,fájlátvitel , játék és egyéb felhasználások.

Ellentétben a legtöbb kereskedelmi azonnali üzenetküldő protokollal, az XMPP -t nyílt szabvány határozza meg az alkalmazásrétegben . Az XMPP hálózat felépítése hasonló az e -mailhez ; bárki futtathatja saját XMPP szerverét, és nincs központi mester szerver. Ez az összevont nyílt rendszer -megközelítés lehetővé teszi a felhasználók számára, hogy együttműködjenek másokkal bármely szerveren egy JID felhasználói fiók használatával, hasonlóan az e -mail címhez. Az XMPP implementációk bármilyen szoftverlicenc felhasználásával fejleszthetők, és sok szerver-, kliens- és könyvtári megvalósítás ingyenes és nyílt forráskódú szoftverként kerül forgalomba . Számos ingyenes és kereskedelmi szoftver megvalósítás is létezik.

Eredetileg a névadó nyílt forráskódú közösség fejlesztette ki, a protokollokat 2004-ben jóváhagyták azonnali üzenetküldési szabványként, és folyamatosan fejlesztik új bővítményekkel és funkciókkal. Különféle XMPP kliensszoftverek állnak rendelkezésre asztali és mobil platformokon és eszközökön - 2003 -ra a protokollt világszerte több mint tízmillió ember használta a hálózaton, az XMPP Standards Foundation szerint .

Protokoll jellemzői

Decentralizálás

Egyszerű XMPP hálózat a jabber.org és draugr.de szerverekkel . A zöld ügyfelek online, a sárga ügyfelek írnak egymásnak, a kis zöld alkliensek pedig egy felhasználó erőforrásai. A barna hálózat nem csatlakozik az internethez. A draugr.de szerver más IM szolgáltatásokhoz (ICQ, AIM és egyéb) kapcsolódik XMPP transzporton keresztül .

Az XMPP hálózati architektúra a Simple Mail Transfer Protocol (SMTP) protokollra emlékeztet , amely kliens -szerver modell; az ügyfelek nem beszélnek közvetlenül egymással, mivel decentralizált - bárki futtathat szervert. A tervezés szerint nincs központi hiteles szerver, mint az olyan üzenetküldő szolgáltatásoknál, mint az AIM , WLM , WhatsApp vagy Telegram . Ezen a ponton gyakran felmerül némi zűrzavar, mivel nyilvános XMPP -kiszolgáló fut jabber.org, amelyre sok felhasználó feliratkozik. Azonban bárki futtathatja saját XMPP szerverét a saját tartományán.

Címzés

Szabványos JID

A hálózat minden felhasználójának egyedi XMPP -címe van, amelyet JID -nek hívnak (történelmi okokból az XMPP -címeket gyakran Jabber -azonosítóknak nevezik ). A JID felépítése olyan, mint egy e -mail cím felhasználónévvel és tartománynévvel (vagy IP -címmel ) ahhoz a kiszolgálóhoz, ahol a felhasználó lakik, elválasztva egy at jellel ( @) - például: „ alice@example.com“: itt alicea felhasználónév és example.coma amelyet a felhasználó regisztrált.

Mivel a felhasználó több helyről szeretne bejelentkezni, megadhat egy erőforrást . Az erőforrás azonosítja a felhasználóhoz tartozó adott ügyfelet (például otthon, munkahely vagy mobil). Ez a JID -be kerülhet úgy, hogy egy perjelet és az erőforrás nevét követi. Például a felhasználó mobilfiókjának teljes JID -je lehet username@example.com/mobile.

Minden erőforrás megadhat egy prioritásnak nevezett számértéket . Üzenetek egyszerűen küldött username@example.commegy a kliens legnagyobb prioritást, de ezek küldött username@example.com/mobilemegy csak a mobil kliens. A legmagasabb prioritás a legnagyobb számértékű.

A felhasználónév rész nélküli JID -k is érvényesek, és felhasználhatók rendszerüzenetekhez és a szerver speciális funkcióinak vezérléséhez. Az erőforrás ezeknél a JID -eknél is opcionális marad.

Az üzenetek logikai végpont -azonosítón - a JID - alapuló útválasztásának eszközei explicit IP -cím helyett lehetőséget kínálnak arra, hogy az XMPP -t átfedő hálózati megvalósításként használják különböző alátéthálózatok tetején.

XMPP HTTP -n keresztül

Az XMPP eredeti és "natív" szállítási protokollja a Transmission Control Protocol (TCP), amely nyílt végű XML-folyamokat használ hosszú élettartamú TCP-kapcsolatokon keresztül. A TCP -átvitel alternatívájaként az XMPP -közösség HTTP -továbbítást is kifejlesztett a webes ügyfelek, valamint a korlátozott tűzfalak mögötti felhasználók számára . Az eredeti specifikációban az XMPP kétféleképpen használhatta a HTTP -t: lekérdezés és kötés . A lejárt lekérdezési módszer lényegében azt jelenti, hogy a szerveroldali adatbázisban tárolt üzeneteket rendszeresen lekéri (és közzéteszi) egy XMPP kliens HTTP „GET” és „POST” kérések útján. A kétirányú adatfolyamok szinkron HTTP-n ( BOSH ) keresztül megvalósított kötési módszer lehetővé teszi a kiszolgálók számára, hogy azok elküldése után azonnal elküldjék az üzeneteket az ügyfeleknek. Ez a push értesítési modell hatékonyabb, mint a szavazás, ahol a közvélemény -kutatások közül sok nem ad vissza új adatokat.

Mivel az ügyfél HTTP -t használ, a legtöbb tűzfal lehetővé teszi az ügyfelek számára, hogy akadálytalanul lekérjék és közzétegyék az üzeneteket. Így azokban az esetekben, amikor az XMPP által használt TCP -port blokkolva van, a szerver hallgathatja a normál HTTP -portot, és a forgalomnak gond nélkül haladnia kell. Különböző webhelyek lehetővé teszik az emberek számára, hogy böngészőn keresztül jelentkezzenek be az XMPP -be. Továbbá vannak nyílt nyilvános szerverek, amelyek szabványos http (80 -as port) és https (443 -as port) portokon hallgatnak, és így lehetővé teszik a kapcsolatokat a legtöbb tűzfal mögül. A BOSH IANA által regisztrált portja azonban valójában 5280, nem 80.

Nyújthatóság

Az XMPP Standards Foundation vagy az XSF (korábban Jabber Software Foundation) aktívan dolgozik nyílt XMPP kiterjesztések, úgynevezett XEP fejlesztésében . A kiterjesztéseket azonban bármely egyéni, szoftverprojekt vagy szervezet is meghatározhatja. Az interoperabilitás fenntartása érdekében a közös kiterjesztéseket az XSF kezeli. Az IM -en túlmenő XMPP -alkalmazások közé tartoznak: csevegőszobák , hálózatkezelés , tartalomközvetítés , együttműködési eszközök , fájlmegosztás , játék, távoli rendszerek vezérlése és felügyelete , földrajzi helymeghatározás , köztes és felhőalapú számítástechnika , VoIP és személyazonossági szolgáltatások .

Az XMPP a helyi hálózati tartományokban történő felderítés támogatására való képességére építve kiválóan alkalmas felhőalapú számítástechnikára, ahol a virtuális gépek, hálózatok és tűzfalak egyébként akadályokat jelentenének az alternatív szolgáltatáskeresés és jelenlét-alapú megoldások előtt. A felhőalapú számítástechnikai és -tárolási rendszerek többféle szintű kommunikációra támaszkodnak, beleértve nemcsak a rendszerek közötti üzenetküldést az állapot továbbításához, hanem nagyobb objektumok, például tároló vagy virtuális gépek áttelepítését vagy elosztását is. A hitelesítéssel és az átvitel közbeni adatvédelemmel együtt az XMPP különböző szinteken alkalmazható, és ideálisnak bizonyulhat kiterjeszthető köztes vagy Message-orientált middleware (MOM) protokollként.

Aktuális korlátozások

Jelenleg az XMPP nem támogatja a szolgáltatásminőséget (QoS); az üzenetek biztos kézbesítését az XMPP réteg tetejére kell építeni. Két XEP- t javasolnak ennek a problémának a kezelésére, a XEP-0184 üzenetküldési nyugtákat, amelyek jelenleg szabványtervezetek, és a XEP-0333 Chat Markereket, amelyek kísérleti jellegűnek tekinthetők.

Mivel az XML szövegalapú, a normál XMPP magasabb hálózati rezsivel rendelkezik, mint a tisztán bináris megoldások. Ezzel a problémával foglalkozott a kísérleti XEP-0322: Hatékony XML Interchange (EXI) formátum , ahol az XML-t nagyon hatékony bináris módon sorosítják, különösen sémainformált módban. Ez az XEP jelenleg elhalasztott.

A sávon belüli bináris adatátvitel korlátozott. A bináris adatokat először a base64 kódolásával kell ellátni, mielőtt a sávon belül továbbíthatnák őket. Ezért bármilyen jelentős mennyiségű bináris adatot (pl. Fájlátvitel ) a legjobb a sávon kívül továbbítani , sávon belüli üzenetek segítségével koordinálni. A legjobb példa erre a Jingle XMPP Extension Protocol, XEP-0166 .

Jellemzők

Fájlátviteli lehetőségek egy csevegésben a Conversations alkalmazásban , amely egy Android XMPP kliens

Peer-to-peer ülések

A Jingle nevű kiterjesztés használatával az XMPP nyílt eszközt biztosít a gépek közötti vagy a peer-to-peer kommunikáció támogatására sokféle hálózaton keresztül. Ezt a funkciót elsősorban IP -telefonáláshoz (VoIP) használják.

Többfelhasználós chat

Az XMPP támogatja a többfelhasználós konferenciákat a Multi-User Chat (MUC) ( XEP-0045 ) specifikáció használatával . Normál felhasználó szempontjából összehasonlítható az Internet Relay Chat (IRC) szolgáltatással.

Biztonság és titkosítás

Az XMPP szervereket el lehet különíteni (pl. Vállalati intraneten ), és a biztonságos hitelesítést ( SASL ) és a pont-pont titkosítást ( TLS ) beépítették az alapvető XMPP specifikációkba, valamint

A rögzítés nélküli üzenetküldés (OTR) az XMPP kiterjesztése, amely lehetővé teszi az üzenetek és adatok titkosítását. Ezt azóta felváltotta egy jobb kiterjesztésű, multi-end-to-multi titkosítás ( OMEMO , XEP-0384 ) végpontok közötti titkosítás a felhasználók között. Ez magasabb szintű biztonságot nyújt a forrás kliens összes adatának titkosításával, és a cél kliensen történő visszafejtéssel; a kiszolgáló üzemeltetője nem tudja visszafejteni az általuk továbbított adatokat.

Szolgáltatás felfedezése

Bár manapság számos szolgáltatáskeresési protokoll létezik (például a zeroconf vagy a Service Location Protocol ), az XMPP szilárd alapot nyújt a helyben vagy a hálózaton átnyúló szolgáltatások felfedezéséhez, valamint ezeknek a szolgáltatásoknak a rendelkezésre állásához (jelenlétinformációkon keresztül). XEP-0030 DISCO.

Csatlakozás más protokollokhoz

Alice üzenetet küld az XMPP hálózaton keresztül az ICQ szállítónak. Az üzenet ezután Bobhoz kerül az ICQ hálózaton keresztül.

A korai Jabber nyílt forráskódú közösség egyik eredeti tervezési célja az volt, hogy lehetővé tegye a felhasználók számára, hogy egyetlen ügyfél-alkalmazáson keresztül több azonnali üzenetküldő rendszerhez (különösen nem XMPP-rendszerhez) csatlakozzanak. Ezt a más azonnali üzenetküldési protokollokhoz, például ICQ , AIM vagy Yahoo Messenger , de más protokollokhoz, például SMS -hez , IRC -hez vagy e -mailhez , transzportnak vagy átjárónak nevezett entitásokon keresztül hajtották végre . A többprotokollos kliensekkel ellentétben az XMPP ezt a hozzáférést szerver szinten biztosítja azáltal, hogy az XMPP szerver mellett futó speciális átjárószolgáltatásokon keresztül kommunikál. Bármely felhasználó "regisztrálhat" ezen átjárók egyikén azáltal, hogy megadja a hálózatba való bejelentkezéshez szükséges információkat, majd kommunikálhat a hálózat felhasználóival, mintha XMPP -felhasználók lennének. Így az ilyen átjárók ügyfélproxyként működnek (az átjáró a felhasználó nevében hitelesíti a nem XMPP szolgáltatást). Ennek eredményeként minden olyan ügyfél, amely teljes mértékben támogatja az XMPP -t, bármely átjáróval rendelkező hálózathoz hozzáférhet, anélkül, hogy az ügyfélben további kód lenne, és anélkül, hogy az ügyfélnek közvetlen internet -hozzáféréssel kellene rendelkeznie. Az ügyfélproxy-modell azonban megsértheti az alkalmazott protokoll szolgáltatási feltételeit (bár az ilyen szolgáltatási feltételek több országban jogilag nem érvényesíthetők), és azt is megköveteli a felhasználótól, hogy küldje el IM-felhasználónevét és jelszavát a harmadik féltől származó webhelyre, amely a közlekedés (ami magánéleti és biztonsági aggályokat vethet fel).

Az átjárók másik típusa a kiszolgálók közötti átjáró, amely lehetővé teszi, hogy egy nem XMPP-kiszolgáló telepítés natív XMPP-kiszolgálókhoz csatlakozzon az XMPP beépített tartományközi összevonási szolgáltatásainak használatával. Az ilyen szerver-kiszolgáló átjárókat számos vállalati IM szoftvertermék kínálja, többek között:

Szoftver

Az XMPP -t számos kliens, szerver és kódkönyvtár valósítja meg. Ezeket a megvalósításokat különféle szoftverlicencek biztosítják.

Kiszolgálók

Számos XMPP szerver szoftver létezik, néhány jól ismert az ejabberd és a Prosody .

Ügyfelek

Barátlista és többfelhasználós csevegés a Sparkban

Számos XMPP kliens szoftver létezik különböző modern és korábbi platformokon, beleértve a grafikus és a parancssori alapú ügyfeleket is. Az XMPP webhelye szerint a legnépszerűbb szoftverek közé tartozik a Conversations (Android), a Converse.js (webböngésző, Linux, Windows, macOS), Gajim (Windows, Linux), Monal (macOS, iOS) és Swift.IM (macOS, Windows, Linux).

További ügyfelek: Bombus , ChatSecure , Coccinella , JWChat.org , MCabber , Miranda , Pidgin , Psi , Tkabber , Trillian és Xabber .

Telepítés és elosztás

Világszerte több ezer XMPP szerver létezik, sok nyilvános, valamint magánszemélyek vagy szervezetek, amelyek kereskedelmi céllal üzemeltetik saját szervereiket. Számos weboldal mutatja a nyilvános XMPP -kiszolgálók listáját, ahol a felhasználók regisztrálhatnak (például az XMPP.net webhelyen).

Számos nagy nyilvános IM szolgáltatás natív módon használja vagy használja az XMPP -t , beleértve a LiveJournal "LJ Talk", Nimbuzz és HipChat szolgáltatásait . Különféle tárhelyszolgáltatások, például a DreamHost lehetővé teszik a tárhelyi ügyfelek számára, hogy az XMPP szolgáltatásokat a hagyományosabb webes és e -mail szolgáltatások mellett válasszák. Speciális XMPP hosting szolgáltatások formájában is előfordulhatnak a felhő , hogy a tartományi tulajdonosoknak nem kell közvetlenül futtatni saját XMPP szerver, köztük a Cisco Webex Connect Chrome.pl, Flosoft.biz , i-pobox.net és hosted.im.

Az XMPP-t nem IM szolgáltatások telepítésére is használják, beleértve az intelligens rácsrendszereket, például kereslet-reagáló alkalmazásokat, üzenetközpontú köztes szoftvereket, és az SMS helyettesítésére , hogy szöveges üzeneteket biztosítsanak sok okostelefonos kliensen.

Nem natív telepítések

A legnagyobb üzenetküldő szolgáltatók egy része az XMPP -alapú protokollok különféle formáit használja vagy használta háttérrendszerében, anélkül, hogy feltétlenül feltenné ezt a tényt a végfelhasználóinak. Az egyik példa a Google , amely 2005 augusztusában vezette be a Google Talk -ot , egy VoIP és IM rendszer kombinációt, amely XMPP -t használ az azonnali üzenetküldéshez, valamint a Jingle nevű hang- és fájlátviteli jelzőprotokoll alapjául . A kezdeti bevezetés nem tartalmazta a kiszolgálók közötti kommunikációt; A Google 2006. január 17 -én engedélyezte ezt a funkciót. A Google azóta videofunkciókat adott hozzá a Google Csevegőhöz, a Jingle protokollt is használva a jelzéshez. 2013 májusában a Google bejelentette, hogy az XMPP-kompatibilitás megszűnik a Google Talk-ból a szerver-szerver összevonáshoz, bár megtartja az ügyfelek közötti támogatást. 2008 januárjában az AOL kísérleti XMPP támogatást vezetett be AOL Instant Messenger (AIM) szolgáltatásához, amely lehetővé teszi az AIM felhasználók számára, hogy XMPP használatával kommunikáljanak. Ez a szolgáltatás azonban 2008 márciusában megszűnt. 2011 májusától az AOL korlátozott XMPP támogatást kínál. 2010 februárjában a Facebook közösségi oldal XMPP-n keresztül megnyitotta csevegési funkcióját harmadik féltől származó alkalmazások számára. Néhány funkció nem volt elérhető az XMPP -n keresztül, és 2014 áprilisában megszűnt a támogatás. Hasonlóképpen, 2011 decemberében a Microsoft kiadott egy XMPP felületet a Microsoft Messenger szolgáltatáshoz . A de facto utódja, a Skype is korlátozott XMPP támogatást nyújtott. Egy másik példa az Apache Wave .

Az XMPP a de facto szabványa a privát csevegésnek a játékhoz kapcsolódó platformokon, mint például az Origin és a PlayStation , valamint a már megszűnt Xfire és Raptr . Két figyelemre méltó kivétel a Steam és az Xbox LIVE ; mindkettő saját, saját üzenetkezelési protokollját használja.

Történelem és fejlődés

Jabber logó

Jeremie Miller 1998-ban kezdett dolgozni a Jabber-technológián, és jabberd1999. január 4-én kiadta a szerver első verzióját . A korai Jabber-közösség a nyílt forráskódú szoftverekre, elsősorban a jabberd-kiszolgálókra összpontosított, de fő eredménye a az XMPP protokoll.

Az Internet Engineering Task Force (IETF) 2002 -ben létrehozott egy XMPP munkacsoportot , hogy az alapvető protokollokat IETF azonnali üzenetküldési és jelenléti technológiának formalizálja. A korai Jabber protokollt kidolgozott 1999-ben és 2000-ben alakult alapját XMPP közzétett RFC 3920 és RFC 3921, 2004 októberében (az elsődleges során változik formalizációs az IETF XMPP Munkacsoport volt hozzáadásával TLS titkosítási csatorna és SASL hitelesítéshez). Az XMPP munkacsoport az RFC 3922 és az RFC 3923 specifikációkat is elkészítette. 2011 -ben az RFC 3920 és az RFC 3921 helyébe az RFC 6120, illetve az RFC 6121 került, az RFC 6122 pedig megadja az XMPP címformátumot. 2015 -ben az RFC 6122 -t az RFC 7622 váltotta fel. Az IETF -en szabványosított alapvető protokollok mellett az XMPP Standards Foundation (korábban Jabber Software Foundation) is aktív a nyílt XMPP kiterjesztések fejlesztésében.

Az első IM alapuló szolgáltatás XMPP volt Jabber.org, amely folyamatosan működött, és felajánlotta ingyenes számlák 1999 óta 1999-től 2006 februárjáig a szolgáltatást használni Jabberd , mint a szerver szoftver, mely idő vándorolt ejabberd (mindkettő ingyenes szoftveralkalmazás -kiszolgálók). 2010 januárjában a szolgáltatás áttelepült az Isode Ltd. által gyártott szabadalmaztatott M-Link szerver szoftverre.

2008 szeptemberében a Cisco Systems felvásárolta a Jabber, Inc. -t, a Jabber XCP kereskedelmi termék megalkotóit.

Az XMPP Szabványok Alapítványa (XSF) az XMPP kiterjesztéseit fejleszti és teszi közzé az XMPP kiterjesztési protokollokra (XEP, korábbi nevén Jabber Enhancement Propjects - JEP) épülő szabványosítási folyamaton keresztül . A következő bővítmények különösen széles körben használatosak:

  • Adatlapok
  • Szolgáltatás felfedezése
  • Többfelhasználós csevegés
  • Közzététel-feliratkozás és személyes esemény protokoll
  • XHTML-IM
  • Fájl átvitel
  • Entitás képességek
  • HTTP -kötés
  • Jingle hang és videó

A dolgok internete

Az XMPP olyan funkcióit használják, mint a tartományok közötti összevonás, a közzététel/előfizetés, a hitelesítés és annak biztonsága még a mobil végpontok esetében is a tárgyak internetének megvalósítására . Számos XMPP kiterjesztés része a kísérleti megvalósításnak: Hatékony XML Interchange (EXI) formátum; Érzékelő adatok; Gondoskodás; Ellenőrzés; Koncentrátorok; Felfedezés.

Ezeket az erőfeszítéseket az XMPP wiki egyik oldala dokumentálja, amely a tárgyak internetének és az XMPP IoT levelezőlistának szól.

Specifikációk és szabványok

Az IETF XMPP munkacsoport számos megjegyzéskérési (RFC) dokumentumot készített:

  • RFC  3920 (helyébe az RFC 6120 lép)
  • RFC  3921 (helyébe az RFC 6121 lép)
  • RFC  3922
  • RFC  3923
  • RFC  4622 (helyébe az RFC 5122 lép)
  • RFC  4854
  • RFC  4979
  • RFC  6122 (helyébe az RFC 7622 lép)

Ezek közül a legfontosabb és legszélesebb körben megvalósított specifikációk a következők:

  • RFC  6120 , Extensible Messaging and Presence Protocol (XMPP): Core , amely két nyílt végű XML adatfolyam használatával írja le az ügyfél-szerver üzenetküldést . Az XML folyamok <jelenlét/>, <üzenet/> és <iq/> (info/lekérdezés) elemekből állnak. A kapcsolat hitelesíti Simple Authentication and Security Layer (SASL) és titkosított a Transport Layer Security (TLS).
  • RFC  6121 , bővíthető üzenetküldési és jelenléti protokoll (XMPP): Az Azonnali üzenetküldés és jelenlét az XMPP leggyakoribb alkalmazását, az azonnali üzenetküldést (IM) írja le .
  • RFC  7622 , bővíthető üzenetküldési és jelenléti protokoll (XMPP): A címformátum leírja az XMPP -címekre, más néven JabberID -re vagy JID -re vonatkozó szabályokat. Jelenleg a JID -k a PRECIS -t (az RFC 7564 -ben meghatározottak szerint) használják az Unicode karakterek kezelésére az ASCII tartományon kívül.

Versenyképes szabványok

Az XMPP -t gyakran tekintették a SIMPLE versenytársának , a SIP ( Session Initiation Protocol ) protokoll alapján, mint az azonnali üzenetküldés és jelenlét -értesítés szabványos protokollját.

A többfelhasználós csevegés XMPP-bővítménye az Internet Relay Chat (IRC) versenytársaként tekinthető , bár az IRC sokkal egyszerűbb, sokkal kevesebb funkcióval rendelkezik, és sokkal szélesebb körben használják.

A közzététel-előfizetés XMPP kiterjesztései ugyanazokat a szolgáltatásokat nyújtják, mint az Advanced Message Queuing Protocol (AMQP).

Lásd még

Hivatkozások

Külső linkek