摘 要
随着信息社会的快速发展,网络作为改变世界的最重要的因素。众多的企业纷纷使用局域网聊天来满足工作与交流高效、快速执行的需求。企业中使用内部局域网可以使内部信息交互的过程得以简化,从而达到提高工作效率的目的。
Java语言进行编写,系统结构采用B/S架构;服务器端和客户端都具有跨平台运行的能力。服务器端和客户端之间使用TCP协议进行通信,服务器端可以使用文本和数据库两种方式保存用户数据,默认使用MySQL数据库存储数据。系统的功能除了提供用户注册、用户登录、用户之间即时消息的收发、消息提醒、用户查找、用户添加等常用即时通信软件的基本功能之外,还根据管理信息的特点提供用户群组功能和用户分组功能。同时,系统采用SSL协议对传递信息进行加解密,提升信息的安全性。
为确保传输信息的安全,加密是最好的一种方法,如何将加密技术运用到实际系统的开发中是非常重要的技能。加密算法众多,多数算法的实现难度较高,OpenSSL是一个集成了多种加密算法的一个开放库,便于开发应用。选题要求基于Socket实现一个即时通信系统,信息在传输过程中利用几种对称加密算法实现文件的加密传输,并对加密效果进行有效的评估。选题既能体现学生理论水平也能体现出学生的应用开发能力,为以后开发安全的应用系统打下一定的基础。
关键字:OpenSSL;即时通信;SSL协议;Websocket
ABSTRACT
With the rapid development of information society,network is the most important factor to change the world. Many enterprises have used LAN chat to meet the needs of efficient and fast execution of work and communication. The use of internal LAN in enterprises can simplify the process of internal information interaction,thus achieving the purpose of improving work efficiency.
Java language is written,the system structure adopts B/S architecture;both server and client have the ability to run across platforms. The server side and the client side use the TCP SSL to communicate,the server side can use the text and the database two ways to save the user data,by default uses the MySQL database to store the data. In addition to providing the basic functions of user registration,user login,sending and receiving instant messages between users,message reminders,user search,user addition and other commonly used instant communication software,the function of user group and user grouping are also provided according to the characteristics of management information. Meanwhile,the system SSL SSL is used to encrypt and decrypt the transmitted information to enhance the security of the information.
In order to ensure the security of transmission information,encryption is the best method,how to apply encryption technology to the development of practical systems is a very important skill. Encryption algorithms are numerous,the implementation of most algorithms is difficult,OpenSSL is an open library integrated with a variety of encryption algorithms,easy to develop and apply. A real-time communication system based on Socket is required. In the process of information transmission,several symmetric encryption algorithms are used to realize the encrypted transmission of files,and the encryption effect is effectively evaluated. The selected topic can reflect both the students' theoretical level and the students' ability of application development. The whole application system lays a certain foundation.
Keywords: OpenSSL;instant messaging;SSL SSL;Websocket
目 录
摘 要 I
ABSTRACT II
第1章 绪论 1
1.1 选题背景及意义 1
1.2 国内外研究现状 1
1.3 研究主要内容 3
第2章 相关技术介绍 4
2.1 TCP/UDP协议 4
2.2 WebSocket协议 4
2.3 服务器模型 5
2.3.1 同步 5
2.3.2 复制进程 6
2.3.3多线程 6
2.3.4 事件驱动 6
2.4 TLS/SSL协议 6
2.5编程语言 7
2.5.1 C++ 7
2.5.2 Nodejs 8
2.6 开源库 8
2.6.1 Boost C++ Libraries 8
2.6.2 Openssl 8
2.6.3 Protobuf 9
2.6.4 Hiredis 9
2.6.5 Socket.io 9
2.7 开发相关工具 9
2.7.1 Redis 9
2.7.2 Sqlite 10
2.7.3 Nginx 10
2.7.4 Visual Studio 2013 10
2.7.5 Visio 2013 11
第3章 即时通信系统设计 12
3.1 即时通信系统功能描述 12
3.2服务器设计 13
3.3数据库设计 14
3.4主要的消息时序图 15
3.4.1 未读消息时序图 15
3.4.2点对点私聊时序图 16
3.4.3群聊消息时序图 18
3.5网络处理设计 19
3.5.1封包 19
3.5.2拆包 20
3.6负载均衡设计 22
3.7网络安全设计 22
第4章 即时通信系统实现 24
4.1主要类和文件说明 24
4.2系统部分截图 29
第5章 即时通信系统测试 34
5.1测试目的和任务 34
5.2测试流程 35
5.3 功能测试用例 35
第6章 结论和展望 40
6.1 结论 40
6.2 进一步工作的方向 40
参考文献 41
致谢 43