xmpp core-RFC3920学习笔记-01

看不下去了,贴出来大家看看指点一下,鼓励一下!

1.  介绍

系统C/S结构;
1.1 Server 功能:

-管理连接

-route appropriately-addressed XML stanzas

1.2 端口

-客户端之间:5222

-server间: 5269

2.  寻址策略

2.1 JID结构

node@domain/resource

domain:网关,主server…

node:网关或server提供的实体或服务

resource:代表特定的session,connection或者属于node提供的entity

从范围上讲resource最小,node其次,domain最大

2.2 确定地址

SASL negotiation,且合适的话,进行 Resource Binding, 数据流的接收实体必须(MUST)确定发起方的JID.

     (SASL)Simple Authentication and Security Layer

3.  XML 数据流

包括:XML streams and XML stanzas.

3.1 XML streams

XML streamsxml用于网络间实体进行数据交换的容器。

XML streams可以简单的认为由XML tag确定的数据。<stream>…</stream>内标示的特点属性的数据。

     stream生命周期内,实体发起方可以发送很大的数据块,用于协商这个数据(使用 TLS SASL协商) 或者作为XML stanzas (使用如下默认名字空间下的元素<message/>, <presence/>, or <iq/>)

3.2 XML stanzas

XML stanzas是一种discrete的语法单元,它是通过xml stream从一个实体发送到另一个网络实体的。

     因此XML stanzas<stream>的子项。depth=1,它还可以包含子项。

     XML Stanzas只使用stream内默认namespace<message/>, <presence/>,<iq/>等。

     XML元素用于TLSSASL协商或者server dialback 的不属于XML stanza

     client完成协商后,将发送极大的XML stanzas数据,最后client通过发送</stream>结束,clientserver端断开连接。

     本质上,XML stanza是通过XML stream包装后才在session内发送的。

3.4 Binding to TCP

邦定XMPPTCP连接。

如在client-server连接中使上下行xmpp使用同一个tcp连接。Server-server中使用两个tcp,一个server to peer,另一个peer to server

3.5 Stream Security

       -必须使用TLSSASL

       -initial stream(初始方发往接收侧的)和response stream(接收方发往初始侧)二者必须(MUST)单独加密。尽管两个方向的安全策略可能(MAY)要通过双方某种相互鉴定和协商的机制来建立。

     在未能通过鉴定前不能发送数据,如果发送了,接收方也不应该当采用,应该回复<not-authorized/> ,报错并结束该<stream>关闭tcp连接。

3.6 Stream Attributes

Stream属性,也就是stream的子项。包括:

       to:发起方到接收

       from:接收到发起方

       id:接收方创建,唯一标示一个发起方的session

       xml:lang:语言

       version:版本至少1.0

若在错误的一方收到如上属性采取silently ignored的策略。

     注:版本的问题,不同版本可能无法解析对方stream中的属性。

发起和接收都在head的显著位置标示自己的version,若不表示则默认都支持。若检测到不支持则关闭stream、关闭tcp

3.7 Stream Features

若发起方发送version为最新版本,则接收方(一般指server)必须发送一个<feathers/>,用于发起stream-level可协商的feather。目前仅用于广告,资源邦定。

3.8 Stream Errors

root stream 可能包含<error/><error/>必须由适当的实体发送,一般是server而非client

Ruls

l        若错误不可恢复,则检测到错误的entity向其他entity发送</stream>关闭tag,关闭tcp

l        如果error发生在setup阶段,接收端应仍旧发送opening <stream> tag, <error/>做为子项,并关闭tcp

l        如果发起方在to中提供未知的host或无to项,server应在发送的‘from’中提供authoritative hostname

Syntax

l        <error>必须由child元素,且xmlns(xml namespace)必须为urn:ietf:params:xml:ns:xmpp-streams

注:xmlnsxml名字空间,用于声明namespace主要是区别ns,提高使用灵活性。

l        可包含<text/>子元素(OPTIONAL),包含名字空间urn:ietf:params:xml:ns:xmpp-streams,且应包含xml:lang属性

l        可以包含app特定的信息,namespace采用app指定的内容。

Defined Conditions

.           <bad-format/> <bad-namespace-prefix/> <conflict/>

<connection-timeout/><host-gone/><host-unknown/>

<improper-addressing/><internal-server-error/>…等等

指出多种可能的错误指示,xmlns需要双方支持才有效。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值