XMPP协议3

XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。XMPP协议采用的是客户端-服务器架构,所有从一个客户端发到另一个客户端的消息和数据都必须经过XMPP服务器转发,而且支持服务器间DNS的路由,也就是说可以构建服务器集群,XMPP的前身是一个开源组织制定的网络通信协议——Jabber,XMPP的核心是在网络上分片段发送XML流的协议,这个协议是XMPP的即时通讯指令的传递手段。

 XMPP的基本网络结构 :

xmpp定义了3个角色:Client Server Gateway

通信能够在这三者的任意两个之间双向发生。

服务器同时承担了客户端信息记录,连接管理和信息的路由功能。

网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。

 客户端利用xmpp(基于TCP/IP)访问server,传输的是XML 

Client--------Server----Client

    TCP               TCP            TCP

XMPP server:

其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。

功能:

1.会话管理器:负责客户端会话认证,在线状态,用户联系表等

2.数据存储器(XDB):连接数据库系统,保持用户信息、通信日志等

3.连接器管理器:管理与客户端之间的连接

4.服务器连接器:管理xmpp服务器之间的连接

5.传输器:建立xmpp服务器与非xmpp服务器通信

所有从一个client到另一个client的jabber消息和数据都要通过xmpp server:

1.client连接到server

2.server利用本地目录系统的证书对其认证

3.client制定目标地址,让server告知目标状态

4.server查找,连接并进行相互认证

5.client间进行交互

统一的JID(jabber identifier)

JID=[ node”@” ] domain [ “/” resource ]

eg: cyber@cyberobject.com/res

domain:服务器域名

node: 用户名

resource:属于用户的位置或设备

一个用户可以同时以多种资源与同一个XMPP服务器连接xmpp (手机和PC)

xml包括3个元素:

简单示例:

<stream>

   <presence>

        <status/>


<message>

     <body/>


</message>

<iq>

<bind/>

</iq>

</stream>

<presence>--此元素确定用户的状态

<presence from = cyber1@jabber.org/contact

to = cyber2@jabber.org/contact>

<status>online</status>

</presence>



<message>-用于两个用户之间发送信息

<message frome=cyber1@jabber.org/contact

to = cyber2@jabber.org/contact

Type = "chat">

<body>Hello</body>

</message>


<iq>信息/请求,是一个请求响应机制,管理xmpp服务器上两个用户的转换,允许他们通过相应地xml格式查询和响应

<iq

from = cyber1@jabber.org/contact

id = "id1" Type = "result"

</iq>

Id的主要属性:type,包括:

Get:获取当前域值

Set:设置或替换get查询的值

Result:说明成功地响应了先前的查询

Error:查询和响应中出现的错误

XMPP 协议族基于TCP

XMPP采用SASL作为身份认证协议

SASL包含的信息:

<服务名>:XMPP

<初始序列>

<交换序列>

<安全层协商>

顺序:[TCP]?[TLS]?[SASL]?[XMPP] 

XMPP采用TLS的“START-TLS”扩展来为通信双方提供加密性和数据完整性服务

登录xmpp服务器过程示例 :C—client      S—server

步骤:1.client初始流给server 

 C:<stream:stream to = "example.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version = "1.0">

2:server使用一个流标记作为响应发给client


3:Server发送STARTTLS扩展给client,并带有认证机制与任何其他流特征

4. Client发送STARTTLS命令给ServerC:

5.Server通知Client它被允许处理 S:Note:client与server TLS协商失败,server通知client TLS协商失败,并关闭流与TCP连接

6. 如果TLS协商成功,client初始化一个新流给server C:

7.Server靠发送带有任何可利用流特征的流头作为响应S:PLAINDIGEST-MD5zlib

8.Client选择一个认证机制C:AGh4dwAx

9.Server通知client认证成功S:Note:如果认证不成功,server通知client认证失败,并关闭流

10.如果认证成功,client初始化一个新流给serverC:

11.Server依靠流头来响应client,并伴随有另外的特征S:zlib

12.资源绑定:client发送一个类型为set的iq,并包含所需绑定的资源节点C:spark

13.如果server为client产生了一个资源标识符或是接受了由客户端提供的资源标识符,它必须返回一个类型为result的iq节点给client,并必须包含子节点,来为server决定的已连接资源指定全JIDS:sparkusername@cyber/spark

14.Client向server请求sessionC:

15.Server告知client,session已建立S:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容