XMPP

,Socket

网络模型

OSI(Open System Interconnection开放系统互联模型)为了全家计算机之间可以通讯才发明的这个模型

模型如下(其中每一层都有每一层协议)

1.应用层:解析的东西显示到这上面

2.表示层:对数据的解析

3.会话层:建立连接 其中Socket是来到会话层的

4.传输层:定义传输层协议TCP UDP

5.网络层:路由寻址  路由器,寻找IP

6.数据链路层:mac地址的解封装 交换机 现在有些交换机也有路由寻址的功能了

7.物理层:制定物理适配的标准,进行数据的传输,用比特流传输


TCP/IP参考模型

现在我们真正实现全球互联的是TCP/IP参考模型,模型如下,就是把OSI\参考模型合并了一些,简化了一些

1.应用层

2.传输层

3.网际层

4.主机到网络层


发送消息的简单过程:就是一个Hello信息先送从应用层出发,最后到物理层每经过一层的时候,每一层都加一个标示,最后网线通过电流的方式发送到另外一个电脑,另外一个电脑接收到电流的时候,从物理层到应用层,再每一层把标示去掉,最后解析成Hello显示到界面上来

详细过程:比如QQ和服务器进行信息交互

1.首先通过IP+端口通过三次握手建立长连接(TCP)

2.建立连接之后会在QQ和服务器没人各有输入流和输出流通道.用来传输数据(输入流写数据,输出流读数据)

3.然后输出流发数据输入流接收数据(一旦建立链接就盯着输入流看看有没有数据)


网络通讯要素

1.IP地址(网络设备的唯一标示)

2.端口号(用于标示进程的逻辑地址,不同进程的标示,比如标示是微信还是QQ)

3.传输协议(通讯的规则比如TCP UDP)

TCP(传输控制协议):需要建立连接,通过三次握手完成连接,安全协议,安全送达,数据大小不受限制但是效率低

UDP(用户数据包报协议):将数据源和目的封装在数据包中不需要建立连接,不可靠协议,数据大小限制在64K之内,效率高


HTTP请求是短链接,也是通过TCP连接的,首先HTTP通过IP和端口号进行三次握手建立连接,然后HTTP把数据发给服务器,发给服务器之后服务器返回给客户端数据,然后服务器就立马断开连接,所以我们说HTTP请求书短连接


Socket

Socekt就是为网络服务提供的一种机制.通信的两端都是Socket,网络通信其实就是Socket的通信,数据在两个Socket之间进行IO传输

Socket连接的流程如下:

客户端的Socket()通过connect()和服务器端建立连接,服务器端的listen()监听阻塞直到有客户连接,然后accept()接收连接,建立连接之后客户端的Write()和服务器端的read(),客户端的read()和服务器端的write()就进行数据交互了



二,XMPP简介

首先要知道即时通讯技术(IM-INstant Messaging)

都是遵守XMPP即时通讯协议

设计一款全世界都使用的即时通讯协议,无论使用什么即时通讯软件,只要他遵守这个协议,都可以互联互通

世界上有好多的IM系统,比如QQ,MSN他们最大的区别就是在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议

协议用来说明信息在网上如何传输,如果有了统一的协议,那么应当可以实现IM之间的直接通讯,为了简历即时通讯的统一标准,目前已经出现的IM协议包括...以及基于XML且开放的可扩展通讯和表示(XMPP)协议(常成为Jabber协议)

XMPP的前身是Jabber(1988年),是一个开源组织定义的网络即时通讯协议

XMPP是一个分散性通信网络,这就意味着只要网络设施允许,XMPP用户可以向任何XMPP用户传递消息,多个服务器之间也可以通过一个专门的"服务器-服务器"协议相互通信,提供了创建分散型社交网络和协作框架的可能性,所以说尽管XMPP是为了满足"个人-个人"及时传递的要求,但是它完全不必局限于此任务
人们多次努力试图统一各大IM供应商的标准,但是都没成功,且每一种IM现在仍在使用自己锁拥有的协议
XMPP是一种基于XML的协议,它继承了X在XML环境中灵活的发展性.这表明XMPP是可扩展的.
XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能
XMPP的核心XML流阐述协议的定义使得XMPP能够在一个比网络协议更规范的平台上,借助于XML易于解析和阅读的特性使得XMPP的协议能够非常漂亮

XMPP的扩展协议Jingle使得其支持语音和视频,目前ios尚不支持

xmpp的官方文档是RFC 3920

XMPP曾经是Google力推的及时通讯协议,代表作是GTalk

XMPP是一个典型的C/S架构,而不像大多数通讯软件一样是使用,P2P客户端到客户端的架构,也就是说在大多数情况下,当两个客户端进行通讯的时候,他们的消息,都是通过服务器传递的.采用这种架构,主要是简化客户端,将大多数工作放在服务器端,但是这样服务器的压力就大了,相反P2P服务器压力就小点

XMPP定义了三个角色:客户端,服务端 网关  通信可以在这三者之间任意两个双向发生

XMPP基本的网络形式是单客户端通过TCP/IP连接到单服务器上,然后在之上传输XML流


XMPP应用传输的是与即时通讯相关的指令,比如QQ是用二进制的形式发送,MSN是使用纯文本指令加空格加参数加换行符的形式发送.而XMPP传输的通讯指令逻辑和他们相仿,只不过协议的形式变成了XML格式的纯文本,这不但使得解析容易了,而且容易阅读,方便了开发和查错

XMPP是用TCP传的XML流

XMPP优点

开放

可扩展

标准(XMPP的技术规格已经被定义在RFC3920及RFC3921)

证实可用,谷歌证实了GTalk

分散

安全


XMPP缺点

数据负载过重XML

没有二进制传输


XMPP是一种类似于HTTP协议的一种数据传输协议,其过程就是如同解包装-包装的过程,只需要理解其接受的类型和返回的类型,便可以利用XMPP进行数据通讯

XMPP官方网站 http://xmpp.org

XMPP的服务器和客户端通讯都必须是通过XMPP实现的(例如基于XMPP的openfire服务器)











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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值