Difference between revisions of "XMPP Core"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(pxrtl zuiuy for 39% rzseca2)
m
 
(45 intermediate revisions by 16 users not shown)
Line 1: Line 1:
Huckleberries to the second annual Montana Greek Festival, taking place Friday and Saturday on the corner of Sixth Avenue and Hazel Street. The free admission, family friendly event promises a taste of Greek food, music and culture 鈥?and a nice counterbalance to the international headlines focusing on Greece鈥檚 debt crisis. <a href=http://www.louisvuitton-outletonline.us.com/>www.louisvuitton-outletonline.us.com</a> <td width="100%" align=center><a href='/'><img src="/image006.gif" width="206" height="57" alt="IMRA" border=0></a></td> s <a href=http://www.jacketscanadagoose.us.com/>canada goose parka</a>
+
{{stub}}
A Riley 1500. I don鈥檛 know how much it cost. My dad bought it for me. When you see one now they鈥檙e antiques! The brakes failed on it one day I went into the back of a furniture van. No-one was hurt but the car died. <a href=http://www.jacketscanadagoose.us.com/>canada goose sale</a> 5 p.m. 鈥?Gogol Bordello
+
{{RealTitle|Основы XMPP}}
It can be bewildering. Fourmonths ago, Michael Clarke was a grandee. Now he is a gonner. Four weeks ago, Steve Smith was the No 1 ranked batsman in the world. Now Joe Root is, but who could argue with that? In a bowlers' series, his batting has been upstairs to everyone else's downstairs. <a href=http://www.louisvuittonbags.nom.co/>Cheap Louis Vuitton</a> Delavan-Darien quarterbacks Justin Fowlkes and Austin Fritzinger combined for 132 yards rushing and 159 passing. y <a href=http://www.jacketscanadagoose.us.com/>canada goose jackets</a>
+
 
But he revealed that Business Secretary Vince Cable had met the president of Hitachi to discuss the project. <a href=http://www.coachoutlet.nom.co/>Coach Factory</a> 11:30 a.m. 1 p.m. (Tennis)鈥?ATP-WTA tours: Citi Open championship matches in Washington, D.C.  
+
Основы протокола [[XMPP]] изложены в документе RFC 3920: "Extensible Messaging and Presence Protocol (XMPP): Core".
u His goal was revitalizing the Route 130 corridor known as the River Route, a 17-mile stretch of the highway that winds through 12 of Burlington County's southern towns along the Delaware River. And the results of the project were so successful, Remsa said, that many former residents of the affected towns, such as Florence and Burlington, have come back and say they can hardly identify the place. <a href=http://www.michaelkors-bags.us.com/>michael kors bags</a> "We are looking at the complete militiafication of Yemen, he added. It took Syria two to three years to reach this point. Yemen has done it in a few months." <a href=http://www.AtlantaFalconsJersey.us.com/>Cheap NCAA Jerseys</a>  
+
 
"I used it as a catalyst to get started in my own business and, as part of a team of eight, set up Pitbull Syndicate Limited in December 1996. <a href=http://www.michaelkorsbags.me/>michael kors bags</a> Inspired by a compilation album of the same time the promoters aim to take audiences Ride on Time back to a Saturday Night in the 1990s When Things Can Only Get Better and The Only Way Was Up. Girls wanted to Spice Up Their Life, Robbie Williams-types wanted to love these Angels and friends promised I鈥檒l Be There For You. Hits like Mariah Carey鈥檚 Hero and MC Hammer鈥檚 Can鈥檛 Touch This underscore the music of a time when mobile phones were the size of bricks. http://www.airmaxnike.us.com
+
Этот документ описывает обощённую архитектуру, схему адресации, термины "XML поток" и "XML [[станс]]", правила использования [[XML]], требования к совместимым реализациям протокола, а также соображения по поводу интернациональности и безопасности.
Why buy a house when you can buy an island? <a href=http://www.AtlantaFalconsJersey.us.com/>Cheap NBA Jerseys</a> Attorney General Peter Kilmartin said its not just texting anymore, its surfing the internet and taking selfies. e <a href=http://www.michaelkorsoutletsonlineco.com.co/>Michael Kors Outlet</a>  
+
 
Burgess, who came through the ranks at Middlesbrough, made only two appearances in his first Quakers spell after joining at the end of the 2006-07 season when Dave Penney was manager and Gray was assistant. <a href=http://www.canadagoosejacketstore.us.com/>canada goose jackets</a> Hasbro Transformers Stomp N Chomp Grimlock (拢66.99)
+
== Введение ==
Although she still moved like a thirteen-year-old boy and abjured most feminine adornment, he found something so intensely feminine about her that he fell in love. She was easy to look at and easy to be with most of the time, but she was in no sense of the word an easy person. She was afflicted with a restlessness of spirit he could not guess at, but he knew she was the one for him. <a href=http://www.ArizonaCardinalsJersey.us.com/>Cheap NFL Jerseys</a> The US is committed to being a significant player but we need to be careful...that we are admitting Syrians who don't mean to do us harm.  
+
Extensible Messaging and Presence Protocol (XMPP) &mdash; открытый, основанный на XML протокол для обмена в почти реальном времени сообщениями, передачи информации о пристуствии и сервисов вида "запрос-ответ".  
They beat us up front at times, the blocks we need to execute - we didn't cover 'em up as well as we wanted - they're a tough team, said offensive coordinator Matt Canada. <a href=http://www.ArizonaCardinalsJersey.us.com/>Cheap NHL Jerseys</a> Says Hansen, 鈥淚 think food vending is in its heyday in Madison."
+
Базовый синтаксис и семантика были разработаны в сообществе Jabber, большей частью в 1999 году.  
I'm convinced that the American Congress will reject by a large majority the nuclear agreement with Iran, the head of the powerful Knesset Foreign Affairs and Defense Committee, Tzachi Hanegbi, told Israel Radio on Tuesday. There is a plethora of explanations and reasons as to why the agreement weakens the United States, he said. <a href=http://www.cheapjordanshoes.us.org/>jordan 8</a> He stressed that outside southern Turkey the policy was not a key issue for the party. <The>national leadership] has never really spoken negatively or positively <on>the open door immigration policies].
+
В 2002, рабочая группа XMPP занялась разработкой адаптации протокола Jabber, которая была бы пригодна в качестве технологии IETF для обмена сообщениями и информацией о присутствии.
a In winter grass silage and maize are trough fed in what were formerly straw yards into which sand bed cubicles were installed in 2013. <a href=http://www.ArizonaCardinalsJersey.us.com/>Cheap Jerseys</a> A world away from the busy city streets outside, we donned swimsuits and fluffy white robes to wander around this sumptuous, tranquil crypt, dipping in and out of a low-lit 14-metre pool, sauna, relaxation lounge, whirlpool and steam room.  
+
Как результат этой работы, данный текст описывает основные возможности XMPP 1.0; расширения, необходимые для обмена сообщениями и информацией о присутствии, определенные в RFC 2779, определены в Extensible Messaging and Presence Protocol
Death with Dignity <a href=http://www.bootsuggcheap.us.com/>http://www.bootsuggcheap.us.com</a> Participating properties at the 鈥楾he Address Wedding 2015 Fair鈥?include: The Address Downtown Dubai; The Address Dubai Mall; The Address Dubai Marina; The Address Montgomerie Dubai; and The Palace Downtown Dubai. Leisure assets of Emaar Hospitality Group include Dubai Marina Yacht Club; Dubai Polo Equestrian Club; and Arabian Ranches Golf Club. For more information, please visit: z <a href=http://www.ArizonaCardinalsJersey.us.com/>Cheap NCAA Jerseys</a>  
+
(XMPP): [[Instant Messaging and Presence|XMPP IM]].
Who is the best person to follow on Twitter and why? BBC News. Best website, best twitter feed. <a href=http://www.michaelkorsoutletsonlineco.com.co/>michael kors outlet online</a> Major League Baseball has adjusted the Home Run Derby's new format to protect against the possibility of more rain - it's an ominous forecast.  
+
 
l In national polls and in early primary states, Hillary Clinton has a 50 percentage point lead over any potential rival for the Democratic presidential nomination. With that kind of lead, Clinton is the Democratic front-runner. <a href=http://www.AtlantaFalconsJersey.us.com/>Cheap Jerseys From China</a> Robbins served as mayor for 12 years, leaving office in 2003. u
+
== Обобщённая архитектура сети ==
Possibly John Thackwray, who was a round the world yachtsman in the 70s and 80s, and is my uncle. He also built hotels and restaurants and lives on a private island near Miami in the winter and Connecticut in the summer. <a href=http://www.cheapuggssale.us.org/>ugg boots</a> "We were being mortared, and doing little skirmishes in return, " he recalls. "This young lad, only 18, was with us. I never knew his name. My mate Bill Worley and I dived into one slit trench and <a href=http://www.uggbootsblackfriday.us.com/>Uggs For Women</a>  
+
 
ciBmaXJzdCBjaGlsZCBpbiAyMDEwIHNoZSBhc2tlZCBXYWxrZXIgd2hhdCBoZSB3YW50ZWQgZm9y <a href=http://www.louisvuittonoutlet.me/>Louis Vuitton Outlet</a> By JOSH BOAKAP Economics Writer d <a href=http://www.louisvuittonbags.nom.co/>Louis Vuitton Outlet</a>  
+
=== Обзор ===
He showed his class throughout the campaign, maintaining a consistently high level of performance and claiming Darlington鈥檚 Goal of the Season award with a rasping drive against Bamber Bridge after he dribbled with the ball from halfway. <a href=http://www.louisvuittonbags.nom.co/>Cheap Louis Vuitton</a> Working with Rajit and Shernaz is not only comfortable but also a lot of fun. Finally, theatre is about having fun. We ve been working together for so long that every so often we find the need to do a play with just the three of us.  
+
Хотя XMPP и не привязан к конкретной сетевой архитектуре, обычно он реализуется с архитектурой "клиент-сервер", где клиент соединяется с сервером по протоколу TCP, и соединения между серверами тоже производятся по протоколу TCP.
The debris has been sent to a laboratory in France where it will be examined by experts from France, Malaysia, China, the United States and Australia. <a href=http://www.bootsuggcheap.us.com/>Uggs For Women</a> The way people present in terms of their dress or their personality, or even how they talk about sex, does not necessarily reflect what they are doing. The people who seem the most gregarious often are actually the most bound up inside. Well, I say. Is it always the quiet ones? Sometimes quiet people are getting laid, she says. I don t think there is any correlation. r <a href=http://www.coachfactoryoutlet.click/>Coach Outlet Online</a>
+
 
Away from the leading pack it鈥檚 all about the late scramble to secure a top-14 slot and thereby a place in next year鈥檚 first division. <a href=http://www.louisvuittonbags.nom.co/>http://www.louisvuittonbags.nom.co</a> As well as being adept at passing on knowledge he was cheerful and friendly, so he got the best out of his classes.
+
[[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]