Instant Messaging java 概要(第二章)01

本文介绍了Jabber协议的核心组成部分,包括服务器、客户端、数据流和数据包等基本概念,并详细解析了Jabber消息模式的工作原理及客户端与服务器间的交互流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
开始之前我们对 jabber 协议有一个总体了解,重点讨论其中的三个核心规则: Message presence IQ
1、              Jabber Message 模式
在开始编写软件之前我们了解 jabber Message 模式是非常重要的,他主要由 4 个方面组成: 
Server Jabber Server 参与 Jabber 的通讯的管理。它的重要职责是为客户端提供服务,服务的内容包括 packets 的路由选择和用户管理
Client: 客户端的典型功能是向终端客户显示信息,响应用户请求。它也提供自主的功能,当作为 jabber 服务的供应者时,被称为 ChatBots
Stream :它的概念是从服务器到客户端的网络连接是一组单向数据流。从 xml 的角度看他就是一个密闭在 <stream:stream> 中的 xml 文档。从逻辑的角度看, Stream 结合上下文元数据,包括客户端 jabberID, 服务器 JabberID 以及唯一流 ID 和流状态组成会话。
Packets: 客户端到服务器端的 xml 片段被称为 Packets 。每一个 Packets 是自包含的经过验证的 xml 子文档。 Jabber 协议规定了这些 Packets 的格式和交换他们的适当方式。
和其它应用的服务类似, Jabber 服务器运行于某一台电脑上并监听来自客户端的请求。 Jabber 规定 Jabber 监听端口是 5222. 安全的 Client/server 链接能通过 SSl ,在服务器的 5223 上连接。 Jabber 服务能接受其他端口,这些任由管理员设定。
虽然可以选择端口,但是大部分的 jabber 客户端默认的连接服务器还是通过 5222 5223 端口,因为客户端的默认配置也是这样,如果改变端口,需要修改客户端配置。
一个 Jabber 客户端创建一个连接流,向服务器端发送一个 <stream:strem> 标签。这个未关闭的标签的 ID 是要连接的服务器域名和发送请求的客户端。这是非常重要的,因为一个服务器上可以有许多 Jabber 服务。
例如,我用两个 jabber 域名: shigeoka.com manning.com 。我能够配置这个 DNS 将这个域名映射到 IP10.0.0.1 。一个客户端希望加入到 shigeoka.com ,通过域名可以找到适当的服务。得到 IP 地址和要链接的机器。其他客户可能想练接到 manning.com 同样通过域名可以实现。
Jabber 服务的 IP 地址是 10.0.0.1, 已知的虚拟了两个域名 shigeoka.com manning.com 。不幸得是服务器接收端口 5222 的连接,他不知道那个域名被客户端所请求。无论如何,当第一个客户端发送一个开放的 <stream stream> 标签,它会被指引到 mainning.com 。服务器能够关联到相关信息以便知到任意哪个一个客户端。
Jabber 服务器接受一个客户连接,他将回复客户端一个 <stream:stream> 标签,由他发出的标签标识出服务器的域名,同时赋予 Stream 一个随机的 Session ID 。当服务被关闭时服务器和客户端都可以发送一个 <stream:error> 包来说明问题。
一旦服务器和客户端建立了连接,他们根据不同的 Jabber 协议交换 jabber Packets 。在大部分的情况下,服务器在被服务器端验证之前仅仅允许客户端使用有限 jabber 协议的子集。
Jabber 没有规定验证的规则。最低限制是,大部分的服务器将允许客户使用 Jabber 注册和认证协议。
每一个客户端和服务器端可以随时关闭连接,只要发送一个 </stream:stream> 标签。
为客户端的通讯算法总结如下:
1、            5222 端口连接 Jabber 服务。
2、            发送一个未闭合的 <stream:stream> 到指定的服务器地址。
3、            等待服务器的 <stream:stream> 回复和流会话 ID
4、            Jabber 检验协议登录找到用户资料。
5、            发送 Jabber 包到 Jabber 服务器。 Jabber 服务路由 Packets 到适当的接收方。
6、            发送一个关闭的 </stream:stream> 关闭流。
7、            关闭网络连接。
 
在这个 Message 模型中,客户端仅仅需要和服务器有一个连接就可以了。这个连接在发送接收 Packets 是保持打开了状态。发送 Packets 时, Packets 的客户地址是接收人,发送的到服务器的信息包含在共同的 xml 中。服务器负责路由 Packet 到适当最终节点。
这个简单的模型有许多的优点和弱点。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值