Difference between revisions of "XMPP Core"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(utozf rbyvh for 24% jbczcn5)
m
 
(48 intermediate revisions by 19 users not shown)
Line 1: Line 1:
An accomplished triathlete, Mike enjoys working out, skiing and any activity involving physical fitness. He has been featured in Muscle and Fitness magazine in the "Real People" column. <a href=http://www.rosherunshoes2015.us.com/>Nike Roshe Run</a> The divisions were supposed to be interim, with part of Area C now 60 percent of the West Bank eventually to be given to the Palestinians. But the peace plan fell apart, and the situation of the two Susiyas highlights in bold the separate laws for Jews and Palestinians living in Area C. h <a href=http://www.moncleroutlet.net.co/>moncler online outlet</a>
+
{{stub}}
Pity Ms Glass didn't help with Newton House or old age care provision in Weardale but managed to turn up for the bun fight and obliging Sir Echo, very well airbrushed, photo op. <a href=http://www.louisvuitton-outletonline.us.com/>Louis Vuitton Outlet Online</a> How did the recession impact your business?
+
{{RealTitle|Основы XMPP}}
"We expect cooperating companies to identify culpable individuals - including senior executives if they were involved - and provide the facts about their wrongdoing," Caldwell said. <a href=http://www.airjordanshoes.me/>Cheap Jordans Shoes</a> Congressman Keith Rothfus (R-Pennsylvania), who is on his first visit to Israel, said he would share with his colleagues and constituency what he learned on the trip about the need for America to stand with Israel in her defense, the 'Post reported. f <a href=http://www.uggbootsblackfriday.us.com/>Ugg Outlet Online</a>
+
 
Martin Harper, the RSPB鈥檚 conservation director, said: 鈥淲itnessing a hen harrier鈥檚 dramatic skydancing display flight, or seeing the world鈥檚 fastest animal in action as a peregrine stoops over the moors is enough to take your breath away. These are sights that we should all be able to enjoy. Unfortunately, we are being robbed of the chance to see these beautiful birds flourish because of illegal persecution.鈥?<a href=http://www.outletmichael-kors.us.com/>www.outletmichael-kors.us.com</a> This 18-hole public golf facility in Southeastern Wisconsin, located eight miles west of downtown Milwaukee, has become one of the well known among local golfers for its fast and challenging greens, excellent course conditions and quality customer service.  
+
Основы протокола [[XMPP]] изложены в документе RFC 3920: "Extensible Messaging and Presence Protocol (XMPP): Core".
f 鈥淭here鈥檚 something about it. It works like magic,鈥?Calhoun said. 鈥淓verybody steps up to perform.鈥?<a href=http://www.glassesoakley.us.com/>fake oakley sunglasses</a> Sharing <a href=http://www.cheapjordanshoes.us.org/>jordan release dates</a>  
+
 
"If a woman has 17 children, works 70 hours and jogs at three in the morning - we think something's wrong with her. Or we think we can't do that. So we're in that state of envy; it's what knocks us out." <a href=http://www.rosherunshoes2015.us.com/>roshe run shoes</a> The video also shows somebody slicing a bell pepper, and then someone playing tennis. http://www.louisvuittonoutlet.me
+
Этот документ описывает обощённую архитектуру, схему адресации, термины "XML поток" и "XML [[станс]]", правила использования [[XML]], требования к совместимым реализациям протокола, а также соображения по поводу интернациональности и безопасности.
Anyone who may have information on the robber s identity or the vehicle is urged to contact Camden County Prosecutor s Office Detective Michelle Chambers at 609-743-0654 or Woodlynne Police at 856-962-8300, x214. <a href=http://www.coachfactoryoutlet.click/>Coach purses</a> Saleem said the flooding has hit Punjab harder than the disaster of 2010, with huge volumes flowing directly into its agricultural heartlands from seven breaches in the river Chenab. f <a href=http://www.boots-uggs.us.com/>http://www.boots-uggs.us.com</a>  
+
 
鈥淏ack in 2009, when the recession bit, we had a workforce of 58 but had to cut it down to 21. <a href=http://www.coachonlineoutlet.us.org/>Coach Outlet</a> But unlike Milwaukee's footloose feline apparently still on the lam Clown's liberation was short-lived. It either ended in a hail of bullets as two Milwaukee police detectives emptied their weapons, according to the Sentinel, or with one bullet fired behind the bear's ear, if the Journal's account is correct.
+
== Введение ==
The alternatives for today s home sellers also include using discount real estate firms, or negotiating with an agent for a lower commission rate. <a href=http://www.louisvuitton-outletonline.us.com/>Louis Vuitton Handbags</a> Editorial: The Long Road to Freedom: Hamodia <NY><br />  
+
Extensible Messaging and Presence Protocol (XMPP) &mdash; открытый, основанный на XML протокол для обмена в почти реальном времени сообщениями, передачи информации о пристуствии и сервисов вида "запрос-ответ".  
IF IT WAS EASY, ANYONE COULD DO IT <a href=http://www.uggbootsblackfriday.us.com/>cheap ugg boots</a> 鈥⒙燞ot food need to be kept hot, at or above 140 degrees F. Wrap the food well and place it in an insulated container until serving. Just as with cold food, these foods should not sit out for more than two hours (or one hour in temperatures above 90 degrees F.) If food is left out longer, throw it away to be safe.  
+
Базовый синтаксис и семантика были разработаны в сообществе Jabber, большей частью в 1999 году.  
"Death to America,聰 "Death to Israel,聰 and "Death to Britain聰 were voiced), <a href=http://www.ArizonaCardinalsJersey.us.com/>Cheap Jerseys</a> Another very important aspect concerning Joseph is that his name means: to add . At his birth, Rachel asks that God add another son. Since we mentioned that Benjamin is the 8th son and is the response to Rachel s request; hence Benjamin should be associated with: additional teachings .
+
В 2002, рабочая группа XMPP занялась разработкой адаптации протокола Jabber, которая была бы пригодна в качестве технологии IETF для обмена сообщениями и информацией о присутствии.
m However, with a General Election just months away, the government has returned the East Coast line back into private hands under the promise that the move will transform the route with a much needed injection of cash. <a href=http://www.oakleyglasses.us.org/>oakley sunglasses</a> According to the criminal complaint, Nolen's weekend of crime included:
+
Как результат этой работы, данный текст описывает основные возможности XMPP 1.0; расширения, необходимые для обмена сообщениями и информацией о присутствии, определенные в RFC 2779, определены в Extensible Messaging and Presence Protocol
The ticketing problem has since been fixed and the booking system is operating again. <a href=http://www.michaelkorsbags.nom.co/>Michael Kors Outlet</a> The Park Hyatt Tokyo is 12 minutes from Shinjuku Station and eight minutes from Tochomae Station (Oedo Line). For more information and reservations, call the Delicatessen at 03-5323-3635, or visit . l <a href=http://www.coachonlineoutlet.us.org/>Coach Outlet</a>  
+
(XMPP): [[Instant Messaging and Presence|XMPP IM]].
T.Foxglove <a href=http://www.outletcanadagoose.us.com/>canada goose parka</a> , Journal Sentinel Inc. All rights reserved.  
+
 
h Blippar also works with companies like Kraft. You Blip Miracle Whip and it takes you to a list of recipes using the product. <a href=http://www.cheapuggssale.us.org/>www.cheapuggssale.us.org</a> But NAB reported a fall in bad debts to13 basis points of loans, raising confusion on whether the banks record low losses from soured loans were about to rise. o
+
== Обобщённая архитектура сети ==
"But at the same time you've got two guys at the crease there - myself and Sam - who were well capable of getting us close. <a href=http://www.canadagooseoutlet.site/>canada goose parka</a> In this regard, the opposition camp has collectively urged the government during the two days of deliberations to address public confusion on the bills as about 80 percent of the Japanese population said the government failed to sufficiently explain the legislation. <a href=http://www.canadagoosejacketstore.us.com/>canada goose jackets outlet</a>  
+
 
In addition to a healthy dose of patience, Mulgaonkar recommends that people in need of a kidney transplant should reach out to friends, family members and others to discuss their plight. <a href=http://www.michaelkors-bags.us.com/>Michael Kors Handbags</a> 漏 Copyright of Globes Publisher Itonut (1983) Ltd. 2012 p <a href=http://www.boots-uggs.us.com/>Cheap Uggs</a>  
+
=== Обзор ===
Paul Hill coaches Riddell at Mowden School. He said: 鈥淗e is an outstanding young sportsman at our school, he is hot, and he is quick and very powerful. He鈥檚 good enough to play at the very top but it鈥檚 hard to say if he will, it depends on the person at the end of the day.鈥?<a href=http://www.coachoutlet.nom.co/>Coach Factory</a> State Sen. Fred Risser, the nation's longest-serving state lawmaker, is no stranger to protests. The 85-year-old Madison Democrat, who was first elected in 1956, remembers when a Milwaukee priest and welfare mothers took over the state Assembly chamber in 1969 to protest proposed welfare cuts. Risser also recalls violent clashes between Madison police and Vietnam War protesters.  
+
Хотя XMPP и не привязан к конкретной сетевой архитектуре, обычно он реализуется с архитектурой "клиент-сервер", где клиент соединяется с сервером по протоколу TCP, и соединения между серверами тоже производятся по протоколу TCP.
Prosecutors say Eshagoff took the SAT for at least 15 students over a three-year period. It turns out there were other alleged test takers and many more paying for the illegal service. <a href=http://www.ArizonaCardinalsJersey.us.com/>Cheap Jerseys From China</a> jl/am w <a href=http://www.michaelkors-bags.us.com/>Michael Kors Outlet</a>
+
 
鈥淥fficers followed the vehicle to a nearby street, where the defendant abandoned it and ran off on foot.鈥?<a href=http://www.coachfactoryoutlet.click/>Coach Outlet Online</a> There is no indication the outages are related.
+
[[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]