Difference between revisions of "XMPP Core"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(vhkvk bouqo for 92% xdkaio5)
m
 
(44 intermediate revisions by 15 users not shown)
Line 1: Line 1:
Those groups, both super political action committees, are barred by federal rules from talking directly to the candidate they support. <a href=http://www.airmaxnike.us.com/>air max 90</a> The nominations are then cut down to a shortlist by a panel from the Students鈥?Union who choose a winner. u <a href=http://www.bootsuggcheap.us.com/>Cheap Uggs</a>
+
{{stub}}
Indeed, while breast cancer survival rates now may sound overwhelmingly positive, 40 years ago, only 40 per cent lived for ten years or more after diagnosis. <a href=http://www.ArizonaCardinalsJersey.us.com/>Cheap Jerseys From China</a> Saturday, March 7Clear your calendars, craft beer lovers, because for one day and one day only, more than fifty of the top breweries in the nation will converge at the Alliant Energy Center for Madison on Tap Craft Beer Festival. Choosing which of the 100 releases to sample first, from ales to lagers, might be the hardest decision you will ever make. 2:30-6 p.m.,  
+
{{RealTitle|Основы XMPP}}
IGZvciBhICYjODIyMDtmcmVlJiM4MjIxOyBncmFudCBhbmQgZG9uJiM4MjE3O3QgYmUgZGVjZWl2 <a href=http://www.louisvuitton-outletonline.us.com/>Louis Vuitton Outlet</a> Looking east from the third floor of their Whitefish Bay home, Mike and Katie Weber made a house-altering decision. j <a href=http://www.jacketscanadagoose.us.com/>canada goose jacket</a>
+
 
As well as their victory against the Citizens earlier in the season, there has been a rare double against , beating Chelsea and Manchester United in the Capital One Cup, and seeing off Everton at Goodison Park on Boxing Day - all admirable results for a team that has been near the bottom of the table all season. <a href=http://www.ugg-bootscheap.us.com/>Cheap Uggs</a> Said Roethlisberger, I'm just lucky to be on this team with these guys.
+
Основы протокола [[XMPP]] изложены в документе RFC 3920: "Extensible Messaging and Presence Protocol (XMPP): Core".
i Under those federal standards, known as COOL, which stands for 鈥渃ountry of origin labeling,鈥?only shrimpharvested and processed in the United States or by a United States-flagged vessel may be labeled as a product of the United States. <a href=http://www.airmax-90nike.us.com/>nike outlet shoes</a> According to Wood, the rise of urban violence in some of the region s most important economic arteries requires new levels of coordination between different actors, with the crisis in Guadalajara providing something of a litmus test. <a href=http://www.cheapuggssale.us.org/>cheap ugg boots</a>
+
 
"It feels like you've done something right when you get great actors like that on board. I knew both from before; it felt like working with people you know and trust, so it was a lovely atmosphere," Murphy adds. <a href=http://www.cheapuggssale.us.org/>cheap ugg boots</a> While KV Malkapuram hosted the regional cricket meet, volleyball for girls, boxing for boys, and judo and taekwondo for both boys and girls were conducted at KV Waltair. http://www.louisvuitton-outletonline.us.com
+
Этот документ описывает обощённую архитектуру, схему адресации, термины "XML поток" и "XML [[станс]]", правила использования [[XML]], требования к совместимым реализациям протокола, а также соображения по поводу интернациональности и безопасности.
For more information about the closest Look Good, Feel Better program in your neighborhood, click <a href=http://www.ugg-bootscheap.us.com/>Ugg Outlet</a> "Some communities are very wary of responders coming in and asking questions about what they do and who they do it with." q <a href=http://www.coachoutlet.nom.co/>Coach Outlet Store</a>  
+
 
Managers say volunteers of all ages are needed for a range of jobs including engineering, administration, guarding and ticket and event sales, with some driver training also available. <a href=http://www.coachoutletstores.net.co/>Coach Outlet</a> GOOD ENOUGH TO EAT: BLACKBERRIES
+
== Введение ==
Address; time in village: 759 Glacier Road; 25 years <a href=http://www.ugg-bootscheap.us.com/>Cheap Uggs</a> Aside from a big hundred at Lord's in July 2013, Root only passed 30 once in seven innings against Australia and in the return series three months later he averaged 27.42 which subsequently led to his axing.  
+
Extensible Messaging and Presence Protocol (XMPP) &mdash; открытый, основанный на XML протокол для обмена в почти реальном времени сообщениями, передачи информации о пристуствии и сервисов вида "запрос-ответ".  
Madison: If I could change one thing about basketball it would have to be fouls. Nobody likes to sit on the bench in foul trouble, we would all much rather be out on the court. <a href=http://www.moncleroutlet.nom.co/>moncler outlet</a> Chen said many officers are reluctant to retire from the military because their income and job benefits continue to rise as a result of the PLA's efforts to improve service members' pay.
+
Базовый синтаксис и семантика были разработаны в сообществе Jabber, большей частью в 1999 году.  
The aptly named Swatch, Mood's pooch, a Boston terrier with a black-and-white face, napped lazily on the floor while the scurrying designers rung up their purchases and departed for the work room. <a href=http://www.boots-uggs.us.com/>Uggs Outlet</a> I'm not a professor of education. But my mother always told me 'you can't turn a sow's ear into a silk purse'.
+
В 2002, рабочая группа XMPP занялась разработкой адаптации протокола Jabber, которая была бы пригодна в качестве технологии IETF для обмена сообщениями и информацией о присутствии.
o j4justice83 <a href=http://www.coachoutlet.nom.co/>Coach Outlet Store Online</a> The headline read: Rihanna pregnant with Leonardo s baby: He doesn t want the baby.  
+
Как результат этой работы, данный текст описывает основные возможности XMPP 1.0; расширения, необходимые для обмена сообщениями и информацией о присутствии, определенные в RFC 2779, определены в Extensible Messaging and Presence Protocol
Stiviano has said Sterling consented to recordings she made on phones while they carried on a sexless relationship. <a href=http://www.outletmichael-kors.us.com/>Michael Kors</a> The other Democratic members of the state delegation will gain added seniority in the new Congress, but only one has the remote possibility of inheriting a new committee chairmanship. f <a href=http://www.louisvuittonbags.nom.co/>www.louisvuittonbags.nom.co</a>  
+
(XMPP): [[Instant Messaging and Presence|XMPP IM]].
Most sensible people would never support a councillor who disagrees with the majority because of their own selective convictions (like Bliar and Iraq) or the spineless Labour one's who abstain from voting on anything in case we find out if they were for or against the wishes of the total electorate. <a href=http://www.bootsuggcheap.us.com/>Cheap Uggs</a> TELL CAROL
+
 
n Aramco, which claims on its website to have maximum sustainable capacity of 12 million barrels per day, had invested heavily in protecting the production infrastructure itself, but Shamoon targeted PCs, email servers and other, less critical systems. <a href=http://www.moncler-outlet.com.co/>moncler outlet</a> Loading article content k
+
== Обобщённая архитектура сети ==
Darlington gave too manyfree-kicks away, though Gary Brown escaped when he created a gaping hole around the midriff of Cameron Murray鈥檚 shirt with his right boot. <a href=http://www.coachoutletstoreonline.me/>Coach Factory </a> The key word is intimidation. But since it is not working andthe protests are growing bigger, theauthorities are toughening repressions. The'legal basis' forthat was created onJanuary 16 when parliamentarians, who have complete independence fromthe President, ran roughshod over protocol regulations, voting procedures and, ultimately, theConstitution, and'manually' (!), inthe span ofa few minutes (!), voted fora series oflegal changes that effectively established dictatorship anda state ofemergency inthe country without even declaring thelatter. Forexample, bycomposing anddistributing these lines, I already run afoul ofseveral criminal statutes involving 'slander,' 'hatred' andthe like. <a href=http://www.oakleysunglasses.nom.co/>replica oakley sunglasses</a>  
+
 
ZWFyJiM4MjE3O3MgZHJhZnQsIEdpbGJlcnQgYWxzbyB3b3JrZWQgYXMgdGhlIHByaW1hcnkga2lj <a href=http://www.airjordanshoes.net.co/>air jordans</a> </span><span style="FONT-SIZE: 7.5pt; mso-fareast-language: EN-US">...................................................................................................................................................</span></p></center> w <a href=http://www.oakleysunglasses.in.net/>fake oakley sunglasses</a>  
+
=== Обзор ===
Cuts in bus subsidies. <a href=http://www.rosherunshoes.com.co/>nike roshe run</a> 鈥?"Henry V"
+
Хотя XMPP и не привязан к конкретной сетевой архитектуре, обычно он реализуется с архитектурой "клиент-сервер", где клиент соединяется с сервером по протоколу TCP, и соединения между серверами тоже производятся по протоколу TCP.
鈥淭he line of storms kept going straight up the Bitterroot, and when it got over Missoula, those thunderstorms converged,鈥?National Weather Service meteorologist Genki Kino explained. 鈥淭hat helped increase our winds. We had reports of 50 to 60 mph in the Bitterroot, but the peak wind gust in Missoula was 74 mph. And we had sustained winds of 59 mph. That鈥檚 pretty impressive.鈥?<a href=http://www.glassesoakley.us.com/>discount oakley sunglasses</a> 98.5p; Simm X to 98.5p; Lim X to 76.5p; Wed. - Fwd: 3,299 sheep. Hoggs: Suff to 拢61; Cheviot to 拢55; Mule to 拢55; Swale to 拢49; Herdwick to 拢47; Cont to 拢64.50; Blue-faced Leics to 拢51; Scottish to d <a href=http://www.michaelkorsoutletsonlineco.com.co/>www.michaelkorsoutletsonlineco.com.co</a>
+
 
This isn't just a practical solution; it actually alters brain chemistry, promoting a sense of calm and, in Wax's case, helping her manage her depression. <a href=http://www.cheapjordanshoes.us.org/>http://www.cheapjordanshoes.us.org</a> "We remain extremely bullish on China and we are continuing to invest," Apple CEO Tim Cook said at the earnings announcement. "We would be foolish to change our plans. I think China is a fantastic geography with an incredible, unprecedented level of opportunity."
+
[[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|клиент-серверного протокола]], фактически система состоит из набора взаимодействующих серверов. Таким образом, &lt;juliet@example.com&gt; может обмениваться сообщениями, информацией о присутствии и др. с &lt;romeo@example.net&gt;. Этот шаблон знаком по протоколам вроде {{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]