XMPP

XMPP är Extensible Messaging and Presence Protocol, en uppsättning öppna tekniker för snabbmeddelanden, närvaro, flerpartichatt, röst-och videosamtal, samarbete, lätt middleware, innehållssyndikering och generaliserad routing av XML-data.

XMPP utvecklades ursprungligen i Jabber open-source community för att tillhandahålla ett öppet, decentraliserat alternativ till de stängda snabbmeddelandetjänsterna vid den tiden. XMPP erbjuder flera viktiga fördelar jämfört med sådana tjänster:

  • öppna-XMPP-protokollen är gratis, öppna, offentliga och lättförståeliga; dessutom finns flera implementeringar i formklienter, servrar, serverkomponenter och kodbibliotek.

  • Standard-Internet Engineering Task Force (IETF) har formaliserat kärnan XML streaming protokoll som en godkänd snabbmeddelanden och närvaro teknik. XMPP-specifikationerna publicerades som RFC 3920 och RFC 3921 2004, och XMPP Standards Foundation fortsätter att publicera många XMPP-Förlängningsprotokoll. 2011 reviderades kärn RFC, vilket resulterade i de mest uppdaterade specifikationerna (RFC 6120, RFC 6121 och RFC 7622).

  • bevisat – de första Jabber / XMPP-teknologierna utvecklades av Jeremie Miller 1998 och är nu ganska stabila; hundratals utvecklare arbetar med dessa tekniker, det finns tiotusentals XMPP-servrar som körs på Internet idag och miljontals människor använder XMPP för snabbmeddelanden via offentliga tjänster som Google Talk och XMPP-distributioner hos organisationer över hela världen.

  • decentraliserad-arkitekturen i XMPP-nätverket liknar e-post; som ett resultat kan vem som helst köra sin egen XMPP-server, vilket gör det möjligt för individer och organisationer att ta kontroll över sin kommunikationsupplevelse.

  • säker-alla XMPP-servrar kan isoleras från det offentliga nätverket (t.ex. på ett företags intranät) och robust säkerhet med SASL och TLS har byggts in i core XMPP-specifikationerna. Dessutom arbetar XMPP-utvecklargemenskapen aktivt med end-to-end-kryptering för att höja säkerhetsfältet ytterligare.

  • Extensible-med hjälp av kraften i XML kan vem som helst bygga anpassad funktionalitet ovanpå kärnprotokollen; för att upprätthålla interoperabilitet publiceras vanliga tillägg i XEP-serien, men sådan publicering krävs inte och organisationer kan behålla sina egna privata tillägg om så önskas.

  • Flexibel-XMPP-applikationer utöver IM inkluderar nätverkshantering, innehållssyndikering, samarbetsverktyg, fildelning, spel, övervakning av fjärrsystem, webbtjänster, lätt middleware, cloud computing och mycket mer.

  • Diverse – ett brett utbud av företag och open source-projekt använder XMPP för att bygga och distribuera realtidsapplikationer och tjänster; du kommer aldrig att bli ”låst” när du använder XMPP-teknik.

den här sidan ger en introduktion till olika XMPP-tekniker, inklusive länkar till specifikationer, implementeringar, handledning och specialdiskussionsplatser.

viktiga XMPP-tekniker:

  • Core — information om kärnan XMPP teknik för XML streaming
  • Jingle — SIP-kompatibel multimedia signalering för röst, video, filöverföring och andra program
  • Multi-User Chat — flexibel, flerpartskommunikation
  • PubSub-varningar och meddelanden för datasyndikering, rik närvaro, och mer
  • bosh — en http — bindning för XMPP (och annan) trafik

kärna

kärnan är XMPP en teknik för strömning av XML över ett nätverk. Protokollet, som framkom från Jabber open source community 1999, var ursprungligen utformat för att tillhandahålla ett öppet, säkert, decentraliserat alternativ till konsumentorienterade snabbmeddelandetjänster (IM) som ICQ, AIM och MSN. Kärnteknologierna formaliserades under namnet Extensible Messaging and Presence Protocol (XMPP) vid IETF 2004. Dessa kärnteknologier inkluderar:

  • basen XML streaming layer
  • kanalkryptering med Transport Layer Security (TLS)
  • stark autentisering med enkel autentisering och säkerhet Layer (SASL)
  • användning av UTF-8 för fullständig Unicode-stöd, inklusive helt internationaliserade adresser
  • inbyggd information om nätverkstillgänglighet (”närvaro”)
  • närvaroprenumerationer för Tvåvägsbehörighet
  • närvaroaktiverade kontaktlistor (”listor”)

SPECIFIKATIONER

kärnan XMPP teknik definieras i två RFC publicerad av IETF:

  • RFC 6120: XMPP kärna
  • RFC 6121: XMPP IM
  • RFC 7622: XMPP adressformat

den första XMPP RFC (RFC 3920 och RFC 3921) producerades av IETF: s XMPP arbetsgrupp i oktober 2004. Under 2011 reviderades de, vilket resulterade i nuvarande specifikationer.

implementeringar

det finns många implementeringar av core XMPP-specifikationerna. Se följande sidor för mer information:

  • klienter
  • servrar
  • kodbibliotek

Jingle

i huvudsak ger Jingle ett sätt för Jabber-klienter att konfigurera, hantera och riva ner multimediasessioner. Sådana sessioner kan stödja ett brett spektrum av applikationstyper (som röstchatt, videochatt och filöverföring) och använda ett brett utbud av medietransportmetoder (som TCP, UDP, RTP eller till och med XMPP i bandet). Signaleringen för att upprätta en Jingle-session skickas över XMPP, och vanligtvis skickas media direkt peer-to-peer eller via ett mediarelä. Jingle ger en pluggbar ram för både applikationstyper och medietransporter; när det gäller röst-och videochatt resulterar en Jingle-förhandling vanligtvis i användning av Realtidstransportprotokoll (RTP) som medietransport och är därmed kompatibel med befintlig multimediateknik som Session Initiation Protocol (SIP). Dessutom utformades semantiken för Jingle-signalering för att överensstämma med både SIP och session Description Protocol (SDP), vilket gör det enkelt att tillhandahålla signalportar mellan XMPP-nätverk och SIP-nätverk.

SPECIFIKATIONER

Jingle definieras i ett antal SPECIFIKATIONER:

  • XEP-0166: Jingle
  • XEP-0167: Jingle RTP sessioner
  • XEP-0176: Jingle ICE-UDP transportmetod
  • XEP-0177: Jingle rå UDP transportmetod
  • XEP-0181: Jingle DTMF
  • xep-0234: Jingle filöverföring

implementeringar

Obs: många av följande implementeringar stöder det äldre Google Talk-protokollet och uppgraderas för att stödja jingle som det definieras i specifikationerna; kontakta projektutvecklarna för mer information.

klienter

  • Coccinella
  • Gajim
  • Jitsi (tidigare namngiven SIP Communicator)
  • Movim
  • Pandion
  • Pidgin (tidigare namngiven Gaim)
  • Psi
  • telepati
  • Yate

Bibliotek

  • Libjingle (C/C++)
  • Smack (Java)
  • telepati gabble (C)
  • yjingle (C++)

Samtalshanterare / VoIP-servrar

  • Asterisk
  • FreeSWITCH
  • Yate

Multi-User-Chat (MUC)

MUC är en XMPP förlängning för informationsutbyte med flera parter som liknar Internet Relay Chat (IRC), där flera XMPP-användare kan utbyta meddelanden i samband med ett rum eller en kanal. Förutom vanliga chattrumsfunktioner som rumsämnen och inbjudningar definierar protokollet en stark rumskontrollmodell, inklusive möjligheten att sparka och förbjuda användare, att namnge rumsmoderatorer och administratörer, att kräva medlemskap eller lösenord för att gå med i rummet etc. Eftersom MUC-rum är baserade på XMPP kan de användas för att utbyta inte bara klartext-meddelandekroppar utan en mängd olika XML-nyttolaster.

SPECIFIKATIONER

MUC definieras i en primär specifikation (XEP-0045) och flera tillhörande SPECIFIKATIONER:

  • XEP-0045: Fleranvändarchatt
  • XEP-0249: direkta MUC-inbjudningar
  • XEP-0272: Flerpartsjingel

implementeringar

servrar – följande XMPP-servrar inkluderar inbyggt stöd för MUC:

  • ejabberd
  • Jabber XCP
  • M-länk
  • MongooseIM
  • Openfire
  • prosodi
  • Tigase

externa komponenter – följande fristående komponenter kan användas med en mängd olika XMPP-servrar:

  • mu-konferens
  • palaver

klienter

  • Adium
  • Gajim
  • JWChat
  • mcabber
  • Movim
  • Pidgin
  • PSI

Bibliotek

  • AnyEvent:XMPP (Perl)
  • gloox (C++)
  • jabber-net (. Net)
  • libpurple (C)
  • Smack (Java)
  • XMPP4R (Ruby)

PubSub

PubSub är en protokollförlängning för generisk publicera-prenumerera-funktionalitet, specificerad i XEP-0060. Protokollet gör det möjligt för XMPP-enheter att skapa noder (ämnen) vid en pubsub-tjänst och publicera information vid dessa noder; en händelsemeddelande (med eller utan nyttolast) sänds sedan till alla enheter som har prenumererat på noden. Pubsub följer därför det klassiska Observer-designmönstret och kan tjäna som grund för en mängd olika applikationer, inklusive nyhetsflöden, innehållssyndikering, rik närvaro, geolokalisering, arbetsflödessystem, nätverkshanteringssystem och alla andra applikationer som kräver händelsemeddelanden. Personal eventing protocol (PEP), specificerat i XEP-0163, ger en närvaromedveten profil för PubSub som gör det möjligt för varje användares JabberID att fungera som en virtuell pubsub-tjänst för rik närvaro, mikrobloggtjänst, sociala nätverk och realtidsinteraktioner.

SPECIFIKATIONER

PubSub definieras i flera SPECIFIKATIONER:

  • XEP-0060: publicera-prenumerera
  • XEP-0163: Personal Eventing Protocol
  • XEP-0248: PubSub-Samlingsnoder

nyttolaster

PubSub och Pep är ”nyttolast — agnostiker” – du kan använda dem som neutrala transporter för en mängd olika dataformat. Några av de mer populära nyttolasterna listas nedan, särskilt för rik närvaro relaterad till IM-användare:

  • aktiviteter
  • Atom / RSS – meddelanden
  • avatarer
  • chattrum besök
  • spelaktiviteter
  • geolokalisering
  • stämningar
  • musik låtar
  • TV/videoaktiviteter
  • webbplatsbesök

implementeringar

servrar-följande XMPP-servrar inkluderar inbyggt stöd för PubSub eller pep:

  • ejabberd
  • Jabber XCP
  • M-länk
  • Openfire
  • Tigase

serverkomponenter

  • Idavoll

klienter

  • gajim
  • MOVIM
  • Psi

3.4 Bibliotek

  • strophe (C eller JavaScript)
  • XMPP4R (Ruby)

BOSH

BOSH är ”dubbelriktad-strömmar över synkron HTTP”, en teknik för tvåvägskommunikation över Hypertext Transfer Protocol (HTTP). BOSH emulerar många av transportprimitiverna som är bekanta från Transmission Control Protocol (TCP). För applikationer som kräver både” push ”och” pull ” -kommunikation är BOSH betydligt mer bandbreddseffektiv och lyhörd än de flesta andra Dubbelriktade HTTP-baserade transportprotokoll och de tekniker som kallas Ajax. BOSH uppnår denna effektivitet och låg latens genom att undvika HTTP-polling, men det gör det utan att tillgripa chunked HTTP-svar som görs i tekniken som kallas Comet. Hittills har BOSH huvudsakligen använts som transport för trafik som utbyts mellan Jabber/XMPP-klienter och servrar (t.ex. för att underlätta anslutningar från webbklienter och från mobila klienter i intermittenta nätverk). BOSH är dock inte bunden enbart till XMPP och kan också användas för andra typer av trafik.

SPECIFIKATIONER BOSH definieras i två SPECIFIKATIONER:

  • XEP-0124: Dubbelriktade strömmar över synkron HTTP
  • XEP-0206: XMPP över BOSH

implementeringar

servrar följande XMPP-servrar inkluderar inbyggt stöd för BOSH:

  • ejabberd
  • Jabber XCP
  • M-länk
  • MongooseIM
  • Openfire
  • prosodi
  • Tigase

anslutningshanterare

följande fristående XMPP-anslutningshanterare kan användas med en mängd olika XMPP-servrar:

  • Jabberhttpbind
  • Punjab
  • nod-xmpp-bosh
  • rhb

klienter

  • Adium
  • Gajim
  • jwchat
  • Pidgin
  • soashable
  • sparkweb
  • Swift
  • tigase messenger
  • Tigase Minichat

Bibliotek

  • emite (GWT)
  • Gloox (C++)
  • jsjac (Javascript)
  • Strophe (C eller JavaScript)
  • Swiften (C++)
  • Xiff (blixt)
  • xmpp4gwt (GWT)
  • Xmpp4js (Javascript)
  • XMPP4R (Rubin)

Lämna ett svar

Din e-postadress kommer inte publiceras.