XMPP

适合对象:适合正在做即时通信的开发的,初级的就可以 


备注:会有系列文章的更新,大家要是有什么疑问,随时在下方的评论区留下你的想法。



1

概要

1、即时通讯技术简介


2、XMPP诞生的由来


3、XMPP特点


4、XMPP的基本结构


5、XMPP工作原理


6、XMPP的优缺点


7、OSI七层模型


8、IP地址、端口号、传输协议


9、TCP和UDP的区别


10、Socket机制


1.即时通讯技术简介

即时通讯技术(IM -- Instant Messaging)支持用户在线实时交谈。


如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容


有许多的IM系统,如AOL、Yahoo IM、 MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传 输协议

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


2.XMPP诞生的由来 

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


示意图.png

3.XMPP特点

1、XMPP是基于XML的协议


2、点对点


3、即时通讯


4.XMPP的基本结构

1、XMPP是一个典型的C/S架构


2、XMPP中定义了三个角色,客户端,服务器,网关


3、服务器同时承担了客户端信息记录,连接管理和信息的路由功能


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


5.XMPP工作原理

  1. 节点连接到服务器

  2. 服务器利用本地目录系统中的证书对其认证

  3. 节点指定目标地址,让服务器告知目标状态

  4. 服务器查找、连接并进行相互认证

  5. 节点之间进行交互


6.XMPP的优缺点

1、优点:开放、安全、分散、可扩展


2、缺点:数据负载过重XML、没有二进制传输


7.OSI七层模型


OSI七层模型.png


物理层:主要定义物理设备的标准,如网线的接口类型,各种传输介质传输速率等。


主要作用是传输比特流(由1、0转化为电流的强弱进行传输,到达目的地后在转为1、0)这一层的数据叫做比特(bit)主要设备是集线器。


数据链路层:主要是将物理层接收来的数据进行MAC地址的封装与解封装,常把这一层的数据叫做帧。主要设备是网卡和交换机


网络层:选择合适的网间路由交换节点,确保数据的及时传送。将数据链路层传来的数据进行IP地址的封装与解封装。


常把这一层的数据叫做数据包,主要设备有路由器。


传输层:定义了一些传输数据的协议和端口,如TCP、UDP协议。


会话层:通过传输层建立数据传输通道,在系统之间发起会话和接受会话请求。


表示层:主要对接收的数据进行解释和解压缩。把计算机能够识别的东西转化为人能够识别的东西(如图片,声音等)。


应用层:主要是一些终端的应用,比如FTP(各种文件下载)、浏览器,qq等

 
图片

OSI数据封装.png


8.IP地址、端口号、传输协议

IP地址:

1、网络中的设备唯一标识符
2、不易记忆,通常可以用主机名
3、本地回环地址:127.0.0.1,主机名:localhost


端口号

1、应用的标识符
2、有效端口:0-65535,其中0-1024有系统使用或者系统保留。


传输协议(用什么方式进行交互)

1、通讯的规则
2、常见协议:TCP、UDP


9.TCP和UDP的区别

TCP:传输控制协议,长连接(和打电话很相似)

1、建立连接,形成通信管道。
2、必须经过三次握手完成链接,是可靠的传输协议。
3、传输过程中数据大小不受限制。
4、必须建立连接,效率就会低


UDP:用户数据包协议(和发短信很相似)

1、将数据的源和目的封装在数据包,不需要建立连接。
2、正因为不需要链接,所以是不可靠的协议
3、传输数据在64K之内
4、不需要建立连接所以,速度快。


http是短连接,TCP是长连接,即时通讯要使用长连接


10.Socket机制

1、Socket是网络服务的一种机制
2、通信两端都是Socket
3、网络通信其实就是Socket间的通信
4、数据在两个Socket之间通过IO传输


Socket.png


socket是"打开—读/写—关闭"模式的实现,建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。


套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。


客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。


为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。


连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。


关于XMPP的基础部分就说到这里,后期会有系列文章的更新,敬请期待!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值