2009-04-01 10:18:54 -04:00
<?xml version='1.0' encoding='UTF-8'?>
< !DOCTYPE xep SYSTEM 'xep.dtd' [
<!ENTITY % ents SYSTEM 'xep.ent'>
%ents;
]>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep >
<header >
<title > Binary XMPP</title>
<abstract > This specification defines Binary XMPP, an obviously superior representation of the Extensible Messaging and Presence Protocol (XMPP).</abstract>
&LEGALNOTICE;
<number > 0239</number>
<status > Active</status>
<type > Humorous</type>
<sig > Standards</sig>
<approver > Council</approver>
<dependencies >
<spec > XMPP Core</spec>
</dependencies>
<supersedes />
<supersededby />
<shortname > N/A</shortname>
<author >
<firstname > Pedro</firstname>
<surname > Melo</surname>
<email > 011011010110010101101100011011110100000001110011011010010110110101110000011011000110100101100011011010010110010001100001011001000110010100101110011011110111001001100111</email>
<jid > 011011010110010101101100011011110100000001110011011010010110110101110000011011000110100101100011011010010110010001100001011001000110010100101110011011110111001001100111</jid>
</author>
<author >
<firstname > Peter</firstname>
<surname > Saint-Andre</surname>
<email > 011100110111010001110000011001010111010001100101011100100100000001101010011000010110001001100010011001010111001000101110011011110111001001100111</email>
<jid > 011100110111010001110000011001010111010001100101011100100100000001101010011000010110001001100010011001010111001000101110011011110111001001100111</jid>
</author>
<author >
<firstname > Fabio</firstname>
<surname > Forno</surname>
<email > 011001100110000101100010011010010110111100101110011001100110111101110010011011100110111101000000011001110110110101100001011010010110110000101110011000110110111101101101</email>
<jid > 011001100110011001000000011010100110000101100010011000100110010101110010001011100110001001101100011101010110010101101110011001000110111100101110011000110110111101101101</jid>
</author>
<revision >
<version > 1.0</version>
<date > 2008-04-01</date>
<initials > pm/psa/ff</initials>
<remark > <p > April Fools!</p> </remark>
</revision>
</header>
<section1 topic= 'Introduction' anchor= 'intro' >
<p > Everyone knows that binary data encodings are much more efficient than the Extensible Markup Language (XML). Given that XMPP is an application profile of XML, it is a wonder that XMPP works at all! Clearly, XMPP would benefit from a binary representation. Therefore, this specification defines Binary XMPP.</p>
</section1>
<section1 topic= 'Protocol' anchor= 'protocol' >
<p > &xmppcore; defines the traditional representation of XMPP. For instance, an empty presence stanza (such as might be provided on login) is as follows:</p>
<example caption= 'Traditional XMPP stanza' > < ![CDATA[
<presence />
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<p > That string can be represented in binary as follows:</p>
<example caption= 'Binary representation' > < ![CDATA[
0011110001110000011100100110010101110011011001010110111001100011011001010010111100111110
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<p > The bit sequence is therefore represented in Binary XMPP as follows (line breaks are provided only for the purpose of readability):</p>
<example caption= 'Binary XMPP representation' > < ![CDATA[
<zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero />
<zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero />
<zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero />
<zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one />
<zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one />
<zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one />
<zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero />
<zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one />
<zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one />
<zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <one />
<zero /> <zero /> <one /> <one /> <one /> <one /> <one /> <zero />
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<p > This is an obvious improvement over the traditional representation.</p>
<p > It might be objected that the Binary XMPP representation requires a large number of XML elements. However, because all data is represented using only < zero/> and < one/> , the protocol can be significantly compressed using the standard ZLIB compression algorithm as defined in &rfc1950; , which SHOULD be enabled by default on the bxmpp port. Evidence from preliminary testing indicates that compression of Binary XMPP results in a representation less than 2% of the original size!</p>
<p > As a further simplification, Binary XMPP gets rid of the complicated stream negotiation process defined in RFC 3920. Instead, if a server supports Binary XMPP it advertises a special DNS SRV record _bxmpp._tcp in accordance with &rfc2782; . Furthermore, only one record is needed, thus saving precious port space. The RECOMMENDED port for Binary XMPP communication is 10110, but any port MAY be used.</p>
2009-04-05 23:39:23 -04:00
<p > To start a Binary XMPP stream, the sender simply connects via TCP at the advertised port and starts sending < zero/> and < one/> elements. The lack of a stream header simplifies XML parsing, introducing further performance improvements.</p>
2009-04-01 10:18:54 -04:00
</section1>
<section1 topic= 'Examples' anchor= 'examples' >
<p > The following examples showcase the tremendous efficiency of Binary XMPP using a complete session between a client and a server.</p>
<example caption= 'Client sends initial stream header (XMPP)' > < ![CDATA[
<stream:stream
from='juliet@example.com'
to='example.com'
version='1.0'
xml:lang='en'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'>
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<example caption= 'Binary XMPP representation' > < ![CDATA[
<zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <on
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<example caption= 'Server sends response stream header (XMPP)' > < ![CDATA[
<stream:stream
from='example.com'
id='t7AMCin9zjMNwQKDnplntZPIDEI='
to='juliet@example.com'
version='1.0'
xml:lang='en'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'>
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<example caption= 'Binary XMPP representation' > < ![CDATA[
<zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <zero
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<example caption= 'Server sends stream features (XMPP)' > < ![CDATA[
<stream:features >
<starttls xmlns= 'urn:ietf:params:xml:ns:xmpp-tls' >
<required />
</starttls>
</stream:features>
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<example caption= 'Binary XMPP representation' > < ![CDATA[
<zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <z
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<example caption= 'Client sends STARTTLS command to server' > < ![CDATA[
<starttls xmlns= 'urn:ietf:params:xml:ns:xmpp-tls' />
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<example caption= 'Binary XMPP representation' > < ![CDATA[
<zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <one /> <zero />
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<example caption= 'Server informs client that it is allowed to proceed' > < ![CDATA[
<proceed xmlns= 'urn:ietf:params:xml:ns:xmpp-tls' />
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<example caption= 'Binary XMPP representation' > < ![CDATA[
<zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <zero /> <zero /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <zero /> <one /> <zero /> <one /> <one /> <one /> <zero /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <zero /> <one /> <one /> <zero /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <zero /> <one /> <one /> <one /> <zero /> <zero /> <one /> <zero /> <one /> <one /> <one /> <one /> <zero /> <zero /> <one /> <one /> <one /> <one /> <one /> <zero />
2017-02-14 17:08:49 -05:00
]]></example>
2009-04-01 10:18:54 -04:00
<p > And so on. Much more efficient, eh?</p>
</section1>
<section1 topic= 'Internationalization Considerations' anchor= 'i18n' >
<p > The < zero/> and < one/> elements use English-language words as the element names. Clearly it would have been preferable to define an i18n-friendly binding, such that German-language applications could encode Binary XMPP using the < null/> and < eins/> elements, Greek-language applications could use the < μ η δ έ ν /> and < ἑ ν α /> elements, etc. Flexibility regarding internationalization of the element names may be added in Binary XMPP 2.0.</p>
</section1>
<section1 topic= 'Security Considerations' anchor= 'security' >
<p > Because it is simply an alternative representation of XMPP, Binary XMPP inherits all of the security characteristics of XMPP (the good, the bad, and the ugly).</p>
<p > Use of port 10110 is obviously secure, since 10110 in base 2 is 22 in base 10, the same default port as Secure Shell (see &rfc4251; ).</p>
</section1>
<section1 topic= 'IANA Considerations' anchor= 'iana' >
<p > The ®ISTRAR; shall work with &IANA; to register "bxmpp" as a keyword for port 10111.</p>
</section1>
<section1 topic= 'XMPP Registrar Considerations' anchor= 'registrar' >
<p > The XMPP Registrar shall include 'urn:xmpp:bxmpp' in its registry of protocol namespaces (see &NAMESPACES; ).</p>
</section1>
<section1 topic= 'XML Schema' anchor= 'schema' >
<code > < ![CDATA[
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:bxmpp'
xmlns='urn:xmpp:bxmpp'
elementFormDefault='qualified'>
<xs:element name= 'one' type= 'empty' />
<xs:element name= 'zero' type= 'empty' />
<xs:simpleType name= 'empty' >
<xs:restriction base= 'xs:string' >
<xs:enumeration value= '' />
</xs:restriction>
</xs:simpleType>
</xs:schema>
2017-02-14 17:08:49 -05:00
]]></code>
2009-04-01 10:18:54 -04:00
</section1>
<section1 topic= 'Acknowledgements' anchor= 'ack' >
<p > Thanks to Kevin Smith for his feedback.</p>
</section1>
</xep>