武汉理’1:大学硕士学位论文端之问通信时TCP套接字的处理,XML流的解析、存储等功能。图3—2公共模块结构图本模块可以按功能分为四个子模块:负责客户端与服务器之间连接的会话管理模块,主要功能是:建立连接,断开连接,接收XML流,发送XML流等;负责XML流的解析和封装的XML模块,主要功能是:将XML流解析成java对象,将iava对象封装成XML流;负责对信息进,77Dli密和解密的模块,主要功能是:对所发送的重要信息进,{TDN密和解密;负责信息读取和转发的路由模块,主要功能是:从对应的端口截取数据,并根据其命名审问的不同进行转发。其流程是XMPP服务器接收到XML流之后,会有渎取器将其读取出来并将其作为入口参数传入XML解析器,XML解析器通过对其命名空间的解析,从而确定将剩余的XML元素解析出来并传入相应的;ava对象中,从而最终将XML转换成iava对象,然后将iava对象传入应用程序模块中,实现其请求完成的功能并返回iava对象,但是该iava对象不能在网络中直接传输,必须先转换成XML节,于是,该iava对象会被传入XML封装器中,被封装成XML节,通过XMPP服务器的发送端口发往目的节点。java对象处理模块处理流程如下:当该模块接收到iava对象时,会先将该对象通过解密算法和解密密钥解密成base64码,然后f耳将base64码转换成二进制码,从而实现对java对象的解析。当完成业务逻辑处理后,该模块会将返回的java对象先由二进制码转换成base64码,然后用加密算法将其加密,这里的加密算法是由双方在建立会话时通过三次握手协议协商的。当XML节被封装成java对象后,必须被转发至订:确的模块中加以处理,这武汉理I:人’7:硕Ij’7:{节论文就要求有一个路由转发模块,如图3—3所示。该模块的实现原理是:在系统启动时加载该路由模块,从而在内存中创建了一块路tlI友,记录了命名空fBJ幂U功能模块之间的对应关系,当iava对象被封装好之后,系统会读出其命名空I’日J,再在路由表中查找其所对应的模块,从而动态地加载该模块,并将该java对象转发至该模块,从而实现路山转发的功能。3.2.1会话管理模块设计图3-3会话管理模块结构冈因为在XMPP系统中任何两个客户端之间的通信必须经过服务器,所以在本系统中会话分为两种:客户端对服务器fc2s)和服务器对服务器(s2s)。在服务器端有两个会话组件,分别用于管理c2s和s2s。其中c2s会话管理用于管理客户端和服务器之汹j的通信,该模块将会监听所指定的端口5222,如果服务器收到数据包,则解析出命名空间并将数据包发送至该模块(c2s),该模块收到后会与本地服务器中保存的本地用户信息进t?x,J-比,从而确定是否有权限处理该数据包。s2s模块用于管理服务器与服务器之问的通信,陔模块将会监听服务器与服务器之|.白J通信的端口,如果收到数据包(例如连接请求),则会对发出数据包的服务器进行服务器回拨以确定该服务器的身份是否合法,并进行密钥的协商。3.2.2XML处理模块设计J下如上~章对协议的描述,XMPP协议采用的是XML格式并且都有固定的27武汉理T大学硕士学位论文格式,因此对该种XML文本的解析比较简单,可以通过定义java对象来存储XML报文中相关的信息。与解析XML报文类似,封装XML也很简单。这主要得益于协议对XML报文格式的规定,以及XML语言本身固有的可扩展特性。XPP与普遍使用的XML解析器两类技术:DOM(DocumentObjectModel)和SAX(SimpleApiforXml)不同。(1)DOM是基于对象树的方式,即将整个XML文件按照其层次结构封装成带有层级关系的对象,SAX是基于事件流方式,而XPP是streaming的方式。incremental(2)DOM和SAX在解析XML时是不允许中断的,因为它们没有可靠的续传机制;而XPP是可以在任何时候中断,并且允许重新丌始,这是因为该种方式提供了可靠的续传机制。(3)SAX与DOM都足基于“推模式"的解析,虽然“推模式"解析易于使用,但处理较大的XML文档时效率并不好。3.2.3路由模块设计图3.4路由模块结构图本系统服务器设计是基于模块化的思想,这样方便了系统的扩展减小了系统的歼销,但同时也产生了一个问题,即不同模块的调用,为此XMPP协议引入了命名空间这一概念,命名空间往往是一个唯一确定的标示符(比如一个域名),一个命名空间对应了唯一的一个系统模块。在网络中传输的报文都是以命28武汉理一l:人学硕}:学何沦文私,~{Jf,Ji爪的,f天】此在服务器端没计时就必须实现命名窄问和不同的功能模块之川fi:jl符I|I。3.2.4加密模块设计t}{J:XMPP协议规定足以XML语言传输的,XML语言本身非常易于解析和I砌i丈的,所以一旦在传输的过程中XML报文被监听或截获,后果将不堪设想,…此,XMPP系统引入了加密机制,该加密过程是在XML报文封装之前完成的,丽lI^足义寸厦婴信息的加密,例如:用户名、密码等。该JJ|】密机制是分两步完成的,首先将二进制码转换成BASE64码。BASE64是MIME邮件中常用的编码方式之一。它的主要思想是将输入的’#符串或数捌编码成只含有{’A'-'Z’,’a’.’z’,’0'-'9’,’+t,’/’)这64个可打印字符的串,敝称为“BASE664”。BASE64编码的方法是,将输入数据流每次取6bit,用此bit的值(O一63)作为索引去查表,输出相应字符。这样,每3个字节将编码为41011111000100101个’声符(3x8—4x6),前两位用零代替。例如:1001换后变成001001100011l11000001001000110101010转在转换成BASE64码之后,再进行加密,加密算法由各网络实体建立会话时通过TLS协商,例如:MD5等。3.3各功能模块的设计本文所设计的即时通信系统服务器包含了传统即时通信系统的所有功能:用户注册,用户登录,好友名册,分组名册,添加好友,删除好友,获取好友在线信息,用户身份认证,向好友发送信息,文件传输等。同时由于XMPP服务器有模块化的特点,可以根据需要进行扩展。3.3.1用户注册功能设计其流程图如下:29武汉理‘r人学硕士学位论文图3—5用户注册流程图用户在使用该系统之前必须先注册用户名和密码,因此,必须有一个用户注册模块,其处理流程图如图3.5所示。在客户端用户注册窗口,由用户输入用户名、密码、邮箱地址等信息,并提交给服务器;服务器接收到以上信息后,会查询数据库中是否有该用户名,如果有,则提示该用户已经存在;如果没有,则将其插入数据库中,并向客户端返回注册成功的信息。3.3.2用户登录功能设计其流程图如下:30
基于XMPP的企业级即时通信系统的研究与实现 - 图文
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)