优胜从选择开始,我们是您省心的选择!—— 无忧期刊网
帮助中心
期刊发表
您的位置: 主页 > 论文范文 > 电子论文 > 正文

麒麟系统下即时通讯系统的设计开发

作者:admin 来源:未知 日期:2020-05-08 08:32人气:
 摘    要: 随着操作系统国产化的浪潮,麒麟系统已开始应用于各行各业,但是麒麟系统还没有一个便捷的即时通讯系统。本文旨在设计能在麒麟系统下运行的即时通讯系统。由于麒麟系统是基于Linux内核开发的,本文采用QT开发平台,设计并实现了一套即时通讯系统。此系统采用oracle数据库和RSA加密技术,既能解决麒麟系统下即时通讯问题,又保证了通讯安全。经测试,系统能够稳定运行。
 
  关键词: 麒麟; Linux; 即时通讯; oracle; qt; RAS;
1 、引言
 
  麒麟系统是在Linux内核基础上开发出的,具有高安全、高可用、高性能、高可定制的国产操作系统[1]。由于Linux内核开源、操作可控[2],麒麟操作系统一直被国家大力推广,目前已应用于某些服务器和部分桌面终端,未来将应用于所有桌面终端。随着在桌面终端的普及,麒麟系统对即时通讯需求就变得尤为迫切。
 
  由于桌面终端市场主流的通讯软件都是基于windows平台开发的,不能直接应用于Linux平台[3],所以有必要开发一套基于Linux平台的即时通讯系统。
 
  随着操作系统国产化的浪潮,麒麟系统已开始应用于各行各业,但是麒麟系统还没有一个便捷的即时通讯系统。本文旨在设计能在麒麟系统下运行的即时通讯系统。由于麒麟系统是基于Linux内核开发的,本文采用QT开发平台,设计并实现了一套即时通讯系统。此系统采用oracle数据库和RSA加密技术,有效解决Linux系统即时通讯问题。经测试,系统能够稳定运行。
2 、Linux简述
 
  2.1、 Linux简介
 
  Linux是一种开源的类Unix的操作系统内核,自1991年诞生以来,借助于网络和全世界IT爱好者的努力,Linux内核功能更加完善,在安全性、多线程、多用户等方面要优于windows系统,发展潜力巨大。
 
  以Linux内核为基础形成的完整操作系统都称为Linux操作系统。目前,Linux操作系统有上百个分支,麒麟系统是其中一个分支[4]。以linux内核为基础开发出来的软件可以运行在所有Linux操作系统上。
 
  Linux操作系统上图形界面应用程序大多采用QT开发环境。
 
  2.2、 QT简介
 
  QT是一个跨平台的C++图形用户界面开发框架,由TrollTech公司开发,提供给应用程序开发者图形用户界面所需的所有功能,采用信号和槽机制[5],支持多线程技术[6]。QT是完全面向对象的,扩展方便,支持组件式编程。
 
  由于其自身的优势,QT已成为基于Linux操作系统图形界面应用程序开发的最佳选择[7]。本文就是在Linux系统上采用QT开发工具设计并实现了即时网络通信系统。
 
  3 、系统总体设计
 
  本系统是面向企业和单位内部的通讯系统,通过延伸互联网能力,提高人员之间的沟通和协作能力。系统不仅提供文字、文件通讯功能,还支持点对点通信和分组群通讯。在通讯中加入加密、解密技术,提高信息传输的安全性。整个系统采用C/S架构,包含服务端和客户端两部分。服务端具备用户管理、消息通知转发、通信安全保障、离线信息处理等功能;客户端具备用户注册与登录、文字传输、语音传输、文件传输、分组通讯等功能。用户间文件、语音通讯采用P2P技术,提高了通讯效率,降低了服务端开销。引入模块化设计思想,将系统划分为三层结构、多个相互关联的功能模块,模块内聚敛,外耦合,结构如图1所示。
接入层主要处理用户接入,状态查询、服务器地址管理,将用户业务分类转发给应用层对应的模块;服务是系统的核心层,为用户端提供通讯服务,主要包括P2P通讯、群组通讯、用户管理、安全保障等功能;数据层包含了系统涉及的Oracle数据库和文件DB模块,Oracle数据库存储了用户信息、分组群信息、离线信息等内容,文件DB用于用户存储通讯相关信息。
 
  4 、即时通讯系统设计与实现
 
  4.1 、通信功能设计
 
  为保证数据可靠性和对多用户的支持,制定了应用层协议,同时增加缓存机制,提高数据传输的效率。
 
  (1)通信协议
 
  数据传输采用可靠的TCP[8]传输方式,支持多个客户端,并保证数据传输的顺序性,具体格式如图2所示,各字段含义如下:
包长:表示通信协议包总长度。
 
  源地址和目的地址:数据传输的源和目的标识,服务端和每个客户端都有唯一的标识码。
 
  序号:用于协议包的确认和重传。
 
  ACK、SYN、ERR:数据传输的控制标志。
 
  命令:服务端与客户端之间命令标识和相应的参数,格式与具体的命令有关。
 
  (2)基于缓存的数据传输
 
  为了解决网络故障造成的数据重传问题,引入了缓存机制。缓存是一种提高数据传输可靠性的方法,良好的缓存可以防止数据丢失保证数据可靠达到,使应用程序更加专注于自身功能实现。考虑到网络传输的特点,传输通道内必须设置数据缓冲区来缓和数据达到的突发性,考虑到网络故障,还需要设置磁盘级的缓存来保存待传输的数据。
 
  本系统的缓存设计思路如下:缓存采用内存和硬盘两级的缓存。在内存中设置可循环存储的缓冲区,上层应用传输命令仅将数据存入此缓冲区,系统启动数据发送线程,定时将缓冲区内的数据发送走。系统启动收发检测线程,当收发两端之间出现故障时,就将缓冲区的数据存入硬盘中,待故障修复后,将硬盘中的缓存数据发送走。从功能上看,本系统可分为数据发送和数据接收两部分,如图3所示。
 4.2、 数据库处理功能设计与实现
 
  从功能上看,系统具备网上存储个人信息、通信数据等信息。每次登录,用户都能自动获取好友信息、通信记录等相关信息。
 
  从实现上看,主要任务是选择后台数据库、在数据库中建立表、约束等结构和相应的数据库访问接口。
 
  系统后台数据库采用oracle,数据库中的表主要有用户表、好友表和数据记录表,其定义如下所示。
 
  数据库访问主要包括连接、查询、插入、更新等接口,其定义如下所示。
4.3、 资源同步管理功能设计与实现
 
  资源同步管理负责同步客户端需要的系统资源,包括图片、图标、音频、文件、共享信息等资源数据,这些数据存储在专用服务器上。资源分类存储,每类资源都用时间戳来标识。当用户登录服务器后,客户端会比对终端资源与服务器资源的时间戳,确定本客户端需要更新的资源。资源更新算法如下:
Step1.客户端向服务端发送资源更新请求,数据中包含客户端资源时间戳;
 
  Step2.服务端响应客户端请求,查询比请求时间戳新的资源记录,并将结果返回客户端;
 
  Step3.根据记录,客户端启动资源更新进程,直到所有资源更新完毕后结束。单个文件更新算法见Step4-8;
 
  Step4.客户端向服务端请求下载某个文件;
 
  Step5.服务端将该文件属性信息回传给客户端;
 
  Step6.根据文件大小,确定需要启动的线程数(相当于把文件分成N份,每个线程负责下载一份);
 
  Step7.客户端启动N+1个线程,N个线程负责下载文件,1个线程记录N个线程实际下载数据的起始位置、结束位置等信息。
 
  Step8.若N个线程都下载完毕,则将N个文件合成一个文件,并复原文件属性信息;若由于网络故障或其他原因,中间出现中断,则待网络恢复后,根据记录文件下载未完成的任务。
 4.4、 用户登录功能设计与实现
 
  用户登录是系统一项基础功能,在用户登录过程中,需要帐号密码验证,其过程如图4所示。
 
  Step1.用户登录客户端,获取服务器地址,向服务端接入子层发送登录请求,接入层将该请求转发给服务层;
 
  Step2.服务层向数据层查询此用户信息,确认信息无误后将用户登录信息更新到数据库,并将登录成功结果返还给用户;
 
  Step3.客户端主动与服务端接入层建立心跳监测链路。接入层定期更新有效的心跳监测链路,确定客户端在线或离线状态。
 
  4.5、 系统点对点通讯设计与实现
 
  系统整体采用CS架构,但用户间通讯采用P2P技术,通讯的内容主要是文字、文件、语音,整个流程如图5所示。
 
  Step1.用户A向服务端接入层发送与用户B的P2P通讯请求,接入层通过业务分发将此请求转给服务层。服务层检测用户B是否在线,若在线则将获取用户B的通讯地址信息,否则启动离线通讯;
 
  Step2.用户A收到用户B的通讯地址,则与用户B建立TCP/IP Socket连接,进行正常的通讯。
 
  Step3.若用户B不在线,用户A与服务端建立临时的Socket,将通讯内容发送到服务端;
 
  Step4.当用户B上线时,服务端将离线信息发送给用户B。
4.6、 系统安全性设计与实现
 
  网络存在诸多不安全因素,如果不对数据进行保护,会导致信息泄露,造成重大损失,因此有必要采取手段保护数据安全。公开密钥体制加密是一种“由已知加密密钥导出解密密钥在计算上是不可行”的密码体制,具有高安全、数字签名等能力。在公开密钥体制中,公钥与私钥是通过一种算法得到的一个密钥对,公钥是密钥对中的公开部分,私钥是非公开部分。在加密算法和解密算法已知的情况下,无法通过公钥计算出私钥[9]。本文采用基于公开密钥体制的RAS算法,RAS算法先生成公钥和私钥,再进行加密、解密变换,流程如下所示。
 
  Step1.随机生成两个大质数p、q;
 
  Step2.计算R=(p-1)*(q-1),N=p*q,n=log2N,n是N的二进制表示所占用位数,也是密钥长度;
 
  Step3.e1和e2是一对相关的值,e1是与R互质的任意数,再计算e2,要求(e1*e2)mod(R)=1;(n,e1)与(n,e2)就是密钥对,其中(n,e1)是公钥,(n,e2)是私钥。
 
  Step4.加密变换:将明文A分块并且数字化,每块长度不能超过n,进行加密变换B=Ae1(mod n),得到密文B;
 
  Step5.解密变换:A=Be2(mod n);还原明文A。
 
  假设用户A的公钥为PA,私钥为SA,用户B的公钥为PB,私钥为SB,通讯明文M在用户A和B之间传送中的加解密过程如图6所示。
 
  Step1.用户A用PB加密明文M得到密文S1,S1只能被SB解密;
 
  Step2.用户A用SA加密密文S1得到密文S2,即用户A对S1进行数字签名;
 
  Step3.用户A将密文S2发送给用户B;
 
  Step4.用户B用PA解密密文S2,得到密文S1;
 
  Step5.用户B用SB解密密文S1,得到明文M。
 5、 结束语
 
  本文采用Qt技术,设计并实现了基于Linux平台的即时通讯系统。详细描述了服务端与用户端实现的主要技术。经过测试,系统能够稳定运行,用户端界面效果良好。
 
  参考文献
 
  [1] 赵正旭.麒麟操作系统使用与推广[M].北京:科学出版社,2015.
  [2]史黎黎.基于Linux系统的即时通信软件开发[J].无线电工程,2015(8):94-98.
  [3]雷文礼.基于Linux平台的通信软件的设计与实现[J].现代电子技术,2015(17):30-33.
  [4]吴庆波.麒麟操作系统层次式内核设计技术[J].国防科技大学学报,2009,31(2):76-80.
  [5]李伊林.Linux环境下即时通信软件设计与实现[J].软件导报,2014(6):92-94.
  [6]张志佳.基于多线程的Linux下并发服务器的实现研究[J].微计算机应用,2004(4):368-371.
  [7]苑晓芳,刘志广.Linux下基于TCP传输组件的实现[J].无线电通信技术,2014,40(4):46-49.
  [8] Richard.TCP/IP详解卷I:协议[M].西安:机械工业出版社,2000.
  [9]李文锋.基于RSA和Hill密码体系的文件加密系统的研究和实现[D].赣江:江西理工大学.硕士学位论文,2007.

在线客服:

无忧期刊网 版权所有   

【免责声明】:所提供的信息资源如有侵权、违规,请及时告知。

专业发表机构