即时通讯的概述


优势:
     Instant Messenger当前IM几乎作为每个上网者必然使用的工具, 及时通信软件,就是大家使用的QQMSN MessengerGtalk等等。 在以前这些命令要么用 2 进制的形式发送(比如 QQ ),要么用纯文本指令加空格加参数加换行符的方式发送(比如 MSN )。 Gtalk就是基于XMPP 协议的一个实现,其他的则不是。 XMPP 传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了 XML 格式的纯文本
  • XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIMQQ等有功能完整,完善等先进性。
XMPP 的扩展协议 Jingle 使得其支持语音和视频

XMPP:
  • 全称:可扩展通讯和表示协议XMPPJabber协议为基础,而Jabber即时通讯中常用的开放式协议。XMPP(可扩展消息处理现场协议)是基于可扩展标记语言XML)的协议 ,核心的XML传输协议
  • XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够很好的完成数据的传输。
  • XMPP网络的架构和电子邮件十分相像;XMPP核心协议通信方式是先创建一个streamXMPPTCP传递XML数据流,没有中央主服务器。任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的实时传讯体验。
  • 任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASLTL等技术的可靠安全性,已内置于核心XMPP技术规格中。
             XMPP 协议是自由、开放、公开的,并且易于了解
             设想既然 XMPP 协议是一个公开的协议,那么每个企业都可以利用它来开发适合本身企业工作,提高自身生产效率的 IM ;甚至,你还可以在网络游戏中集成这种通                        信软件,不但让你可以边游戏边聊天,也可以开发出适合游戏本身的 IM 应用,比如说一些游戏关键场景提醒功能,团队语音交流等等都可以基于 IM 来实现

             说到底:xmpp 是一个应用层协议,其底层(传输层和网络层)依然是 Socket 通信。换句话说, xmpp 是建立在 Socket 通信基础上的。
             XMPP 中定义了三个角色,客户端,服务器, 网关 。通信能够在这三者的任意两个之间双向发生
             (1) 域名 (domain identifier) (2) 节点 (node identifier) (3) (resource identifier) .它的格式是 node@domain /resource
  • XMPP中定义了3个顶层XML元素:
  • MessagePresenceIQ.
    • 传统的http是请求之后,去服务器回去数据
    • xmpp是,服务器给客户端数据!
    • 用户只需要明白它接收的类型,并理解它返回的类型,就可以很好的利用xmpp来进行数据通讯


  • Smack 是一个XMPP协议的Java 实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML文件内容的方式来实现自己的功能

    • 一、Smack是什么
    • Smack是一个开源,易于使用的XMPPjabber)客户端类库。Smack API, 是一个 JavaXMPP Client Library,也是由Jive Software开发。 优点:编程简单。 缺点:API并非为大量并发用户设计,每个客户要1个线程,占用资源大,1台机器只能模拟有限(数千个)客户. smack是一个用 java写的XMPP客户端代码库,spark 的核心.
    • 二、Smack的优点
    • 1:Smack是一个简单的,功能强大的类库。给用户发送信息只需三行代码便可完成XMPPConnectionconnection = newXMPPTCPConnection(”jabber.org“);connection.login(”mtucker”, “password”);connection.createChat(”jsmith@jivesoftware.com“).sendMessage(”Howdy!”); 2:不会强迫你向其他类库那样,在信息包层面进行编码。它提供了更加智能化的类比如Chat,能使你的工作更富效率。3:不需要你熟悉XMPP XML格式,甚至是XML格式。4:易于实现机-机对话。5:Apace License下的开源软件。你可以把它用于你的商业或非商业程序。 好的不废话了,进入咱们的正题。aSmack4.0后和Smack基本差异也没那么大了,现在来说说aSmack4.0后版本的配置和使用
      • 1、需要注意点是注册是需要异步操作否则连接异常2aSmackADT要求蛮高,最好是23及以上,否则出现各种奇葩错误。

    • SASL   的认证方式包括
    • 1. PLAIN plain 是最简单的机制,但同时也是最危险的机制,因为身份证书(登录名称与密码)是以 base64 字符串格式通过网络,没有任何加密保护措施。因此,使用 plain 机制时,你可能会想要结合 tls

       

    • 2.DIGEST-MD5: 使用这种机制时, client server 共享同一个隐性密码,而且此密码不通过网络传输。验证过程是从服务器先提出 challenge (质询)开始, 客户端使用此 challenge 与隐性密码计算出一个 response (应答)。不同的 challenge ,不可能计算出相同的 response ;任何拥 有 secret password 的一方,都可以用相同的 challenge 算出相同的 response 。因此,服务器只要比较客户端返回的 response 是否与自己算 出的 response 相同,就可以知道客户端所拥有的密码是否正确。由于真正的密码并没有通过网络,所以不怕网络监测。

       

    • 3.anonymous:  anonymous机制对smtp没有意义,因为smtp验证的用意在于限制转发服务的使用对象,而不是为了形成open relaysasl之所以提供这种机制,主要是为了支持其他协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值