什么是XMPP?— 可扩展消息传递和状态协议

发布时间:2025-03-09 11:26:42    关键词:什么是XMPP

介绍

2000 年代初期,当聊天应用程序的概念初具雏形时,XMPP 允许开发人员构建交互式聊天应用程序。自诞生以来,该协议已经取得了长足的发展,现已被纳入开发 WhatsApp 等高端聊天应用程序所建议的技术堆栈(或框架)中。

二十多年过去了,该协议在协议的丰富性方面仍未失去其光彩和重要性。为什么会这样?是什么让 XMPP 时间变得重要?关键标记是什么?让我们更深入地了解该协议。

什么是 XMPP — 可扩展消息传递和存在协议?

它是一种 XML 驱动的协议,通常用于开放标准通信。简而言之,它是一种聊天协议,允许无缝地来回发送基本 XML 组件(例如数据)。除了使 IM 和实时“对话”成为可能之外,XMPP 还可用于联系人列表维护和状态详细信息。

用法

XMPP 最常用于两点之间的直接消息交互、检查用户状态、与服务器共享状态详细信息。它还负责服务器状态记录保存、订阅管理、联系人列表更新以及阻止某些用户。

属性

  • 它是分散的。
  • 它支持数据/信息的异步交换。
  • 传输小块数据而不是直接转发大块数据。
  • 它通过 TCP 工作。
  • 网络配置和组件(硬件/软件)在基于 XMPP 的数据传输中不起任何作用。
  • 它是为客户端-服务器模型设计的。
  • 它使用 3 种状态,即“离线”、“忙碌”或“在线”,来告知用户或网络的状态。
  • 它在两个端点之间来回传输数据。

XMPP 架构

在结构层面上,XMPP 与在应用层上运行的协议非常相似。例如,它还涉及通过关联服务器进行通信的唯一命名客户端。XMPP根据两个客户端执行协议,并监控和处理它们的路由。

俯视图直观地说明了 XMPP 架构。

然而,在复杂的实现中,可能还存在多个 XMPP 网关。在这种情况下,协议还需要处理多个域路由的互通。因此,网关充当信息交换过程中循环中的各种协议和域之间的转换媒介。

此外,XMPP 网关还承担诸如按照预期协议开始和终止客户端到服务器会话等任务,同时包含要求严格的协议转换元素。

即使使用大量网关和域,也可以在 XMPP 的帮助下成功实现所有网络点之间的持续连接。

在理解 XMPP 架构时,理解一些术语至关重要。

例如,您必须了解 XMPP 节。简单来说,这些是用于启动通信会话的小型 XML 片段。它们可以分为 3 种类型:

  • 在线状态节定义了网络或用户向其他人展示的当前状态。例如,用户/网络是在线还是离线。
  • 消息节是聊天信息交换必不可少的推送工具。
  • IQ 节是 XMPP 用于数据请求和修改的元素。就像 HTTP 有 GET 和 POST 一样,XMPP 也有 IQ 节。

XMPP 协议如何工作?

XMPP 的整个处理依赖于客户端-服务器架构,该架构首先将消息传输到服务器,然后再传输到客户端。

为了找出哪个客户端应该接收消息,XMPP 服务器利用接收方的唯一 ID。唯一 ID 或 Jabber ID 与电子邮件地址非常相似,几乎无需更改。

[email protected]/resource 是 Jabber ID 的格式。

这里,user 指向用户名,domain.com 是发送者的域名信息,resource 是消息接收者的设备类型。例如,

[email protected]/terminal。

示例中,John Ray 为用户名,Technology.testing 为域名,terminal 为 John 使用的设备或资源类型。其中,资源为可选项,前两项为必选。

XMPP 服务器使用此 Jabber ID 通过 TCP 连接正确路由消息。一旦开始通信会话,就会将 XML 流共享到服务器,并借助 Jabber ID 进行客户端识别。

识别完成后,服务器收到请求后,会发起另一个XML流传输请求,再从服务器端将该流发送回客户端,这样,每个XML流就变成双向的了。

XMPP 可以高效地生成大规模消息网络,即联盟。借助联盟,客户端可以同时与多个 XMPP 服务器进行通信。

XMPP 功能

XMPP 与其他协议相比具有以下基本特点:

  • 异步推送消息

使用 XMPP,可以实现连续和异步的消息传递。这意味着连续发送消息,无需等待接收方或发送方的回复,也不需要用户在线即可接受消息。消息以 XML 节的形式共享,这些节是独特的信息单元,具有元数据、消息正文以及发送方和接收方的唯一 ID 等段。

XMPP 与其他客户端-服务器系统的区别在于,XMPP 不支持轮询。轮询是指客户端不断提示服务器检查是否存在任何最新信息的过程。由于轮询是定期进行的,因此最终用户无法获得即时通信体验。此外,它还会带来惊人的带宽消耗。

相反,即使服务器未处理或接收上一个请求,XMPP 也会自动将最新消息推送到服务器。这也发生在服务器到客户端的通信中。这为用户构建了即时通信体验。

  • 客户端-服务器架构

这是 XMPP 遵循的核心架构。在此架构中,XMPP 仅传播一小部分XML 元素。这些可移植的 XML 元素将首先到达服务器,然后到达用户。

XMPP 客户端被分配了单独的名称,就像电子邮件一样。此唯一 ID 用于识别客户端并将消息路由到正确的方向。这样,XMPP 保证每个 XMPP 客户端都遵循固定的标准路由与服务器耦合。

  • 持久 TCP 连接

最初,XMPP 只能通过 TCP 传输数据或指定连接。在这里建立的连接是不变的,并且每当传输新消息时不需要重新建立。

这样,XMPP 就构建了一个支持自由 XML 数据交换的 XML 流。不过,某些先进的 XMPP 扩展现在也使用 TLS 和 WebSockets。

  • 去中心化托管

去中心化托管指的是没有中央机构控制服务器。任何人都可以维护、运行甚至维护 XMPP 服务器。此外,还可以自由地在云端或本地设置服务器。在这方面,它也类似于电子邮件。每个电子邮件所有者都可以根据自己的选择设置电子邮件。他们可以根据自己的喜好自由设置登录详细信息、密码和其他详细信息。

  • 网关

XMPP 的另一个非常显著的特点是它为众多聊天和消息传递协议提供网关。它与许多协议兼容,并且可以长距离连接到网络。

例如,当消息提供给移动设备上的接收者时,给定的 XMPP 网络可以访问 SMS 域,同时访问 SMTP 域以将同一条消息发送到接收者的电子邮件中。除此之外,XMPP 网络还可以同时使用任何其他特定的消息协议以另一种形式(例如 IRC)传递消息。

XMPP 协议示例

XMPP 是目前我们使用的许多通信应用程序的核心元素。下面列出了一些使用 XMPP 开发的最著名的应用程序。

  • WhatApp 是使用专有 XMPP 构建的。
  • Zoom 令人惊叹的聊天功能全归功于 XMPP。
  • 为了实现即时推送通知,Apple 在 iPhone 和 Mac 中都使用了 XMPP。
  • Grindr 的聊天功能使用了 XMPP。

对于开发功能强大的聊天应用程序,XMPP 是众多选择之一。然而,由于其独特的功能和带来的多种好处,它继续成为许多人的首选。

XMPP 的优点

XMPP 在 IETF 的支持下并受到成千上万开发人员的欢迎,已成为聊天应用程序开发的主流开放标准协议。

XMPP 凭借出色的标记,设法填补了由严格的协议组成的空白,并已确认自己是点对点通信及其他领域的必需品。

以下是采用XMPP协议后可以享受的基本好处。

  • 值得信赖的协议

该协议已为开发者社区服务了 20 多年。这些年来,该协议已加强了其基础设施并获得了巨大的社区支持。目前,已有多个 XMPP 服务器,成千上万的开发者使用了它,它是许多应用程序的核心。

所有这些都确保该协议经过时间考验,并拥有出色的技术支持。如果这还不能打动你,那么免费和过于直接肯定可以。

  • 为您改善通信基础设施

作为一种高度可扩展的协议,它使最终用户能够使用它来传达不同类型的媒体和消息。它不会询问您是否正在传输音频或视频;XMPP 将继续支持创建有效的通信基础设施。

  • 交货保证

使用 XMPP,可以确保消息传递的准确性,因为它通过 TCP 使用持续连接。它几乎不会错过任何 XML 节传递,无论节有多小。

  • 大多数标准编程语言的支持

大规模采用和巨大的全球需求导致了对各种语言的支持。XMPP 库支持多种主流语言,如 Perl、C++、C#、Java、Python 等等。只要你能说出一种语言,XMPP 库就很可能与该语言兼容。这使得开发人员能够在兼容且首选的生态系统中工作。

  • 去中心化

XMPP 是去中心化的,允许多种实现。服务器和库设置有限制。每个人都可以使用它。这赋予了更多的自由,并为灵活性创造了空间。

  • 更高的安全性

增强的安全性是 XMPP 的一项额外优势。在设置不同的 XMPP 服务器时,开发人员可以根据自己的选择选择加密、安全协议和访问首选项。安全性完全受控,从而减少网络攻击并提高安心度。

  • 不间断传输数据

性能可以轻松保持,因为如果一个 XMPP 服务器受到影响或离线,无论出于何种原因,只会影响相应的用户。其余用户将继续享受不间断的通信和数据传输。这使得实现 100% 的运营连续性成为可能。

  • 服务器到服务器传输

服务器联合是一种可选选择。因此,开发人员可以出于安全原因自由地关闭服务器到服务器,同时为服务器分配特定任务。

  • 兼容性

XMPP 客户端的一个主要优势是客户端数量众多。XMPP 客户端数量众多。无论设备类型如何,您都可以找到 XMPP 客户端。它通过提供命令行为 Windows 和 Unix 系统提供了额外的支持。此外,一个用户可以通过不同的设备注册,从而提高可访问性。

关键

XMPP(可扩展消息传递和状态协议)是构建实时通信应用程序的关键,它是一种完全可扩展的协议。阅读上述文章,了解有关此创新协议的其他详细信息。我们已尝试全面介绍它。

 

猜你喜欢