本文章对XMPP通信原理做基本的介绍,不讲具体代码。在面试的时候会经常听到:能介绍一下XXXX原理吗?当然面试不一定全是问XMPP原理。所以接下来几篇文章都是一些原理的介绍,希望对小伙伴们能有所用处,废话不多,进入主题。
1:XMPP概述
XMPP(可扩展消息处理现场协议)的前身是Jabber,由一个开源组织产生的即时通信协议,基于可扩展标记语言(XML)的一种协议,是由IETF(国际互联网小组)通过的网络标准。
XMPP定义了三个角色:客户端,服务端以及网关(下面介绍作用)
2:XMPP的优势
可扩展性:XMPP基于XML,因此具有良好的扩展性。
开源:XMPP不属于任何一个人。
安全:XMPP在Client-to-Server通信,和Server-to-Server通信中都使⽤用TLS (Transport Layer Security)协议作为通信通道的加密⽅法。
分布式:XMPP没有中央服务器,任何企业例如都可以拥有自己的XMPP服务器,并且服务器之间以及不同服务器的用户可以相互通信。举例:如现在的qq用户是不可能和FaceBook用户通信的,但是若干年后(XMPP已经作为网络标准),可能出现一种情况,qq用户可以添加并且和fb用户聊天。
3:缺点
负载过重,没有二进制数据传输。
4:网关(gateway)
上面说到qq用户和FB用户聊天,那么这里不得不提网关,网关的作用就是实现XMPP和其他系统之间的协议转换,使其可以互相交换信息.
5:通信原理
1:首先客户端1通过socket向服务端通过三次握手建立TCP长连接(由C1向服务器发送登陆等信息进行认证)。
2:服务器端对C1进行认证成功,服务器将C1的联系人列表返回给它
3:C1通过服务端向其好友发送状态(presence)消息(在线/隐身)
6 七层协议简介
这里对TCP和UDP进行一个区分:
这里给大家再普及一个很小的知识点:
ip:我们都听过ip寻址,那么ip是什么呢?ip类似于人的身份证,是电脑的唯一标示。
端口:端口是进程的唯一标示,如果不明白什么是进程就看作是应用程序(QQ)。有效端口是0-65535,其中0-1024为系统占用或者系统保留端口,不建议使用。