Difference between revisions of "XMPP Core"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(violation outlet earnest fantastic)
m
 
(37 intermediate revisions by 13 users not shown)
Line 13: Line 13:
 
(XMPP): [[Instant Messaging and Presence|XMPP IM]].
 
(XMPP): [[Instant Messaging and Presence|XMPP IM]].
  
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Outlet</a>
+
== Обобщённая архитектура сети ==
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
 
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>
+
=== Обзор ===
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
Хотя XMPP и не привязан к конкретной сетевой архитектуре, обычно он реализуется с архитектурой "клиент-сервер", где клиент соединяется с сервером по протоколу TCP, и соединения между серверами тоже производятся по протоколу TCP.
<a href=http://www.boot-uggs.us.org/>Cheap Uggs</a>
+
 
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
[[Image:Xmpp_core_network.PNG|Примерная структура сети]]
<a href=http://www.boot-uggs.us.org/>Cheap Uggs</a>
+
 
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
Примерная структура сети XMPP включает в себя [[Сервер|сервера]], к которым подключаются [[Клиент|клиенты]]. На схеме также показан транспорт в другую [[IM]] сеть. Синим цветом выделены соединения XMPP, черным - соединения сторонней сети.
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
 
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
=== Сервер ===
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
[[Сервер]] действует как уровень абстракции для соединений XMPP. Его основные обязанности:
<a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a>
+
* управлять соединениями(сессиями) других [[Сущность|сущностей]], в форме XML потоков от/для авторизованных клиентов, других серверов и прочих сущностей.
<a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a>
+
* маршрутизировать корректно адресованные XML [[Станс|стансы]] между указанными сущностями посредством XML потоков.
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
 
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
Большинство XMPP-совместимых серверов также выполняют обязанности по хранению данных клиентов (например, их [[Ростер|контакт-листов]] в случае базирующихся на XMPP [[IM]]-приложений). В этом случае данные XML обрабатываются самим сервером, и никуда не перенаправляются.
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet Online</a>
+
 
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a>
+
=== Клиент ===
<a href=http://www.coachonline-outlet.us.org/>Coach Black Friday</a>
+
Большинство клиентов подключаются напрямую к серверам через {{w|TCP}}-соединения, и используют XMPP для получения доступа к возможностям [[Сервер|сервера]] и связанных с ним [[Сервис|сервисов]]. Одновременно могут быть подключены несколько [[Ресурс|ресурсов]] (например, обозначающих устройства или местоположения) одного клиента. Каждый ресурс должен иметь уникальный идентификатор ресурса (см. [[XMPP Core#Схема адресации|Схема адресации]]).
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
 
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>
+
Рекомендуется для [[C2S|клиент-серверных соединений]] использовать порт 5222.
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
 
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet Store Online</a>
+
=== Транспорт ===
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
Транспорт - специальный сервис, работающий на стороне сервера, чья основная функция - обеспечивать перевод [[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-серверами, а также между транспортами и сторонними серверами не описываются в этом документе.
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet Online</a>
+
 
<a href=http://www.boot-uggs.us.com/>Uggs</a>
+
=== Сеть ===
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
Поскольку каждый сервер идентифицируется его сетевым адресом, и поскольку [[S2S|сервер-серверные коммуникации]] являются прямым расширением [[C2S|клиент-серверного протокола]], фактически система состоит из набора взаимодействующих серверов. Таким образом, &lt;juliet@example.com&gt; может обмениваться сообщениями, информацией о присутствии и др. с &lt;romeo@example.net&gt;. Этот шаблон знаком по протоколам вроде {{w|SMTP}}, которые пользуются стандартами сетевой адресации. Взаимодействие между серверами НЕОБЯЗАТЕЛЬНО. Если оно доступно, оно должно производиться посредством XML потоков через TCP соединения. Рекомендуемый порт для межсерверного взаимодействия 5269.
<a href=http://www.boot-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet Online</a>
+
<a href=http://www.boot-uggs.us.com/>Cheap Uggs</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.uggblackfriday.us.org/>Cheap Ugg Boots</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet Store Online</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet Online</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Boots</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Boots Black Friday</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Boots</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots Black Friday</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots Black Friday</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet Online</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.uggblackfriday.us.org/>Cheap Uggs</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Ugg Boots Black Friday</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
锘?a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Black Friday</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.boot-uggs.us.com/>Uggs</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet Online</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>
+
  
 
== Схема адресации ==
 
== Схема адресации ==
Line 113: Line 64:
 
== XML-потоки ==
 
== XML-потоки ==
  
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
=== Обзор ===
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Jacket</a>
+
Две фундаментальные концепции делают возможным быстрый асинхронный обмен сравнительно маленькими порциями структурированной информации между сущностями: [[XML-поток|XML-потоки]] и [[Станс|XML-стансы]].
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Bags</a>
+
Эти термины определяются следующим образом:
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>  
+
 
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
'''XML-поток''' - это контейнер для обмена XML-элементами между любыми двумя сущностями в сети.
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>  
+
Начало XML-потока однозначно обозначается открывающим XML-тегом <tt>&lt;stream&gt;</tt> (с необходимыми атрибутами и указанием пространства имён), а конец XML-потока однозначно обозначается закрывающим тегом <tt>&lt;/stream&gt;</tt>.
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>  
+
В течение жизни потока сущность, создавшая поток, может посылать неограниченное количество XML-элементов через поток, включая как элементы для создания потока (например, предложить использовать [[TLS]] (Секция 5) или [[SASL]] (Секция 6)), так и [[Станс|XML-стансы]] (элементы <tt>&lt;message/&gt;</tt>, <tt>&lt;presence/&gt;</tt> и <tt>&lt;iq/&gt;</tt>, с пространством имён по умолчанию).
<a href=http://www.boots-uggs.us.org/>Ugg Black Friday</a>
+
"Начальный поток" предлагается инициирующей сущностью (обычно клиентом или сервером) принимающей сущности (обычно серверу), и может рассматриваться как соответствующая инициатору потока "сессия".
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Bags</a>  
+
"Начальный поток" позволяет производить односторонюю передачу информации от инициатора к получателю; для передачи в обратном направлении принимающая сущность ДОЛЖНА предложить поток инициатору ("ответный поток").
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Bags</a>  
+
 
<a href=http://www.boots-uggs.us.org/>Ugg Boots Black Friday</a>
+
'''XML-станс''' - дискретная семантическая единица структурированной информации, переcылаемая от одной сущности к другой посредством XML-потока.
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>  
+
XML-станс существует как непосредственный потомок корневого элемента <tt>&lt;stream/&gt;</tt>.
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>  
+
{{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].}}
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose</a>
+
Начало любого XML-станса однозначно обозначается открывающим тегом на глубине 1 в XML-потоке (например, <tt>&lt;presence&gt;</tt>), и конец однозначно обозначается соответствующим закрывающим тегом на глубине 1 (например, <tt>&lt;/presence&gt;</tt>).
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
XML-станс МОЖЕТ содержать дочерние элементы (с соответствующими атрибутами, дочерними элементами и символьными данными), если это необходимо для передачи желаемой информации.
<a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a>
+
Единственные 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-стансами.
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
 
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a>  
+
В качестве примера рассмотрим сессию клиента с сервером.
<a href=http://www.outlets-coach.us.org/>Coach Outlet Store Online</a>  
+
Для подключения к серверу клиент ДОЛЖЕН инициировать XML-поток, послав серверу открывающий тег <tt>&lt;stream&gt;</tt>, возможно, предварив его текстовым описанием версии XML и используемой кодировки (см. Изменения в текстовом описании (Секция 11.4) и Кодировка символов (Секция 11.5)).
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
В зависимости от локальных правил и характеристик сервиса, серверу СЛЕДУЕТ ответить клиенту вторым XML-потоком, возможно, предварив его текстовым описанием.
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
Как только клиент завершил приветствие SASL, он МОЖЕТ посылать неограниченное число XML-станс через поток любому получателю в сети.
<a href=http://www.uggblackfriday.us.org/>Cheap Uggs</a>
+
Когда клиент хочет закрыть поток, он просто посылает закрывающий тег <tt>&lt;/stream&gt;</tt> (в другом варианте, поток может быть закрыть сервером), после чего клиенту и серверу СЛЕДУЕТ также прервать нижележащее соединение (обычно TCP).
<a href=http://www.outlets-coach.us.org/>Coach Outlet Store Online</a>
+
Те, кто привык думать об XML как о документе, могут рассматривать сессию клиента с сервером как два незакрытых XML документа: один от клиента к серверу, и один от сервера к клиенту.
<a href=http://www.outlets-coach.us.org/>Coach Outlet Online</a>
+
С этой точки зрения, корневой элемент <tt>&lt;stream/&gt;</tt>, может рассматриваться как основная сущность для обоих "документов", и оба этих "документа" строятся за счет аккумулирования XML-станс, присланных по соответствующему потоку.
<a href=http://www.boot-uggs.us.com/>Ugg Black Friday</a>
+
Тем не менее, такая точка зрения - не более чем соглашение; XMPP имеет дело не с документами, а с потоками и стансами.
<a href=http://www.boot-uggs.us.com/>Ugg Boots Black Friday</a>  
+
 
<a href=http://www.uggblackfriday.us.org/>Cheap Uggs</a>  
+
В сущности, XML-поток действует как конверт для всех переданных XML-станс. Упрощенно его можно представить так:
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a>  
+
<pre>
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>
+
  |--------------------|
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose</a>
+
  | <stream>           |
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
  |--------------------|
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>  
+
  | <presence>         |
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>  
+
  |  <show/>         |
<a href=http://www.boots-uggs.us.org/>Cheap Uggs</a>
+
  | </presence>       |
<a href=http://www.uggblackfriday.us.org/>Ugg Boots Black Friday</a>  
+
  |--------------------|
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet Online</a>  
+
  | <message to='foo'> |
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet Online</a>
+
  |  <body/>         |
<a href=http://www.cheapbootsuggs.us.com/>Uggs Black Friday</a>
+
  | </message>         |
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a>  
+
  |--------------------|
<a href=http://www.uggblackfriday.us.org/>Cheap Uggs</a>
+
  | <iq to='bar'>     |
<a href=http://www.cheapbootsuggs.us.com/>Ugg Boots</a>
+
  |  <query/>         |
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a>
+
  | </iq>             |
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Black Friday</a>
+
  |--------------------|
<a href=http://www.boot-uggs.us.org/>Ugg Boots</a>
+
  | ...               |
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
  |--------------------|
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet Online</a>
+
  | </stream>         |
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
  |--------------------|
<a href=http://www.outlet-coach.us.org/>Coach Outlet Online</a>
+
</pre>
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Jackets</a>
+
<a href=http://www.boot-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
<a href=http://www.boots-uggs.us.org/>Uggs Black Friday</a>  
+
<a href=http://www.boot-uggs.us.org/>Ugg Black Friday</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>  
+
<a href=http://www.boot-uggs.us.org/>Cheap Uggs</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet Online</a>  
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots Black Friday</a>  
+
<a href=http://www.uggblackfriday.us.org/>Ugg Boots</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>  
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>  
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Ugg Boots Black Friday</a>  
+
<a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Black Friday</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Black Friday</a>
+
  
 
=== Привязка к TCP ===
 
=== Привязка к TCP ===
Line 195: Line 119:
 
=== Безопасность потока ===
 
=== Безопасность потока ===
  
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
=== Атрибуты потока ===
<a href=http://www.cheapbootsuggs.us.com/>Uggs Black Friday</a>
+
 
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a>
+
==== Поддержка версий ====
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.boot-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Black Friday</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Black Friday</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet Store Online</a>
+
<a href=http://www.boot-uggs.us.org/>Uggs Black Friday</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Uggs</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Boots</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Outlet</a>
+
<a href=http://www.boot-uggs.us.org/>Ugg Boots Black Friday</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Black Friday</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet Online</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Boots</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Boots Black Friday</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Black Friday</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Black Friday</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Black Friday</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Ugg Black Friday</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Uggs Black Friday</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.uggblackfriday.us.org/>Cheap Uggs</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Bags</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet Online</a>
+
<a href=http://www.uggblackfriday.us.org/>Uggs Black Friday</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jacket</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.uggblackfriday.us.org/>Cheap Ugg Boots</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet Online</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Ugg Boots</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet Online</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Uggs Black Friday</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.boot-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Bags</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Black Friday</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Black Friday</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Black Friday</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet Online</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots Black Friday</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>
+
  
 
=== Указание пространства имён ===
 
=== Указание пространства имён ===
Line 275: Line 127:
 
=== Возможности потока ===
 
=== Возможности потока ===
  
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
=== Ошибки потока ===
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
 
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Black Friday</a>
+
==== Правила ====
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
 
<a href=http://www.boot-uggs.us.org/>Cheap Uggs</a>
+
==== Синтаксис ====
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
 
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
==== Предпоределенные условия ====
<a href=http://www.boot-uggs.us.org/>Ugg Boots</a>
+
 
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Jacket</a>
+
==== Специфические условия приложения ====
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Black Friday</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet Online</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Ugg Black Friday</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet Online</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet Online</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Boots</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Black Friday</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Black Friday</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
<a href=http://www.boots-uggs.us.org/>Uggs Black Friday</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.boots-uggs.us.org/>Cheap Ugg Boots</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Black Friday</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Bags</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Bags</a>
+
<a href=http://www.boot-uggs.us.org/>Cheap Uggs</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet Online</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Bags</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Black Friday</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet Online</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Ugg Boots Black Friday</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet Store Online</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Bags</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet Online</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet Online</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet Online</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Ugg Black Friday</a>
+
<a href=http://www.boots-uggs.us.org/>Cheap Ugg Boots</a>
+
<a href=http://www.uggblackfriday.us.org/>Cheap Ugg Boots</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Bags</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Black Friday</a>
+
<a href=http://www.boots-uggs.us.org/>Cheap Ugg Boots</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Outlet</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Uggs</a>
+
  
 
=== Упрощенные примеры потоков ===
 
=== Упрощенные примеры потоков ===
Line 371: Line 157:
 
== Соображения по поводу интернациональности ==
 
== Соображения по поводу интернациональности ==
  
<a href=http://www.cheapbootsuggs.us.com/>Ugg Black Friday</a>
+
== Соображения по поводу безопасности ==
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Bags</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Black Friday</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Uggs</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots Black Friday</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet Online</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.uggblackfriday.us.org/>Cheap Ugg Boots</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Bags</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.boot-uggs.us.com/>Uggs Black Friday</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.boot-uggs.us.com/>Uggs Black Friday</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Ugg Boots Black Friday</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Ugg Black Friday</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet Online</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.boot-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet Online</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Uggs Black Friday</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet Store Online</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Boots Black Friday</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Bags</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet Online</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Bags</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Uggs</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Black Friday</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Bags</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Black Friday</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.boot-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.boot-uggs.us.org/>Uggs Black Friday</a>
+
<a href=http://www.cheapbootsuggs.us.com/>Uggs</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet Store Online</a>
+
<a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a>
+
<a href=http://www.boot-uggs.us.com/>Cheap Ugg Boots</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet Store Online</a>
+
<a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a>
+
<a href=http://www.boot-uggs.us.com/>Uggs Black Friday</a>
+
<a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a>
+
<a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a>
+
<a href=http://www.outlets-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
<a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a>
+
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet Store Online</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a>
+
<a href=http://www.boot-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet</a>
+
<a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
+
<a href=http://www.outlet-coach.us.org/>Coach Outlet Store Online</a>
+
<a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a>
+
<a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a>
+
<a href=http://www.onlineoutlets-coach.us.com/>Coach Black Friday</a>
+
<a href=http://www.uggblackfriday.us.org/>Uggs Black Friday</a>
+
<a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Black Friday</a>
+
<a href=http://www.boots-uggs.us.org/>Ugg Boots</a>
+
<a href=http://www.boots-uggs.us.org/>Cheap Ugg Boots</a>
+
  
 
== Соображения {{w|IANA}} ==
 
== Соображения {{w|IANA}} ==

Latest revision as of 17: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]