Difference between revisions of "XMPP Core"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(wgsei bxwfn for 12% lrtmvi2)
m
 
(53 intermediate revisions by 22 users not shown)
Line 1: Line 1:
"The reform of [yuan] exchange rate formation mechanism will continued to be pushed forward with a market orientation. [The market] will play a bigger role in exchange rate determination to facilitate the balancing of international payments," the bank said in its statement. [url=http://www.airjordanshoes.net.co/]Retro air jordans[/url] The mine waste contains arsenic, lead and other heavy metals and has flowed at least 100 miles downstream to New Mexico. k [url=http://www.jacketscanadagoose.us.com/]canada goose sale[/url]  
+
{{stub}}
The affair was exposed by a national newspaper and Mrs Simpson firmly believes it turned people opinion against her dad. After the news emerged youths shouted 鈥榤urderer鈥?at Mr Heron as he walked in the garden of Aeolian house. Her sister, Jacqui, almost ended up in a fight in a nightclub after nasty things were said about her beloved dad. [url=http://www.oakleyglasses.us.org/]discount oakley sunglasses[/url] The release said: "On behalf of the Hammond Family, today Bland Richter, is requesting in writing that the Justice Department, US Attorney鈥檚 Office and FBI intervene in the ongoing investigation into the death of Zachary Hammond 聽because of the substantial violations of his civil rights and the need for a transparent and independent investigation of the Seneca Police Department鈥檚 policies, procedures and practices.
+
{{RealTitle|Основы XMPP}}
AED vs NZD (New Zealand dollar) [url=http://www.uggbootsblackfriday.us.com/]cheap ugg boots[/url] Muto had another chance to put Japan in front but fired straight at Wang Dalei and neither side was able to make any further inroads. v [url=http://www.outletcanadagoose.us.com/]canada goose outlet[/url]  
+
 
l Stockton and District Motor Club has booked Friday, August 14, and Friday, December 4, for two rounds of the TMSG quiz challenge. Both will be held at Stockton Bowling Club, Salisbury Terrace, Stockton, with an 8pm start. The cost is 拢5 per person, including food. To attend, email stocktonmotorclub@hotmail.co.uk or contact one of the committee members. [url=http://www.glassesoakley.us.com/]oakley sunglasses[/url] The two paced the Wildcats to a first-place finish with 31 points. Arrowhead was second with 22, Green Bay Notre Dame was third and Racine Prairie was fourth.
+
Основы протокола [[XMPP]] изложены в документе RFC 3920: "Extensible Messaging and Presence Protocol (XMPP): Core".
e The British actor who is starring in "Hamlet" in London has pleaded with fans not to film him on stage after what he described as "a hell of a week." [url=http://www.airjordanshoes.me/]air jordan shoes[/url] Social media is not a silver bullet [url=http://www.airjordanshoes.me/]air jordan shoes[/url]  
+
 
Running from August 7 to 9, the event 鈥?which is now in its third year - encourages families to sleepout overnight and find out which creatures they share their homes with, while raising money to help protect them. [url=http://www.onlinecoachoutlets.us.com/]Coach Outlet Store Online[/url] In separate talks with Chinese President Xi Jinping and Premier Li Keqiang during his two-day state visit, Erdogan agreed to cooperate with China on anti-terrorism, law enforcement, security, and other areas, without evading sensitive issues. http://www.jacketscanadagoose.us.com
+
Этот документ описывает обощённую архитектуру, схему адресации, термины "XML поток" и "XML [[станс]]", правила использования [[XML]], требования к совместимым реализациям протокола, а также соображения по поводу интернациональности и безопасности.
鈥淭he biggest growth in the halal tourism is being seen in the mid-market segment. And our strategy is to expand aggressively in this segment with a target of boosting our existing portfolio of hotels by 30 percent over the next five years. This will include having a hotel in every GCC country while doubling our portfolio in the UAE and Saudi Arabia. We also have a strong interest in the booming Asian markets such as India, Indonesia, Malaysia and China,鈥?he says. [url=http://www.cheapchinajerseysnfl.us.org/]Cheap NFL Jerseys[/url] Read this article in:  - Can the UN's agency for Palestinians be fixed?By Annie Slemrod and Joe Dyke SHAREPhoto: The UN agency for Palestinians is running on emptyJERUSALEM/BEIRUT, 3 July 2015 (IRIN) - Facing what its commissioner-general PierreKr henb hl called its most serious financial crisis ever, this week the UN agency for Palestinian refugees  it would let go around 100 foreign employees on short-term contracts, roughly half of all its international employees. p [url=http://www.ugg-bootscheap.us.com/]Cheap Uggs[/url]  
+
 
Sad fact is if you report driving that is so so dangerous you have a clever call handler advising you its your word against theirs so basically go away ! [url=http://www.ugg-bootscheap.us.com/]Uggs For Women[/url] My hope is when the museum unveils the pope emeritus' portrait, it prominently posts a display explaining how the Catholic Church through its world-encompassing charities treats the victims of AIDS/HIV with care and compassion. Such acknowledgment would provide a balanced view.  
+
== Введение ==
By Wang Jisi, Qian Yingyi, Wang Min, Jia Qingguo, and Bai Chongen [url=http://www.michaelkorsbags.me/]Michael Kors[/url] with Judith Ireland
+
Extensible Messaging and Presence Protocol (XMPP) — открытый, основанный на XML протокол для обмена в почти реальном времени сообщениями, передачи информации о пристуствии и сервисов вида "запрос-ответ".  
Unlike the previous discount policies, this time, passengers who buy second class ticket will also enjoy a discount, although the discounts in this category are not part of the official announcement. Plus, the discount will last for a whole year regardless when passengers make the purchase. [url=http://www.coachfactoryoutlet.click/]http://www.coachfactoryoutlet.click[/url] Adding bathrooms, especially an en suite, is a brilliant way to up value and make your home life easier, especially if there are too many people using the family bathroom. This is when an en suite for the main bedroom is invaluable. People sometimes think that having as many bedrooms as possible adds value, but it's usually more valuable to have enough bathrooms for the number of bedrooms.  
+
Базовый синтаксис и семантика были разработаны в сообществе Jabber, большей частью в 1999 году.  
Last year: Fresh tires allowed Ryan Hunter-Reay to rocket to the front from 10th in the final eight laps of a race Tony Kanaan had dominated. [url=http://www.coachoutletstores.net.co/]Coach Factory[/url] If this proposed policy becomes law, traditional leaders such as King Zwelithini would legitimately be able to lodge claims to areas where their ancestors were buried or where their homesteads were located.  
+
В 2002, рабочая группа XMPP занялась разработкой адаптации протокола Jabber, которая была бы пригодна в качестве технологии IETF для обмена сообщениями и информацией о присутствии.
k Acapulco was backed off the boards as the 5-2 favourite, and justified the punters鈥?faith as she burst clear to claim an authoritative success. [url=http://www.outletmoncler.us.com/]moncler outlet[/url] New ambassadors took constitutional oath [21/October/2007] SANA'A, (Saba)- The newly appointed ambassadors to Germany, Mohammed al-Iryani, Malaysia, Abdullah al-Muntasir, China, Abdul-Malik al-Mu'alimi, United Arab Emirates, Abdullah al-Daf'i, Russia, Mohammed al-Hilali and Japan, Marwan noman, took the constitutional oath on Sunday in front of President Ali Abdullah Saleh. Then, president Saleh held a meeting with them, asking them to work hard to enhance ties of Yemen with the countries which they were appointed to serve in and extend fields of mutual cooperation between Yemen and these countries. AH/AM Saba
+
Как результат этой работы, данный текст описывает основные возможности XMPP 1.0; расширения, необходимые для обмена сообщениями и информацией о присутствии, определенные в RFC 2779, определены в Extensible Messaging and Presence Protocol
Twitter: [url=http://www.cheapnfljerseys.site/]cheap nfl jerseys[/url] A roller dial/button on the console allows the driver to choose one of three driving modes, Eco (ugh), Comfort (fine for everyday) and Dynamic (super fun). Dynamic changes the 8-speed automatic's shift pattern to give the XC90 a lot more power from the start. If you need to merge ahead of some slower traffic, this is the setting you'll want. It makes this 4,627-pound vehicle feel downright fast. m [url=http://www.rosherunshoes.com.co/]nike roshe run[/url]
+
(XMPP): [[Instant Messaging and Presence|XMPP IM]].
The French winger was picked out in space down the right. He rolled a pass towards the penalty spot, Sissoko took a touch before rolling in to the path of Colback and the midfielder picked out the bottom right corner of Begovic鈥檚 net. [url=http://www.coachoutletstoreonline.me/]Coach Outlet[/url] Cattle Barns: 8 a.m. Featuring Dairy Cattle and Market Steers; 3 p.m. Closed to the Public for Changeover
+
 
l The fifth-year coach said Mickey was an inspiration to him, and that players can learn a lesson from the way his brother conducted his life. [url=http://www.michaelkorsoutlet.com.co/]michael kors outlet online[/url] Over the past few days I have been in hospital with my 9-week-old son. h
+
== Обобщённая архитектура сети ==
The afternoon might have gone more smoothly had Leadbitter converted his chance. The skipper, who scored goals for fun in the first half of last season, created the opening himself when he played a lovely one-two with Kike. [url=http://www.oakleysunglasses.nom.co/]www.oakleysunglasses.nom.co[/url] Veerbeek put the icing on the cake, so to speak, by calmly converting two free throws with 11 seconds left, then blocking a three-point attempt just before the buzzer. [url=http://www.louisvuitton-outletonline.us.com/]louis vuitton outlet online[/url]
+
 
PjxwPiYjODIyMDtJdCB3YXMga2luZCBvZiB0d28gZGlmZmVyZW50IG5pbmVzLCB0byBiZSBob25l [url=http://www.oakleysunglasses.in.net/]oakley sunglasses outlet[/url] What might assist Zaken is Jacob Perry's recent departure from the chairmanship of Mizrahi Tefahot. It would appear that the Bank of Israel will not allow the bank's CEO, Eli Yones, to be appointed chairman, because of the need for a cooling off period. Zaken must therefore see to it that a strong and authoritative chairman is appointed (not a simple proposition, given that Yones himself is a strong and dominant manager), who can sort out the board and restore it to its original purpose to take care of the bank and its customers, and not to deal in disputes between its shareholders. n [url=http://www.cheapnfljerseys.site/]cheap nfl jerseys[/url]
+
=== Обзор ===
Ben Youngs and Richard Wigglesworth filled the starting and replacement scrum-half slots, with Care overlooked and released for club duty. [url=http://www.bootsuggcheap.us.com/]Uggs For Women[/url] Speaking after paying floral tributes to the late Rai, journalist Chidambara Baikampady said the present generation has the onerous responsibility of carrying forward the life and messages of the veteran activist.  
+
Хотя XMPP и не привязан к конкретной сетевой архитектуре, обычно он реализуется с архитектурой "клиент-сервер", где клиент соединяется с сервером по протоколу TCP, и соединения между серверами тоже производятся по протоколу TCP.
aG93IG1hbnkgcGVvcGxlIHlvdSBydW4gaW50byB5b3Uga25vdy4gSXQmIzgyMTc7cyBmcmlnaHRl [url=http://www.cheapuggssale.us.org/]Cheap Uggs[/url] How is it possible for a student to go Bannu when there is curfew? I don t know why the government is unable to understand the basic reason for militancy North Waziristan was a lack of education and unemployment, he said. s [url=http://www.canadagooseoutlet.net.co/]canada goose outlet[/url]
+
 
Together, they added 66 runs to Surrey鈥檚 total off only 45 balls, with Curran making 44 and Ansari eventually unbeaten on 66. [url=http://www.oakleysunglasses.nom.co/]oakley sunglasses[/url] Olivia Alair, spokeswoman for the U.S. Department of Transportation, said Federal Railroad Administrator Joe Szabo signed the deal because the Wisconsin Department of Transportation recently completed all of the steps necessary in order for their grant agreement to be finalized, including their stakeholder agreements with Canadian Pacific Railway and the Wisconsin Southern Railroad. This is a major step forward in advancing the national high-speed rail program, which will connect the country, spur economic development and bring manufacturing jobs to the U.S.
+
[[Image:Xmpp_core_network.PNG|Примерная структура сети]]
 +
 
 +
Примерная структура сети XMPP включает в себя [[Сервер|сервера]], к которым подключаются [[Клиент|клиенты]]. На схеме также показан транспорт в другую [[IM]] сеть. Синим цветом выделены соединения XMPP, черным - соединения сторонней сети.
 +
 
 +
=== Сервер ===
 +
[[Сервер]] действует как уровень абстракции для соединений XMPP. Его основные обязанности:
 +
* управлять соединениями(сессиями) других [[Сущность|сущностей]], в форме XML потоков от/для авторизованных клиентов, других серверов и прочих сущностей.
 +
* маршрутизировать корректно адресованные XML [[Станс|стансы]] между указанными сущностями посредством XML потоков.
 +
 
 +
Большинство XMPP-совместимых серверов также выполняют обязанности по хранению данных клиентов (например, их [[Ростер|контакт-листов]] в случае базирующихся на XMPP [[IM]]-приложений). В этом случае данные XML обрабатываются самим сервером, и никуда не перенаправляются.
 +
 
 +
=== Клиент ===
 +
Большинство клиентов подключаются напрямую к серверам через {{w|TCP}}-соединения, и используют XMPP для получения доступа к возможностям [[Сервер|сервера]] и связанных с ним [[Сервис|сервисов]]. Одновременно могут быть подключены несколько [[Ресурс|ресурсов]] (например, обозначающих устройства или местоположения) одного клиента. Каждый ресурс должен иметь уникальный идентификатор ресурса (см. [[XMPP Core#Схема адресации|Схема адресации]]).
 +
 
 +
Рекомендуется для [[C2S|клиент-серверных соединений]] использовать порт 5222.
 +
 
 +
=== Транспорт ===
 +
Транспорт - специальный сервис, работающий на стороне сервера, чья основная функция - обеспечивать перевод [[XMPP]] в протокол сторонней (не XMPP) [[IM]] сети и обратно. Примерами могут являться [[Gateway:SMTP|e-mail]], [[Gateway:IRC|Internet Relay Chat]], [[SIMPLE]], [[Gateway:SMS|SMS]], а также коммерческие IM-сети, такие как [[Gateway:AIM|AIM]], [[Gateway:ICQ|ICQ]], [[Gateway:MSN|MSN]] и [[Gateway:Yahoo|Yahoo! IM]]. Коммуникации между транспортами и XMPP-серверами, а также между транспортами и сторонними серверами не описываются в этом документе.
 +
 
 +
=== Сеть ===
 +
Поскольку каждый сервер идентифицируется его сетевым адресом, и поскольку [[S2S|сервер-серверные коммуникации]] являются прямым расширением [[C2S|клиент-серверного протокола]], фактически система состоит из набора взаимодействующих серверов. Таким образом, <juliet@example.com> может обмениваться сообщениями, информацией о присутствии и др. с <romeo@example.net>. Этот шаблон знаком по протоколам вроде {{w|SMTP}}, которые пользуются стандартами сетевой адресации. Взаимодействие между серверами НЕОБЯЗАТЕЛЬНО. Если оно доступно, оно должно производиться посредством XML потоков через TCP соединения. Рекомендуемый порт для межсерверного взаимодействия 5269.
 +
 
 +
== Схема адресации ==
 +
 
 +
=== Обзор ===
 +
Сущность - что-то, что может быть воспринято как конечная точка сети и может обмениваться данными по протоколу XMPP.  
 +
Все сущности имеют уникальный адрес, соотвествующий RFC 2396. По историческим причинам, идентификатор называется Jabber Identifier или [[JID]].
 +
Корректный JID состоит из идентификатора домена (domain), идентификатора узла(node) и идентификатора ресурса(resource).
 +
 
 +
Синтакс JID в [[w:Форма Бэкуса — Наура|форме Бэкуса—Наура]]:
 +
 
 +
      jid            = [ node "@" ] domain [ "/" resource ]
 +
      domain          = fqdn / address-literal
 +
      fqdn            = (sub-domain 1*("." sub-domain))
 +
      sub-domain      = (internationalized domain label)
 +
      address-literal = IPv4address / IPv6address
 +
 
 +
Все JID'ы строятся по указанной схеме.  
 +
Наиболее частое её применение - идентификация пользователя IM, сервера, к которому пользователь подключен, и ресурса пользователя в форме <tt>user@server/resource</tt>.
 +
 
 +
Тем не менее, могут существовать узлы, не являющиеся пользователями. Например, конкретная конференция на [[MUC|сервере конференций]] может быть адресована как <tt>room@server</tt>, а её участник может быть адресован как <tt>room@server/nick</tt>.
 +
 
 +
Каждая допустимая часть JID'а по длине не должна превышать 1023 байта. Таким образом, полная длина JID с учетом символов "@" и "/" не может превышать 3071 байт.
 +
 
 +
== XML-потоки ==
 +
 
 +
=== Обзор ===
 +
Две фундаментальные концепции делают возможным быстрый асинхронный обмен сравнительно маленькими порциями структурированной информации между сущностями: [[XML-поток|XML-потоки]] и [[Станс|XML-стансы]].
 +
Эти термины определяются следующим образом:
 +
 
 +
'''XML-поток''' - это контейнер для обмена XML-элементами между любыми двумя сущностями в сети.
 +
Начало XML-потока однозначно обозначается открывающим XML-тегом <tt>&lt;stream&gt;</tt> (с необходимыми атрибутами и указанием пространства имён), а конец XML-потока однозначно обозначается закрывающим тегом <tt>&lt;/stream&gt;</tt>.
 +
В течение жизни потока сущность, создавшая поток, может посылать неограниченное количество XML-элементов через поток, включая как элементы для создания потока (например, предложить использовать [[TLS]] (Секция 5) или [[SASL]] (Секция 6)), так и [[Станс|XML-стансы]] (элементы <tt>&lt;message/&gt;</tt>, <tt>&lt;presence/&gt;</tt> и <tt>&lt;iq/&gt;</tt>, с пространством имён по умолчанию).
 +
"Начальный поток" предлагается инициирующей сущностью (обычно клиентом или сервером) принимающей сущности (обычно серверу), и может рассматриваться как соответствующая инициатору потока "сессия".
 +
"Начальный поток" позволяет производить односторонюю передачу информации от инициатора к получателю; для передачи в обратном направлении принимающая сущность ДОЛЖНА предложить поток инициатору ("ответный поток").
 +
 
 +
'''XML-станс''' - дискретная семантическая единица структурированной информации, переcылаемая от одной сущности к другой посредством XML-потока.
 +
XML-станс существует как непосредственный потомок корневого элемента <tt>&lt;stream/&gt;</tt>.  
 +
{{todo|An XML stanza exists at the direct child level of the root <stream/> element and is said to be well-balanced if it matches the production [http://tools.ietf.org/html/rfc3920#ref-43 43] content of [http://tools.ietf.org/html/rfc3920#ref-XML XML].}}
 +
Начало любого XML-станса однозначно обозначается открывающим тегом на глубине 1 в XML-потоке (например, <tt>&lt;presence&gt;</tt>), и конец однозначно обозначается соответствующим закрывающим тегом на глубине 1 (например, <tt>&lt;/presence&gt;</tt>).
 +
XML-станс МОЖЕТ содержать дочерние элементы (с соответствующими атрибутами, дочерними элементами и символьными данными), если это необходимо для передачи желаемой информации.
 +
Единственные XML-стансы, определенные здесь - элементы <tt>&lt;message/&gt;</tt>, <tt>&lt;presence/&gt;</tt> и <tt>&lt;iq/&gt;</tt>, с пространством имён по умолчанию, как описано в Секции 9; XML элементы, необходимые для инициации [[TLS]] (Секция 5), [[SASL]] (Секция 6), или Server Dialback (Секция 8) не являются XML-стансами.
 +
 
 +
В качестве примера рассмотрим сессию клиента с сервером.
 +
Для подключения к серверу клиент ДОЛЖЕН инициировать XML-поток, послав серверу открывающий тег <tt>&lt;stream&gt;</tt>, возможно, предварив его текстовым описанием версии XML и используемой кодировки (см. Изменения в текстовом описании (Секция 11.4) и Кодировка символов (Секция 11.5)).
 +
В зависимости от локальных правил и характеристик сервиса, серверу СЛЕДУЕТ ответить клиенту вторым XML-потоком, возможно, предварив его текстовым описанием.
 +
Как только клиент завершил приветствие SASL, он МОЖЕТ посылать неограниченное число XML-станс через поток любому получателю в сети.
 +
Когда клиент хочет закрыть поток, он просто посылает закрывающий тег <tt>&lt;/stream&gt;</tt> (в другом варианте, поток может быть закрыть сервером), после чего клиенту и серверу СЛЕДУЕТ также прервать нижележащее соединение (обычно TCP).
 +
Те, кто привык думать об XML как о документе, могут рассматривать сессию клиента с сервером как два незакрытых XML документа: один от клиента к серверу, и один от сервера к клиенту.
 +
С этой точки зрения, корневой элемент <tt>&lt;stream/&gt;</tt>, может рассматриваться как основная сущность для обоих "документов", и оба этих "документа" строятся за счет аккумулирования XML-станс, присланных по соответствующему потоку.
 +
Тем не менее, такая точка зрения - не более чем соглашение; XMPP имеет дело не с документами, а с потоками и стансами.
 +
 
 +
В сущности, XML-поток действует как конверт для всех переданных XML-станс. Упрощенно его можно представить так:
 +
<pre>
 +
  |--------------------|
 +
  | <stream>          |
 +
  |--------------------|
 +
  | <presence>        |
 +
  |  <show/>          |
 +
  | </presence>        |
 +
  |--------------------|
 +
  | <message to='foo'> |
 +
  |  <body/>          |
 +
  | </message>        |
 +
  |--------------------|
 +
  | <iq to='bar'>      |
 +
  |  <query/>        |
 +
  | </iq>              |
 +
  |--------------------|
 +
  | ...               |
 +
  |--------------------|
 +
  | </stream>          |
 +
  |--------------------|
 +
</pre>
 +
 
 +
=== Привязка к TCP ===
 +
 
 +
Хотя нет необходимости передавать XML поток  через [TCP] соединение (например, две сущности могут подключаться друг к другу через другой механизм такой как [HTTP] туннелирование), данная спецификация определяет привязку XMPP только к TCP. В контексте клиент-серверного взаимодействия, сервер ДОЛЖЕН разрешать клиенту использование одного TCP соединения для отправки XML стансов от клиента к серверу и от сервера к клиенту. При взаимодействии сервер-сервер сервер ДОЛЖЕН использовать одно TCP соединение для стансов, посылаемых сервером пиру и другое TCP соединение (инициированное пиром) для стансов от пира к серверу, всего два TCP соединения.
 +
 
 +
=== Безопасность потока ===
 +
 
 +
=== Атрибуты потока ===
 +
 
 +
==== Поддержка версий ====
 +
 
 +
=== Указание пространства имён ===
 +
 
 +
=== Возможности потока ===
 +
 
 +
=== Ошибки потока ===
 +
 
 +
==== Правила ====
 +
 
 +
==== Синтаксис ====
 +
 
 +
==== Предпоределенные условия ====
 +
 
 +
==== Специфические условия приложения ====
 +
 
 +
=== Упрощенные примеры потоков ===
 +
 
 +
== Использование TLS ==
 +
 
 +
== Использование SASL ==
 +
 
 +
== Назначение ресурса ==
 +
 
 +
== Server Dialback ==
 +
 
 +
== XML стансы ==
 +
 
 +
== Правила обработки XML стансов на сервере ==
 +
 
 +
== Использование XML в протоколе XMPP ==
 +
 
 +
== Требования к совместимости с Основами ==
 +
 
 +
== Соображения по поводу интернациональности ==
 +
 
 +
== Соображения по поводу безопасности ==
 +
 
 +
== Соображения {{w|IANA}} ==
 +
 
 +
== Примечания ==
 +
 
 +
== Различия между Основами [[Jabber]] и [[XMPP]] ==
 +
 
 +
== Ссылки ==
 +
 
 +
* [http://book.itep.ru/4/45/xmpp.htm Частичный перевод на русский]
 +
* [http://tools.ietf.org/html/rfc3920 RFC 3920 на сайте ietf.org] (англ.)

Latest revision as of 18:53, 17 November 2015

Информации мало или она отсутствует

Пока в данной статье мало информации. Приносим извинения.

Если вы хотите написать по теме, — сделайте это.

В соответствии с принятыми в данной вики договорённостями, правильное название этой статьи — Основы XMPP.
Для ссылок сюда с других страниц
ЯВики используйте название
Основы XMPP
На других ресурсах
можно также давать ссылку
http://jawiki.ru/XMPP_Core

Основы протокола XMPP изложены в документе RFC 3920: "Extensible Messaging and Presence Protocol (XMPP): Core".

Этот документ описывает обощённую архитектуру, схему адресации, термины "XML поток" и "XML станс", правила использования XML, требования к совместимым реализациям протокола, а также соображения по поводу интернациональности и безопасности.

Введение[edit]

Extensible Messaging and Presence Protocol (XMPP) — открытый, основанный на XML протокол для обмена в почти реальном времени сообщениями, передачи информации о пристуствии и сервисов вида "запрос-ответ". Базовый синтаксис и семантика были разработаны в сообществе Jabber, большей частью в 1999 году. В 2002, рабочая группа XMPP занялась разработкой адаптации протокола Jabber, которая была бы пригодна в качестве технологии IETF для обмена сообщениями и информацией о присутствии. Как результат этой работы, данный текст описывает основные возможности XMPP 1.0; расширения, необходимые для обмена сообщениями и информацией о присутствии, определенные в RFC 2779, определены в Extensible Messaging and Presence Protocol (XMPP): XMPP IM.

Обобщённая архитектура сети[edit]

Обзор[edit]

Хотя XMPP и не привязан к конкретной сетевой архитектуре, обычно он реализуется с архитектурой "клиент-сервер", где клиент соединяется с сервером по протоколу TCP, и соединения между серверами тоже производятся по протоколу TCP.

Примерная структура сети

Примерная структура сети XMPP включает в себя сервера, к которым подключаются клиенты. На схеме также показан транспорт в другую IM сеть. Синим цветом выделены соединения XMPP, черным - соединения сторонней сети.

Сервер[edit]

Сервер действует как уровень абстракции для соединений XMPP. Его основные обязанности:

  • управлять соединениями(сессиями) других сущностей, в форме XML потоков от/для авторизованных клиентов, других серверов и прочих сущностей.
  • маршрутизировать корректно адресованные XML стансы между указанными сущностями посредством XML потоков.

Большинство XMPP-совместимых серверов также выполняют обязанности по хранению данных клиентов (например, их контакт-листов в случае базирующихся на XMPP IM-приложений). В этом случае данные XML обрабатываются самим сервером, и никуда не перенаправляются.

Клиент[edit]

Большинство клиентов подключаются напрямую к серверам через TCP-соединения, и используют XMPP для получения доступа к возможностям сервера и связанных с ним сервисов. Одновременно могут быть подключены несколько ресурсов (например, обозначающих устройства или местоположения) одного клиента. Каждый ресурс должен иметь уникальный идентификатор ресурса (см. Схема адресации).

Рекомендуется для клиент-серверных соединений использовать порт 5222.

Транспорт[edit]

Транспорт - специальный сервис, работающий на стороне сервера, чья основная функция - обеспечивать перевод XMPP в протокол сторонней (не XMPP) IM сети и обратно. Примерами могут являться e-mail, Internet Relay Chat, SIMPLE, SMS, а также коммерческие IM-сети, такие как AIM, ICQ, MSN и Yahoo! IM. Коммуникации между транспортами и XMPP-серверами, а также между транспортами и сторонними серверами не описываются в этом документе.

Сеть[edit]

Поскольку каждый сервер идентифицируется его сетевым адресом, и поскольку сервер-серверные коммуникации являются прямым расширением клиент-серверного протокола, фактически система состоит из набора взаимодействующих серверов. Таким образом, <juliet@example.com> может обмениваться сообщениями, информацией о присутствии и др. с <romeo@example.net>. Этот шаблон знаком по протоколам вроде SMTP, которые пользуются стандартами сетевой адресации. Взаимодействие между серверами НЕОБЯЗАТЕЛЬНО. Если оно доступно, оно должно производиться посредством XML потоков через TCP соединения. Рекомендуемый порт для межсерверного взаимодействия 5269.

Схема адресации[edit]

Обзор[edit]

Сущность - что-то, что может быть воспринято как конечная точка сети и может обмениваться данными по протоколу XMPP. Все сущности имеют уникальный адрес, соотвествующий RFC 2396. По историческим причинам, идентификатор называется Jabber Identifier или JID. Корректный JID состоит из идентификатора домена (domain), идентификатора узла(node) и идентификатора ресурса(resource).

Синтакс JID в форме Бэкуса—Наура:

     jid             = [ node "@" ] domain [ "/" resource ]
     domain          = fqdn / address-literal
     fqdn            = (sub-domain 1*("." sub-domain))
     sub-domain      = (internationalized domain label)
     address-literal = IPv4address / IPv6address

Все JID'ы строятся по указанной схеме. Наиболее частое её применение - идентификация пользователя IM, сервера, к которому пользователь подключен, и ресурса пользователя в форме user@server/resource.

Тем не менее, могут существовать узлы, не являющиеся пользователями. Например, конкретная конференция на сервере конференций может быть адресована как room@server, а её участник может быть адресован как room@server/nick.

Каждая допустимая часть JID'а по длине не должна превышать 1023 байта. Таким образом, полная длина JID с учетом символов "@" и "/" не может превышать 3071 байт.

XML-потоки[edit]

Обзор[edit]

Две фундаментальные концепции делают возможным быстрый асинхронный обмен сравнительно маленькими порциями структурированной информации между сущностями: XML-потоки и XML-стансы. Эти термины определяются следующим образом:

XML-поток - это контейнер для обмена XML-элементами между любыми двумя сущностями в сети. Начало XML-потока однозначно обозначается открывающим XML-тегом <stream> (с необходимыми атрибутами и указанием пространства имён), а конец XML-потока однозначно обозначается закрывающим тегом </stream>. В течение жизни потока сущность, создавшая поток, может посылать неограниченное количество XML-элементов через поток, включая как элементы для создания потока (например, предложить использовать TLS (Секция 5) или SASL (Секция 6)), так и XML-стансы (элементы <message/>, <presence/> и <iq/>, с пространством имён по умолчанию). "Начальный поток" предлагается инициирующей сущностью (обычно клиентом или сервером) принимающей сущности (обычно серверу), и может рассматриваться как соответствующая инициатору потока "сессия". "Начальный поток" позволяет производить односторонюю передачу информации от инициатора к получателю; для передачи в обратном направлении принимающая сущность ДОЛЖНА предложить поток инициатору ("ответный поток").

XML-станс - дискретная семантическая единица структурированной информации, переcылаемая от одной сущности к другой посредством XML-потока. XML-станс существует как непосредственный потомок корневого элемента <stream/>.

ToDo: An XML stanza exists at the direct child level of the root <stream/> element and is said to be well-balanced if it matches the production 43 content of XML.

Начало любого XML-станса однозначно обозначается открывающим тегом на глубине 1 в XML-потоке (например, <presence>), и конец однозначно обозначается соответствующим закрывающим тегом на глубине 1 (например, </presence>). XML-станс МОЖЕТ содержать дочерние элементы (с соответствующими атрибутами, дочерними элементами и символьными данными), если это необходимо для передачи желаемой информации. Единственные XML-стансы, определенные здесь - элементы <message/>, <presence/> и <iq/>, с пространством имён по умолчанию, как описано в Секции 9; XML элементы, необходимые для инициации TLS (Секция 5), SASL (Секция 6), или Server Dialback (Секция 8) не являются XML-стансами.

В качестве примера рассмотрим сессию клиента с сервером. Для подключения к серверу клиент ДОЛЖЕН инициировать XML-поток, послав серверу открывающий тег <stream>, возможно, предварив его текстовым описанием версии XML и используемой кодировки (см. Изменения в текстовом описании (Секция 11.4) и Кодировка символов (Секция 11.5)). В зависимости от локальных правил и характеристик сервиса, серверу СЛЕДУЕТ ответить клиенту вторым XML-потоком, возможно, предварив его текстовым описанием. Как только клиент завершил приветствие SASL, он МОЖЕТ посылать неограниченное число XML-станс через поток любому получателю в сети. Когда клиент хочет закрыть поток, он просто посылает закрывающий тег </stream> (в другом варианте, поток может быть закрыть сервером), после чего клиенту и серверу СЛЕДУЕТ также прервать нижележащее соединение (обычно TCP). Те, кто привык думать об XML как о документе, могут рассматривать сессию клиента с сервером как два незакрытых XML документа: один от клиента к серверу, и один от сервера к клиенту. С этой точки зрения, корневой элемент <stream/>, может рассматриваться как основная сущность для обоих "документов", и оба этих "документа" строятся за счет аккумулирования XML-станс, присланных по соответствующему потоку. Тем не менее, такая точка зрения - не более чем соглашение; XMPP имеет дело не с документами, а с потоками и стансами.

В сущности, XML-поток действует как конверт для всех переданных XML-станс. Упрощенно его можно представить так:

   |--------------------|
   | <stream>           |
   |--------------------|
   | <presence>         |
   |   <show/>          |
   | </presence>        |
   |--------------------|
   | <message to='foo'> |
   |   <body/>          |
   | </message>         |
   |--------------------|
   | <iq to='bar'>      |
   |   <query/>         |
   | </iq>              |
   |--------------------|
   | ...                |
   |--------------------|
   | </stream>          |
   |--------------------|

Привязка к TCP[edit]

Хотя нет необходимости передавать XML поток через [TCP] соединение (например, две сущности могут подключаться друг к другу через другой механизм такой как [HTTP] туннелирование), данная спецификация определяет привязку XMPP только к TCP. В контексте клиент-серверного взаимодействия, сервер ДОЛЖЕН разрешать клиенту использование одного TCP соединения для отправки XML стансов от клиента к серверу и от сервера к клиенту. При взаимодействии сервер-сервер сервер ДОЛЖЕН использовать одно TCP соединение для стансов, посылаемых сервером пиру и другое TCP соединение (инициированное пиром) для стансов от пира к серверу, всего два TCP соединения.

Безопасность потока[edit]

Атрибуты потока[edit]

Поддержка версий[edit]

Указание пространства имён[edit]

Возможности потока[edit]

Ошибки потока[edit]

Правила[edit]

Синтаксис[edit]

Предпоределенные условия[edit]

Специфические условия приложения[edit]

Упрощенные примеры потоков[edit]

Использование TLS[edit]

Использование SASL[edit]

Назначение ресурса[edit]

Server Dialback[edit]

XML стансы[edit]

Правила обработки XML стансов на сервере[edit]

Использование XML в протоколе XMPP[edit]

Требования к совместимости с Основами[edit]

Соображения по поводу интернациональности[edit]

Соображения по поводу безопасности[edit]

Соображения IANA[edit]

Примечания[edit]

Различия между Основами Jabber и XMPP[edit]

Ссылки[edit]