物联网安全协议之XMPP浅析

XMPP:可扩展消息处理现场协议,是一种基于XML流的用于即时通讯(IM)的协议,其间有三种角色,客户端服务器网关,通信可以在三者之间任意两个发生,前面两个好理解,而网关是为了处理其他异构系统即不使用XMPP协议的系统,比如MSN,SMS等,网关可以转换不同的协议,来达到交流互通作用。客户端与服务器是基于TCP/IP协议来建立连接,在上面传输XML文档。
客户端之间是不能交流的由图可知,客户端之间无法直接交流,同时服务器允许多个客户端同时连接。客户端通过端口5222连接服务器,服务器之间通过5269互相通信。
XMPP可用于异步通信,这也就表明了在客户端和服务器之间存在两条XML流和一条TCP链路,服务器之间需要两条TCP链路来传输对端数据。
XML流会以标记开始,标记结束,客户端服务器之间可能每次只发送一个XML片段或者完整的。stream标记的属性如下:
to只能用于从客户端到服务器的XML流中。
from只能用于从服务器到客户端的XML流中。
id只能用于从接收实体到发送实体的XML流中,id必须唯一,用于标记会话。
xml:lang只能用于发起方,用于约定语言。如发起方没有携带xml:lang属性,接收方应使用默认语言。
version至少在“1.0”以上。

 C: <?xml version='1.0'?> 
 <stream:stream 
 to='example.com' 
 xmlns='jabber:client' 
 xmlns:stream='http://etherx.jabber.org/streams' 
 version='1.0'> 
 S: <?xml version='1.0'?> 
 <stream:stream 
 from='example.com' 
 id='someid' 
 xmlns='jabber:client' 
 xmlns:stream='http://etherx.jabber.org/streams' 
 version='1.0'> 
 ... encryption, authentication, and resource binding ... 
 C: <message from='juliet@example.com' 
 to='romeo@example.net' 
 xml:lang='en'> 
 C: <body>Art thou not Romeo, and a Montague?</body> 
 C: </message> 
 S: <message from='romeo@example.net' 
 to='juliet@example.com' 
 xml:lang='en'> 
 S: <body>Neither, fair saint, if either thee dislike.</body> 
 S: </message> 
 C: </stream:stream> 
 S: </stream:stream> 

建立会话时,会先以TLS(安全传输层协议)建立一个安全链路,成功后再用SASL(简单认证和安全层协议)进行身份认证,之后绑定资源开始传输XML流。
TLS原理:利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥,就用此密钥来加密传输信息。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值