Кіріспе

Хабарға бағытталған делдалдық бағдарламалық жасақтама үшін байланыс протоколы. Кеңейтілген хабарлау және қатысу протоколы (XMPP, бастапқыда Jabber деп аталған) – жылдам хабар алмасу (ЖХА), қатысу туралы ақпарат және контактілер тізімін басқару үшін арналған ашық байланыс протоколы. XML (Extensible Markup Language) негізінде құрылған, ол екі немесе одан көп желілік бірліктер арасында құрылымдалған деректерді дерлік нақты уақыт режимінде алмасуға мүмкіндік береді. Протокол кеңейтілуге бағытталғандықтан, дәстүрлі ЖХА-дан асып, VoIP сигналдау, бейне, файлдарды жіберу, ойындар және басқа да мақсаттарды қамтитын, хабарға бағытталған делдалдық бағдарламалық жасақтама саласында көптеген қолданыстарды ұсынады. Көптеген коммерциялық ЖХА протоколдарынан өзгеше, XMPP қолданбалар деңгейінде ашық стандарт ретінде анықталған. XMPP желісінің архитектурасы электрондық поштаға ұқсас: кез келген адам өз XMPP серверін іске қоса алады және орталық бас сервер жоқ. Бұл федерацияланған ашық жүйелік тәсіл пайдаланушыларға электрондық пошта мекенжайына ұқсас «JID» пайдаланушы есебін пайдаланып, кез келген сервердегі басқалармен өзара әрекеттесуге мүмкіндік береді. XMPP жүзеге асырулары кез келген бағдарламалық жасақтама лицензиясын пайдаланып жасалуы мүмкін, ал көптеген серверлік, клиенттік және кітапханалық жүзеге асырулар ақысыз және ашық кодты бағдарламалық жасақтама ретінде таратылады. Сонымен қатар, көптеген тегін және коммерциялық бағдарламалық жасақтамалардың жүзеге асырылуы бар. Бастапқыда ашық кодты қауымдастық әзірлеген протоколдар 2004 жылы ресми түрде мақұлданған ЖХА стандарты ретінде бекітілді және жаңа кеңейтімдер мен мүмкіндіктермен үнемі дамытылып келеді. XMPP стандарттары қоры мәліметінше, 2003 жылға қарай протокол желіде бүкіл әлем бойынша он миллионнан астам адам қолданды. Десктоптық және мобильді платформаларда XMPP клиенттік бағдарламалық жасақтамасы қол жетімді.

Орталықсыздандыру

XMPP желілік архитектурасы қарапайым электрондық пошта тасымалдау протоколына (SMTP) ұқсас, клиент-серверлік модельді еске түсіреді; клиенттер бір-бірімен тікелей байланыспайды, себебі ол орталықтандырылмаған, кез келген адам сервер іске қоса алады. Құрылымы бойынша, AIM, WLM, WhatsApp немесе Telegram сияқты хабар алмасу қызметтеріндегідей орталық авторитетті сервер жоқ. Осы мәселе бойынша жиі жаңылысу туындайды, себебі jabber.org мекенжайында көптеген пайдаланушылар тіркелетін қоғамдық XMPP сервері жұмыс істейді. Дегенмен, кез келген адам өз доменінде өз XMPP серверін іске қоса алады.

Адрестік

Желідегі әрбір пайдаланушының бірегей XMPP мекенжайы бар, ол JID деп аталады (тарихи себептерге байланысты XMPP мекенжайлары көбінесе Jabber ID деп аталады). JID – бұл пайдаланушы аты мен осы пайдаланушы тіркелген сервердің домендік аты (немесе IP-адресі) бар, электрондық пошта мекенжайы сияқты құрылымдалған, және бәрі @ таңбасымен бөлінеді, мысалы, alice@example.com: мұнда alice – пайдаланушы аты, ал example.com – пайдаланушы тіркелген сервер. Пайдаланушы бірнеше жерден кіруді қаласа, ол ресурсты көрсетуі мүмкін. Ресурс – бұл пайдаланушыға тиесілі нақты клиентті анықтайды (мысалы, үйде, жұмыста немесе мобильді құрылғыда). Бұл ресурстың атын JID-ге, одан кейін / белгісін қосу арқылы енгізуге болады. Мысалы, пайдаланушының мобильді шоттарының толық JID-і username@example.com/mobile болуы мүмкін. Әрбір ресурс сандық мәнмен белгіленген басымдыққа ие болуы мүмкін. username@example.com адресіне жіберілген хабарламалар ең жоғары басымдыққа ие клиентке жіберіледі, ал username@example.com/mobile адресіне жіберілгендер тек мобильді клиентке ғана жетеді. Ең жоғары басымдық – ең үлкен сандық мәнге ие. Пайдаланушы аты жоқ JID-лер де жарамды, оларды жүйелік хабарламалар мен сервердегі арнайы мүмкіндіктерді басқару үшін қолдануға болады. Бұл JID-лер үшін де ресурс міндетті емес. Логикалық соңғы нүкте идентификаторы – JID негізінде хабарламаларды маршруттау мүмкіндігі XMPP-ді әртүрлі негізгі желілердің үстіне орналасқан жабық желілік шешім ретінде пайдалануға мүмкіндік береді.

XMPP HTTP арқылы

XMPP-тің бастапқы және "туған" тасымалдау протоколы – Трансмиссияны басқару протоколы (TCP), ұзақ сақталатын TCP қосылымдары арқылы ашық XML ағындарын пайдаланады. TCP-ге балама ретінде XMPP қауымдастығы веб-клиенттер және шектеулі өрт қабырғаларының артындағы пайдаланушылар үшін HTTP тасымалын әзірледі. Бастапқы сипаттамада XMPP HTTP-ді екі тәсілмен қолдануға болатын: сауалнама және байланыс. Қазір қолданылмайтын сауалнама тәсілі, негізінен, серверлік деректер базасында сақталған хабарламаларды XMPP клиенті HTTP 'GET' және 'POST' сұраулары арқылы үнемі алу (және жіберу) дегенді білдіреді. Синхронды HTTP (BOSH) арқылы екі бағытты ағындарды қолдану арқылы іске асырылатын байланыс тәсілі, серверлерге хабарламалар жіберілген кезде оларды клиенттерге жіберуге мүмкіндік береді. Бұл хабарламаны жіберу моделі сауалнамадан тиімдірек, себебі көптеген сауалнамалар жаңа деректерді қайтармайды. Клиент HTTP-ні пайдаланғандықтан, көптеген өрт қабырғалары клиенттерге кедергісіз хабарламаларды алуға және жіберуге мүмкіндік береді. Осылайша, XMPP пайдаланатын TCP порты бұғатталған жағдайларда, сервер әдеттегі HTTP портында тыңдай алады және трафик мәселесіз өтуі керек. Әртүрлі веб-сайттар адамдарға браузер арқылы XMPP-ге кіруге мүмкіндік береді. Сонымен қатар, стандартты http (80 порт) және https (443 порт) порттарында тыңдайтын ашық қоғамдық серверлер бар, осылайша көптеген өрт қабырғаларының артында қосылуға болады. Дегенмен, IANA тіркеген BOSH порты – 5280, 80 емес.

Кеңейту мүмкіндігі

XMPP Стандарттар Қоры немесе XSF (бұрынғы Jabber Software Foundation) XMPP кеңейтімдерін, яғни XEP-ті әзірлеуде белсенді. Дегенмен, кеңейтімдерді кез келген жеке тұлға, бағдарламалық жоба немесе ұйым да анықтай алады. Өзара үйлесімділікті сақтау үшін, ортақ кеңейтімдер XSF арқылы басқарылады. XMPP-ның IM-нен басқа қолданыс салаларына: чат бөлмелері, желілік басқару, контент тарату, ынтымақтастық құралдары, файл алмасу, ойындар, қашықтан жүйелерді басқару және мониторинг, геолокация, аралық бағдарламалық қамтамасыз ету және бұлтты есептеу, VoIP, идентификациялық қызметтер кіреді. Жергілікті желілік домендерде ашу мүмкіндігін қолдай отырып, XMPP бұлтты есептеу үшін өте қолайлы, себебі ондағы виртуалды машиналар, желілер және қауіпті қабырғалар баламалы қызметтерді табу және қатысуға негізделген шешімдерге кедергі келтіруі мүмкін. Бұлтты есептеу және сақтау жүйелері бірнеше деңгейдегі әртүрлі байланыс түрлеріне сүйенеді, оның ішінде жүйелер арасындағы күйді жеткізу үшін ғана емес, сонымен қатар сақтау немесе виртуалды машиналар сияқты ірі объектілерді көшіру немесе тарату да кіреді. Растау және деректерді тасымалдау кезінде қорғаумен қатар, XMPP әртүрлі деңгейде қолданылуы мүмкін және кеңейтілген аралық бағдарламалық қамтамасыз ету немесе хабарға бағытталған аралық бағдарламалық қамтамасыз ету (MOM) протоколы ретінде тиімді болуы мүмкін.

Қазіргі шектеулер

Қазіргі уақытта XMPP қызмет сапасын (QoS) қолдамайды; хабарламалардың міндетті түрде жеткізілуі XMPP қабатының үстінде құрылуы тиіс. Бұл мәселені шешу үшін екі XEP ұсынылған, XEP 0184 – хабарлама жеткізілгенін растау, қазіргі уақытта жоба стандарты және XEP 0333 – чат белгілері, ол тәжірибелік деп есептеледі. XML мәтіндік форматта болғандықтан, стандартты XMPP таза бинарлық шешімдерге қарағанда желіге қосымша жүктеме тудырады. Бұл мәселені тәжірибелік XEP 0322: тиімді XML алмасу (EXI) форматы шешуге тырысты, онда XML тиімді бинарлық форматта, әсіресе схемалық ақпарат режимінде сериалдалады. Аталған XEP қазіргі уақытта тоқтап тұр. Желі арқылы бинарлық деректерді жіберу мүмкіндігі шектеулі. Бинарлық деректерді желі арқылы жібермес бұрын, оларды 64-тік кодтаудан өткізу қажет. Сондықтан, бинарлық деректердің қандай да бір маңызды көлемі (мысалы, файлдарды беру) желіден тыс жіберілгені жөн, ал координация үшін желілік хабарламалар қолданылады. Бұған ең жақсы мысал – Jingle XMPP кеңейту протоколы, XEP 0166.

Теңдестермен кездесулер

Jingle деп аталатын кеңейтуді қолдану арқылы XMPP түрлі желілерде машинадан машинаға немесе тікелей байланысты қолдаудың ашық жолын ұсына алады. Бұл мүмкіндік көбінесе IP телефониясы (VoIP) үшін пайдаланылады.

Көп пайдаланушы чат

XMPP бірнеше пайдаланушымен конференцияларды қолдайды, бұл үшін Multi User Chat (MUC) (XEP 0045) спецификациясы қолданылады. Қарапайым пайдаланушы үшін бұл Интернет релейлік чатқа (IRC) ұқсас.

Қауіпсіздік және шифрлау

XMPP серверлері оқшаулануы мүмкін (мысалы, компанияның ішкі желісінде), және қауіпсіз аутентификация (SASL) және нүктеден нүктеге шифрлау (TLS) негізгі XMPP спецификацияларына енгізілген, сондай-ақ Off the Record Messaging (OTR) – XMPP-нің хабарламалар мен деректерді шифрлауға мүмкіндік беретін кеңейтімі. Кейіннен ол жақсырақ кеңейтіммен, көп нүктеден көп нүктеге шифрлау (OMEMO, XEP 0384) арқылы пайдаланушылар арасындағы тікелей шифрлаумен ауыстырылды. Бұл деректерді бастапқы клиенттен шифрлап, мақсатты клиентте ғана қайта ашу арқылы қауіпсіздіктің жоғары деңгейін қамтамасыз етеді; сервер операторы жіберілген деректерді аша алмайды. Хаттарды, мысалы, Gajim бағдарламалық қамтамасымен OpenPGP арқылы шифрлауға болады.

Қызметті табу

Қазіргі таңда бірнеше қызметтерді іздеу протоколдары бар (мысалы, zeroconf немесе Service Location Protocol), бірақ XMPP жергілікті желіде немесе кез келген желіде орналасқан қызметтерді табуға, сондай-ақ XEP 0030 DISCO ережесімен белгіленгендей, олардың қолжетімділігін (қатысу туралы мәліметтер арқылы) анықтауға берік негіз береді.

Бағдарламалық жасақтама

XMPP көптеген клиенттер, серверлер және код кітапханаларында қолданылады. Осы іске асырулар түрлі бағдарламалық қамтамасыз ету лицензияларымен ұсынылады.

Серверлер

Көптеген XMPP серверлік бағдарламалық қамтамасы бар, олардың ішінде ejabberd және Prosody белгілілері.

Клиенттер

XMPP клиенттік бағдарламалық қамтамасының көптеген нұсқалары әртүрлі заманауи және ескі платформаларда қол жетімді, оның ішінде графикалық интерфейсті және командалық қатарға негізделген клиенттер де бар. XMPP сайтының мәліметінше, ең танымал бағдарламалық қамтамалардың кейбіреулері: Conversations (Android), Dino (BSD, Windows, Unix, Linux), Converse.js (веб-браузер, Linux, Windows, macOS), Gajim (Windows, Linux), Monal (macOS, iOS) және Swift.IM (macOS, Windows, Linux). Басқа клиенттерге: Bombus, ChatSecure, Coccinella, Miranda NG, Pidgin, Psi, Tkabber, Trillian және Xabber кіреді.

Пайдалану және тарату

Дүние жүзінде мыңдаған XMPP серверлері бар, олардың көпшілігі қоғамдық, ал жеке тұлғалар немесе коммерциялық мақсатсыз өз серверлерін басқаратын ұйымдар да бар. Көптеген веб-сайттар пайдаланушылар тіркеле алатын қоғамдық XMPP серверлерінің тізімін ұсынады (мысалы, XMPP.net сайтында). LiveJournal-дің "LJ Talk", Nimbuzz және HipChat сияқты бірнеше ірі IM қызметтері XMPP-ді немесе бұрын қолданған. DreamHost сияқты әртүрлі хостинг қызметтері клиенттерге дәстүрлі веб және электрондық пошта қызметтерімен қатар XMPP қызметтерін таңдау мүмкіндігін береді. Домен иелері тікелей өз XMPP серверлерін басқару қажеттілігін жолайтын, Cisco Webex Connect, Chrome.pl, Flosoft.biz, i-pobox.net және hosted.im сияқты бұлт түріндегі арнайы XMPP хостинг қызметтері де бар. XMPP IM емес қызметтерде де қолданылады, соның ішінде сұранысқа жауап беру қолданбалары сияқты смарт желі жүйелері, хабарға бағытталған делдалдық бағдарламалық құралдар және көптеген смартфон клиенттерінде мәтіндік хабарламаларды ұсыну үшін SMS-тің орнына.

Жергілікті емес іске қосулар

Кейбір ірі хабарлама провайдерлері өздерінің соңғы пайдаланушыларына бұл фактіні міндетті түрде жария етпей, өздерінің артқы жүйелерінде XMPP негізделген протоколдардың әртүрлі түрлерін пайдаланады немесе пайдаланған. Мысалы, Google 2005 жылдың тамызында Google Talk-ты ұсынды, бұл VoIP және IM жүйелерінің комбинациясы, ол XMPP-ті жылдам хабар алмасу үшін және Jingle деп аталатын дауыс және файлдарды беру сигналды протоколының негізі ретінде қолданды. Бастапқы іске қосуда серверден серверге байланыс қамтылмаған; Google бұл мүмкіндікті 2006 жылдың 17 қаңтарында қосты. Кейін Google Google Talk-қа бейне мүмкіндігін қосты, сонымен қатар сигнал беру үшін Jingle протоколын қолданды. 2013 жылдың мамыр айында Google XMPP үйлесімділігі серверден серверге федерация үшін Google Talk-тан алынатынын жариялады, бірақ ол клиенттен серверге қолдауды сақтайтын болады. Google Talk компаниясы Google өнімдерінің қатарынан алынды. 2008 жылдың қаңтар айында AOL өзінің AOL Instant Messenger (AIM) қызметіне XMPP-ті тәжірибелік қолдауды енгізді, бұл AIM пайдаланушыларына XMPP арқылы байланыс жасауға мүмкіндік берді. Алайда, 2008 жылдың наурыз айында бұл қызмет тоқтатылды. 2011 жылдың мамыр айынан бастап AOL XMPP-ді шектеулі түрде қолдайды. 2010 жылдың ақпан айында Facebook әлеуметтік желісі XMPP арқылы үшінші тараптың қолданбаларына өзінің чат мүмкіндігін ашты. Кейбір мүмкіндіктер XMPP арқылы қолжетімді емес еді, ал қолдау 2014 жылдың сәуірінде тоқтатылды. Сол сияқты, 2011 жылдың желтоқсанында Microsoft өзінің Microsoft Messenger қызметіне XMPP интерфейсін шығарды. Оның іс жүзіндегі мұрагері Skype да XMPP-ті шектеулі түрде қолдады. Apache Wave тағы бір мысал. XMPP - бұл Origin, PlayStation, сондай-ақ қазір тоқтатылған Xfire және Raptr сияқты ойынға байланысты платформаларда жеке чат үшін де-факто стандарт. Екі ерекше жағдай - Steam және Xbox LIVE; екеуі де өздерінің жеке хабарлама протоколдарын пайдаланады.

Бәсекелесетін стандарттар

XMPP жиі SIMPLE-ге, сеанстық бастау протоколына (SIP) негізделген, жылдам хабар алмасу және қатысу туралы хабарлау стандарты ретінде бәсекелес деп есептелді. Көп пайдаланушылы әңгірме үшін XMPP кеңейтімдері Интернет релейлік чатқа (IRC) бәсекелес болуы мүмкін, бірақ IRC әлдеқайда қарапайым, мүмкіндіктері шектеулі және одан да көп қолданылады. Жариялау-жазылу үшін XMPP кеңейтімдері Advanced Message Queuing Protocol (AMQP) сияқты көптеген мүмкіндіктерді қамтамасыз етеді.