建筑

XMPP 允许全局可寻址客户端和网络上的服务器之间的结构化数据的全双工交换以及请求的并发处理。与 HTTP 和广泛部署在 Web 上的 Representational State Transfer(REST)体系结构不同,XMPP 连接是有状态和并发的,并且在单个会话的上下文中可能发生无限数量的事务。此架构有时也称为并发事务的可用性(ACT)。

寻址

为了便于通过网络进行路由,所有 XMPP 地址都是全局可寻址的。与电子邮件一样,这可以通过 DNS 和联合客户端/服务器架构实现。地址的形式为 localpart@domainpart/resourcepart,其中 localpart 是可选的并且对应于网络的用户,domainpar 是必需的并且对应于服务器,resourcepart 是可选的并且指的是该用户的特定连接客户端(在 XMPP 中用户可能是从许多不同的位置登录,例如,在即时消息的情况下的电话和膝上型电脑,或者在物联网设备的情况下使用一个帐户的许多传感器)。XMPP 还提供用于发现网络上其他地址的存在(可用性)的工具。

有状态的流

XMPP 连接是长期存在的 TCP 连接,它将 XML 流从客户端传输到服务器(c2s)或从服务器传输到服务器(s2s)。让这些会话长寿和有状态允许网络中的节点随时传输数据并立即路由或传送。

路由

流在客户端和服务器或服务器和服务器之间形成网络上的直接链接。如果客户希望与网络上的远程客户端通信,则他们首先将信息发送到他们的服务器,该服务器与远程服务器形成服务器到服务器的连接,然后远程服务器将信息传递给其客户端。

服务器

XMPP 网络中的服务器路由数据,但也有许多其他职责,包括维护会话状态,存储客户端数据(聊天记录,文件,没有客户端在线接收时发送的消息,联系人列表等)。它们是处理 XMPP 连接的大多数业务逻辑所在的地方。这允许客户端尽可能保持愚蠢(包含非常少的逻辑)。