XMPP协议实现原理介绍

article/2025/9/13 17:18:39
原文地址为: XMPP协议实现原理介绍

本文介绍XMPP协议原理及相关信息。

 

XMPP协议简介  

XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)。

 

在这四种协议中,XMPP是最灵活的。XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。

 

1. 什么是XMPP ?

XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分; 核心的XML流传输协议 基于XML流传输的即时通讯扩展应用 XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。 XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。

 

2. XMPP的基本网络结构是怎样的

XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。

 

3. XMPP通过TCP传什么了?

传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,XMPP用TCP传的是XML流。

 

XMPP协议工作原理:

 

 

 

4. XMPP协议地址格式:

 

 

5. XMPP消息格式: 

 

 

 

 

 

 

 

6. 核心的XML流传输协议

基于XML FreeEIM流传输的即时通讯扩展应用

XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。

XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。

XMPP的扩展协议Jingle使得其支持语音和视频。 

XMPP的官方文档时RFC 3920. 

 

7. XMPP应用示例

举个例子看看所谓的XML流是什么样子的?

  客户端:<?xml version='1.0'?>
  <stream:stream
  to='example_com'
  xmlns='jabber:client'
  xmlns:stream='http_etherx_jabber_org/streams'
  version='1.0'>
  服务器:<?xml version='1.0'?>
  <stream:stream
  from='example_com'
  id='someid'
  xmlns='jabber:client'
  xmlns:stream='http_etherx_jabber_org/streams'
  version='1.0'>
  ...其他通信...
  客户端:<message from='juliet_example_com'
  to='romeo_example_net'
  xml:lang='en'>
  客户端: <body>Art thou not Romeo, and a Montague?</body>
  客户端:</message>
  服务器:<message from='romeo_example_net'
  to='juliet_example_com'
  xml:lang='en'>
  服务器:<body>Neither, fair saint, if either thee dislike.</body>
  服务器:</message>
  客户端:</stream:stream>
  服务器:</stream:stream> 

 

 

以文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起,从<stream>到</stream>构成了一个完整的XML文档。其中的stream标签就是所谓的XML Stream。在<stream>与</stream>中间的那些<message>...</message>这样的XML元素就是所谓的XML Stanza(XML节)。XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一方发信给另外一方。通信的最后阶段是</stream>关闭流,关闭TCP/IP连接。 

 

8. XMPP系统特点:

1)客户机/服务器通信模式;(2)分布式网络;(3)简单的客户端;(4)XML的数据格式。 

 

9.通俗解释:

其实XMPP 是一种很类似于http协议的一种数据传输协议,它的过程就如同“解包装--〉包装”的过程,用户只需要明白它接受的类型,并理解它返回的类型,就可以很好的利用xmpp来进行数据通讯。

 

最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378956.html 谢谢。 

 

完毕。 

 

 


转载请注明本文地址: XMPP协议实现原理介绍

http://chatgpt.dhexx.cn/article/EdfPcq8s.shtml

相关文章

XMPP协议简介[转载]

1. 简介 XMPP来源于Jabber开源社区&#xff0c;基于XML&#xff0c;提供准实时的传递消息、在线状态和请求/响应服务。XMPP使用客户/服务模式&#xff0c;服务器之间能够相互连接&#xff0c;建立在面向连接的协议上&#xff0c;通常是TCP。 下图概要描述了XMPP架构&#xff1…

XMPP协议解析

XMPP国际标准的协议 可扩展的消息和展示的协议&#xff0c;是一种基础的开放式实时通信协议。可扩展新&#xff0c;强可读性。相比Email的发展史&#xff0c;163和qq邮箱之间的通信。为了兼容&#xff0c;符合同一种标准。即实现不同邮箱之间的通信。国内腾讯一家独大&#xf…

xmpp协议(即时通信协议规范)

转载自 https://www.cnblogs.com/jiyuqi/p/5085932.html 相关背景 IM&#xff08;Instant Messaging&#xff09;正在被广泛使用&#xff0c;特别是公司与它们的客户互动连接方案以及互联网与Web2.0相关的应用。为了解决即时通信的标准问题&#xff0c;IETF&#xff08;互联网…

XMPP协议的原理介绍

XMPP&#xff08;可扩展消息处理现场协议&#xff09;是基于可扩展标记语言&#xff08;XML&#xff09;的协议&#xff0c;它用于即时消息&#xff08;IM&#xff09;以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人…

XMPP协议详解

原文链接&#xff1a;http://www.jianshu.com/p/a94749385755 xmpp协议详解一&#xff1a;xmpp基本概念 作者 riverli 关注 2015.07.30 14:22* 字数 3204 阅读 6104 评论 1 喜欢 17 概述 XMPP是一个开放式的XML协议&#xff0c;设计用于准实时消息和出席信息以及请求&#xff0…

物联网协议对比(HTTP、websocket、XMPP、COAP、MQTT和DDS协议)

目录 1、HTTP和websocket 2、XMPP 3、COAP 4、MQTT协议 5、DDS 对于物联网&#xff0c;最重要的是在互联网中设备与设备的通讯&#xff0c;现在物联网在internet通信中比较常见的通讯协议包括&#xff1a;HTTP、websocket、XMPP、COAP、MQTT 1、HTTP和websocket 在互联网…

XMPP基本概念

概述 XMPP是一个开放式的XML协议&#xff0c;设计用于准实时消息和出席信息以及请求&#xff0d;响应服务。 通用的架构 通常采用客户端服务器架构进行实现&#xff0c;其中客户端通过TCP方式使用XMPP访问服务器&#xff0c;服务器之间也采用TCP方式进行通信。 xmpp通用架构…

kafka的isr机制

Data Replication Kafka 的 Data Replication 需要解决如下问题&#xff1a; 怎样 Propagate 消息 在向 Producer 发送 ACK 前需要保证有多少个 Replica 已经收到该消息 怎样处理某个 Replica 不工作的情况 怎样处理 Failed Replica 恢复回来的情况 Propagate 消息 通过zook…

kafka-04数据同步原理ISR、ACK、LEO、HW

1. 分区策略 分区的原因 &#xff08;1&#xff09;方便在集群中扩展&#xff0c;每个 Partition 可以通过调整以适应它所在的机器&#xff0c;而一个 topic 又可以有多个 Partition 组成&#xff0c;因此整个集群就可以适应任意大小的数据了&#xff1b; &#xff08;2&#…

Cisco ISR4221 路由器密码重置方法

【Cisco路由器重置】Cisco ISR4221 路由器密码重置方法 使用usb-console线连接路由器&#xff0c;使用secureCRT连接 记得使用串口serial模式&#xff0c;Port如果没有自动识别&#xff0c;可能是你没有安装FT232R USB UART驱动。教程&#xff1a;https://www.cnblogs.com/iBo…

KafKa - 分区副本ISR选举机制

一、KafKa分区副本ISR选举机制 kafka 中每一个主题又进一步划分成若干个分区。副本的概念实际上是在分区层级下定义的&#xff0c;每个分区配置有多若干个副本。 所谓的副本&#xff0c;本质上就是一个只能追加写消息的提交日志&#xff0c;根据kafka副本机制的定义&#xff…

Kafka 设计原理——副本与ISR设计

目录 副本与ISR设计Follower副本同步ISR设计 副本与ISR设计 一个Kafka分区本质就是一个备份日志&#xff0c;即利用多份相同的备份共同提供冗余机制来保持系统高可用性。 这些备份在Kafka中被称为副本(replica)。Kafka把分区的所有副本均匀地分配到所有broker上。 并从这些副本…

ISR吞吐性能问题

ISR大致可以分几类&#xff1a; Cisco 860、880、890 ISR1800 (fixed)、1800 (modular)、2800、3800 Series ISR1900、2900、3800、3900 Series ISR4K 每一代的设备&#xff0c;设备的性能肯定都不一样&#xff0c;本摘要&#xff0c;将主要记录ISR的吞吐性能问题。 1、下图主要…

生产故障|Kafka ISR频繁伸缩缩引发性能急剧下降原因分析

本文是笔者双十一系列第二弹&#xff0c;源于一个双十一期间一个让笔者猝不及防的生产故障&#xff0c;本文将详细剖析Kafka的副本机制&#xff0c;以及ISR频繁变更(扩张与伸缩)为什么会导致集群不可用。 1、Kafka副本机制 Kafka数据组织方式是topic-parition的结构&#xff…

关于kafka中ISR、AR、HW、LEO、LSO、LW的含义详解

kafka中的ISR、AR又代表什么&#xff1f;ISR伸缩又是什么&#xff1f; ​ 分区中的所有副本统称为AR&#xff08;Assigned Repllicas&#xff09;。所有与leader副本保持一定程度同步的副本&#xff08;包括Leader&#xff09;组成ISR&#xff08;In-Sync Replicas&#xf…

c4isr系统有无服务器,什么是C4ISR系统?

C4ISR是指挥、控制、通信、计算机、情报、侦察与监视系统的英文简称&#xff0c;是美国各军兵种作战系统的大脑和神经。其主要功能是把作战系统各部分连接起来&#xff0c;构成一个灵活、机动、可靠、无缝的网络&#xff0c;确保各参战部队能依靠网络进行以网络为中心的现代化战…

Next.js性能优化之ISR渲染入门和原理探索

前言 术语说明&#xff1a; SSR —— 服务端渲染SSG —— 静态生成ISR —— 增量静态化Date Fetch 函数 —— 本文特指服务端数据获取的几种函数 getStaticProps 、 getServerSideProps 、 getInitialProps 、 getStaticPaths 。 Next.js 中最突出的莫过于它的渲染模式&…

Kafka之分区副本与ISR

概念 什么是副本 Kafka的Topic分区本质是一个用于存储Topic下的消息的日志&#xff0c;但是只存一份日志会因为机器损坏或其他原因导致消息丢失不可恢复&#xff0c; 因此需要多个相同的日志作为备份&#xff0c;提高系统可用性&#xff0c;这些备份在kafka中被称为副本(rep…

Kafka的ISR收缩机制

ISR什么时候收缩ISR什么时候扩展ISR的传播机制Broker宕机之后怎么ISR的收缩&#xff1f; Kafka在启动的时候,会启动一个副本管理器ReplicaManager,这个副本管理器会启动几个定时任务。 ISR过期定时任务isr-expiration,每隔replica.lag.time.max.ms/2毫秒就执行一次。ISR变更的…

Kafka ISR

ISR&#xff08;in-sync replica&#xff09; 就是 Kafka 为某个分区维护的一组同步集合&#xff0c;即每个分区都有自己的一个 ISR 集合&#xff0c;处于 ISR 集合中的副本&#xff0c;意味着 follower 副本与 leader 副本保持同步状态&#xff0c;只有处于 ISR 集合中的副本才…