两个基本概念 — XML 数据流和 XML 节使得较小结构化信息的有效负载可以在敏感于数据传输的实体间进行迅速的异步传输。一个 XML 数据流就像一种容器,可应用在任何两个网络实体间 XML 数据元的交换。XML 节是结构化信息的独立单元,通过 XML 数据流从一个实体发送到另一个实体。
XMPP 中包含了一种用于防范数据流被窜改和偷听的办法。这种信道加密的办法使用了传输层安全协议(TLS),连同其扩展协议 STARTTLS 。这种扩展与其它协议的扩展是同一模式的,如 IMAP、POP3 和 ACAP 等协议。XMPP 中还包含一种对数据流进行验证的办法,并采用了简单验证和安全层协议(SASL)中 XMPP 的特定框架。
协议结构
XML 数据流在所有 XML 节的传送会话过程中起到一种包络的作用。我们可以采用一种单纯的方式来表示这个过程:
|--------------------|
| <stream> |
|--------------------|
| <presence> |
| <show/> |
| </presence> |
|--------------------|
| <message to='foo'> |
| <body/> |
| </message> |
|--------------------|
| <iq to='bar'> |
| <query/> |
| </iq> |
|--------------------|
| ... |
|--------------------|
| </stream> |
|--------------------|
Stream attributes:
| initiating to receiving | receiving to initiating
---------+---------------------------+-----------------------
to | hostname of receiver | silently ignored
from | silently ignored | hostname of receiver
id | silently ignored | session key
xml:lang | default language | default language
version | signals XMPP 1.0 support | signals XMPP 1.0 support