(计算机系统结构专业论文)基于企业应用环境的即时通信系统设计与实现.pdf_第1页
(计算机系统结构专业论文)基于企业应用环境的即时通信系统设计与实现.pdf_第2页
(计算机系统结构专业论文)基于企业应用环境的即时通信系统设计与实现.pdf_第3页
(计算机系统结构专业论文)基于企业应用环境的即时通信系统设计与实现.pdf_第4页
(计算机系统结构专业论文)基于企业应用环境的即时通信系统设计与实现.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

(计算机系统结构专业论文)基于企业应用环境的即时通信系统设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i 摘 要 随着网络技术的发展,即时通信技术正在从个人向企业应用演化。尽管互联网 上现有的大部分即时通信软件都实现了文本、语音和视频的实时交流,但普遍存在 两个没有得到很好解决的问题:第一,大多即时通信软件并没有提供加密机制,易 受病毒、木马等恶意代码攻击;第二,已有即时通信软件大多面向通用的使用环境, 企业应用环境下的即时通信技术还不成熟。为此,探索基于企业应用环境的即时通 信技术具有重要的现实意义。 结合特定的应用需求,基于 winsock 网络通信和非对称加密等技术,设计了一 个网上阅卷环境下的即时通信平台 cies(communication in online exam- paper marking system) 。给出了 cies 的系统架构,划分了 cies 的各个功能模块,描述了 cies 各个功能模块具体的工作流程。在 cies 总体设计的基础上,阐述了 cies 网络 通信模块以及客户端和服务端各功能模块的具体实现,并重点说明了为提高服务端 系统性能而采用的基于完成端口的 i/o 模型以及为增强系统安全性而采用的基于非 对称加密的安全通信方式。 实际应用表明,cies 能满足网上阅卷环境中即时通信的基本要求,具有安全、 稳定和易用等优点。它不仅大大方便了网上阅卷环境中用户之间的交流,而且为开 发其它面向企业应用环境的即时通信系统提供了参考。 关键词:企业应用,即时通信,客户/服务器结构,证书,数字签名 ii abstract with the development of network technology, instant messaging technology has evolved its application from individuals to enterprises. although most of the existing im (instant messaging) software has the functions of communicating in text, voice and video, there are still two problems not very well solved. firstly, most of the im software is not provided with encryption mechanism, so that they are vulnerable to viruses, trojan horses and other malicious code attackers; secondly, the existing im software are mostly used universally and enterprise- oriented im software is not yet mature. therefore, it is of much practical significance to study and explore im software applied for business environment. for the specific application requirements, an im platform cies (communication in online exam- paper marking system) under online exam- paper marking environment with the technologies as winsock- based network communication and non- symmetric encryption is designed. the architecture and function modules of cies are designed. on the basis of general design, the implementation of network communication module and various functional modules of client and server in cies are expatiated. the i/o model of server s completion port and the security communication based on non- symmetric encryption are highlighted, which are adopted to improve the performance and security of the system. in practice, it is indicated that cies is a secure, stable and easy- to- use instant communication platform and could meet the basic needs of instant messaging under online exam- paper marking environment. it not only greatly facilitates the communication between users under the online marking environment ,but also provide reference for the development of other instant communications system under the business- oriented application environment. key words:enterprise application, instant messaging, client/server architecture, certification, digital signature. 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在 文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。 学位论文作者签名:李阳 日期: 2007 年 6 月 5 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保 密 ,在_ _年解密后适用本授权书。 不保密 。 (请在以上方框内打“” ) 学位论文作者签名:李阳 指导教师签名:陈晓苏 日期:2007 年 6 月 5 日 日期:2007 年 6 月 5 日 本论文属于 1 1 绪论 1.1 课题研究的背景 随着internet技术的发展,internet的使用也越来越普及。e- mail以其方便、快捷 和灵活等优点很快成为一种广泛使用的通信方式,并逐渐取代了传统的邮件。然而 即使是快速的e- mail回复也不能满足目前人们即时信息交互的要求。作为e- mail系 统,一是无法知道邮件发送者和接收者此刻是否在线,不能确保e- mail能即时地被阅 读和回复;二是在一定时间内频繁与同一个人来回发送e- mail,需要的操作让人感觉 繁琐;三是邮件服务器的负荷也越来越大。im(instant messaging,即时通信)就在 这样的需求和背景下产生了。 网络即时通信是一种在后pc(personal computer)时代兴起的,以internet网络 及其它有线、无线网络为基础的,在交互双方之间实时地传送语音、文字和图像等 信息的通信方式。它的产生有着深刻的社会和技术原因1。人们都有渴望社交、获得 社会尊重和实现自我的需求,这正是网络即时通信软件风行的驱动力。而物质文明 的日益发达所带来的副作用,又使得人们习惯地与周围的人保持距离,以致人们更 愿意对陌生人敞开心扉。与传统的通信方式相比,即时通信具备快捷、廉价和隐蔽 性等特点,在网络上可以跨年龄、身份、行业和地域的限制,达到人与人、人与信 息之间的零距离交流。从这点上讲,即时通信的出现改变了人们的沟通方式和交友 文化,大大拓展了个人生活交流的空间。 1.2 即时通信的过去、现在与将来 1.2.1 即时通信的发展历程 即时通信是基于互联网通信方式的一次重大变革。仅仅经过短短几十年的发展, 即时通信软件已经风靡全球,成为了人们工作、生活中不可或缺的一款应用软件, 到目前它经历了三代的演化。 2 1988年始于芬兰的irc(internet relay chat)是即时通信软件最早的表现形式。 1996年11月,以色列公司mirabilis开发出了第一个成熟的即时通信软件icq2(i seek you演变而来)。这是第一代即时通信。它的出现使通信方式发生了革命性的变化。 在icq取得巨大成功之后,许多公司纷纷效仿,如美国aol(american on- line) 公司的instant messenger,yahoo公司的yahoo messenger和微软的msn messenger (microsoft network messenger)等3- 4。在我国,深圳腾讯公司于1999年2月推出了 腾讯oicq(opening i seek you演变而来),也就是后来的qq(oicq演变而来)。 国内数十家公司也先后开发出自主知识产权的即时通信产品5, 如新浪uc (unlimited communication)、网易泡泡和淘宝旺旺。国内的几大基础运营商也纷纷表现出对即 时通信的浓厚兴趣6:广东电信公司于2004年10月底测试了其im软件“全能聊”; 中国网通于2004年推出了im软件“天天即时通”;中国移动于2006年底推出了“飞 信”的im软件。这些软件在第一代的基础上扩展了对多媒体的支持,新增了视频会 议、电子邮件、用户群、即时新闻发布、手机短信、联机游戏和网络搜索等其它功 能,为用户提供了一个综合的网络应用平台7。这就是第二代即时通信。 而随着企业信息化进程的加快,以及企业宽带接入的普及,企业已经具备了实 现更多网络应用的条件。企业即时通信对于企业而言,无疑就是最有价值的网络应 用之一。即时通信软件投入到企业应用之中,一方面大大减少了e- mail的数量,缓解 了邮件服务器的负荷;另一方面,用即时通信软件实现在线会议,也大大缩减了公 司差旅的费用。面向企业的即时通信软件称为第三代即时通信。目前市场上的第三 代即时通信产品有:腾讯于2003年推出的rtx(real time exchange),阿里巴巴的 alitalk“贸易通”,图灵通软件公司推出的“tim(enterprise instant messenger)企 业即时通信系统”以及慧聪网和腾讯科技合作推出的“买卖通tm(tencent messenger)”等等8,除了腾讯推出的rtx等少数软件用户比较多以外,其它产品 推出时间都很短,用户极少,市场有待开发,但市场的成熟仅是时日的问题9。 从国际潮流来看,即时通信业务早已被企业广泛应用,目前85%的北美企业都开 始使用即时通信业务。国外即时通信服务的提供商早已投入企业市场的争夺中, ibm (international business machines)、微软、雅虎和aol等公司各家产品各有优势, 3 其中ibm的sametime10占据了市场领先地位,但都没有大举进入中国,对国内服务 的提供商来讲,无疑是有利的发展时机,但国内服务的提供商还需要提升其即时通 信软件的技术含量,以满足企业用户安全性、可靠性和可管理性等多层面的要求。 1.2.2 即时通信的发展现状 即时通信软件以其独特的通信方式,已经成为目前网络上使用率最高的软件之 一。行业研究机构radicati公司在报告中称,继电话和电子邮件之后,即时通信业务 正在全球迅速普及,而且将迅速成为个人间实时通信的有机组成部分。据radicati预 测,即时通信用户数将由2006年的4.32亿增长到2010年的6.5亿。2007年全球的即时 通信业务帐户将增长到14.39亿, 而每天发送的即时消息数量将增长到13809亿。 其中, 企业用户因为具有完善的网络和丰富的终端设备,为发展即时通信业务提供了良好 的环境。即时通信在企业领域增长显著,到2007年帐户数量将增长到3.49亿11。 目前,aol、msn messenger和yahoo三大巨头分别以52%、36%和12%的市 场份额垄断了整个美国即时通信市场12。而在我国,据互联网调查12次报告显示, 在人们经常使用的网络业务中,即时通信业务已经成为继电子邮件(91.8%)、搜索 引擎(70.0%)的第三大(45.4%)主要业务13。预计随着我国上网人口的增长以及 即时通信软件的不断普及,即时通信在线人数将继续保持快速增长。从表1.1所示的 各类即时通信软件所占有的市场份额可以大致了解目前我国即时通信的发展现状 14。 表1.1 各类即时通信软件所占有的市场份额(2006年非官方统计) 常用即时 通信软件 oicq(即qq) 新浪uc msn messenger 网易泡 泡 tom- skype 淘宝旺旺 平均活跃 帐户数 2.4亿 2701万 国内1321 万 419万 425万 367万 1.2.3 即时通信的发展趋势 (1)服务发展趋势 提供的服务更加强调专业化与个性化。各个企业都有其特殊的应用环境,其配 4 备的即时通信系统必须满足特殊的需求,使用户感觉系统完全是为自己定制的。目 前,腾讯的rtx就是面向企业应用的产品,可以在企业内部搭建即时通信的服务器, 将即时通信的用户局限在本企业内,用于企业的办公。但rtx并没有解决个性化的 问题,没有针对不同企业的需求对软件的功能进行调整。为了提高企业内部协作时 交流的效率,提供基于企业应用环境的即时通信系统将是未来一段时间的发展趋势。 与社会文化和本地化应用深度融合。随着即时通信软件的个人属性的加强和应 用范围的延伸,与本地化应用的融合将成为其主要的发展趋势。这种融合的趋势将 首先体现在即时通信服务的提供商对本地用户资源的管理、分析,对本地文化的理 解,以及基于本地用户需求,对软件应用的不断优化;其次,还体现在即时通信与 本地互联网、电信网等资源的整合,协同为用户提供更高的价值上。 即时通信软件之间的互联互通成大势所趋。据调查显示,网民对即时通信软件 最不满意的因素在于即时通信软件之间不能互联互通。2006年7月,yahoo messenger 与msn实现了互联互通,国内40余家即时通信服务的提供商也开始予以响应15。 (2)技术发展趋势 现在即时通信服务的提供商都在想方设法将语音和视频业务拓展到传统的固定 电话和移动电话中。从语音业务,到p2p16- 17的数据传输、电话会议、视频会议等都 对电信运营商的传统业务构成了威胁。以skype为代表的voip18(voice over internet protocol) 软件最大的成功之处就在于它开创了将p2p技术引入到话音通信的先河19。 它采用网络中的所有节点都动态参与到路由、信息处理和带宽增强等工作中的机制, 大大降低了管理成本,同时又保证了语音质量20。 (3)终端发展趋势 未来即时通信业务承载的设备趋于多样化,用户通过pc、手机、pda(personal digital assistant)以及其它设备都可以使用即时通信业务。手机定制将成为即时通信 服务的提供商推广产品的重要手段之一。目前,已经有大量的手机内置了即时通信 软件,例如采用windows mobile系列操作系统的智能手机预置了msn。 (4)盈利模式发展趋势 以即时通信平台为基础带动其它衍生业务的发展,像qq虚拟货币、qq秀和移 5 动梦网的qq短信等业务,都给腾讯带来了可观的收入。而msn和yahoo messenger 的盈利模式是给企业带来用户流量,而后吸引用户消费即时通信平台上的其它衍生 业务。未来即时通信软件虽仍会以吸引用户消费其衍生业务为目的,但是,即时通 信将来会从免费向收费方向发展。企业用户市场将大大发展,其收费前景可观;对 于个人用户,收费的内容主要以增值业务为主。 1.2.4 现有即时通信软件存在的问题 即时通信发展迅猛也意味着机遇与挑战并存。目前的各类即时通信软件都存在 着不少的缺陷,主要突出表现在: (1)安全性:易受病毒、木马等恶意代码攻击。 目前许多流行的即时通信软件本身都存在设计缺陷,为黑客攻击和病毒入侵提 供了方便;很多即时通信软件本身并没有提供加密机制;另外还有脚本缺陷及身份 窃取等问题,没有安全的保障21。 (2)互通性:各个即时通信软件无法实现互通。 相关调查显示,71.43%的用户认为,不同的即时通信软件之间无法兼容是目前 最大的问题。各即时通信服务的提供商,出于市场的考虑,大都使用私有的协议, 其结果使得各个即时通信服务的提供商提供的即时通信软件之间不能互通。如icq、 msn和qq均无法互通,这严重制约了即时通信的发展。 (3)跨平台问题:目前基本上没有一个即时通信服务的提供商提供了跨平台的 即时通信服务。 目前,linux的应用已经越来越广泛。3g22- 23(3rd generation)时代的到来,也 对即时通信业务提出了更高的要求,大量基于3g的手持智能设备已经满足了即时通 信系统对硬件和网络的要求。而现在的应用主要集中在windows平台上,这限制了用 户的选择,也制约了即时通信的发展。 (4)专业性:已有即时通信软件大多面向通用的使用环境,企业应用环境下的 即时通信技术还不成熟。 目前即时通信业务已渗透到企业领域,各个企业都需要开发适合自己的即时通 6 信系统来提高企业内部交流的效率。然而各个企业的需求不同,即时通信所需提供 的服务和具有的限制也应该有所区别,因而面向通用环境的即时通信软件很难满足 特定企业内部交流的需要。 1.3 课题研究的意义、内容及目标 1.3.1 意义 目前即时通信业务的重心已从个人应用发展到企业应用。qq、msn等软件虽然 方便、实用,但是,娱乐功能太多,用户的注意力很容易被分散,不能很好地作为 面向企业应用的即时通信工具。而且它们都是面向通用环境,不能满足企业应用环 境的需求。面向企业应用环境的即时通信软件实在太少,而且技术也不很成熟。为 此,探索面向企业应用环境的即时通信技术具有重要的现实意义。 1.3.2 内容和目标 本文将探索面向企业应用环境的即时通信的关键技术,并以网上阅卷环境为例, 给出一个用于网上阅卷环境的专用即时通信系统 cies(communication in online exam- paper marking system)的实现。主要内容包括: (1)满足网上阅卷系统特定应用环境的即时通信系统的设计。 (2)文字传输和通信功能的实现。 (3)整套的安全解决方案的实现。 cies 将达到的主要目标包括: (1)消息能够以在线和离线的方式发送和接收。 (2)能够面向大批量用户进行群发。 (3)消息的发送是安全可靠的。 (4)消息能够安全完整的进行存储,并可供事后审计使用。 (5)用户界面友好。 (6)系统易扩展。 7 2 构建 cies 的相关技术基础 本章将分析构建 cies 的相关技术,包括openssl、winsock 网络编程的原理和 相关技术以及 winsock i/o(input/output)模型。 2.1 openssl 简介 2.1.1 openssl概述 ssl24(secure socket layer,安全套接字层)由netscape公司设计,其主要目的 是提供安全可靠的网络传输,防止通信内容被偷听、篡改或伪造25。ssl在网络模型 中的位置处于应用层与传输层之间,能提供保密性、数据一致性和身份鉴别。随着 ssl的不断发展和完善,目前利用公共密钥技术的ssl协议已经成为internet上保密通 信的工业标准26。 ssl本身只是一个协议, 要使用这个协议, 还需要支持此协议的软件包。 openssl 提供了一个通用的高强度加密库,并在此基础上实现了ssl2. 0、ssl3. 0、 tls1.0(transport layer security version 1.0)27。openssl的密码库可以提供常用的对 称密码算法,如des(data encryption standard)28、des3、rc5(rivest cipher version 5)29、idea(international data encryption algorithm)、blowfish30等;非对称密码算 法如rsa(rivest shamir adlemen)31- 32、dsa(digital signature algorithm)33- 34;信息 摘要算法如md5(message- digest algorithm version 5)35、sha- 1(secure hash algorithm 1)36、ripemd(成熟的md算法)37、mdc2(message digest commands version 2)等。 openssl软件包主要是用标准c编写的,因而具有优秀的跨平台特性。它可在各 种unix系统(包括linux系统)和各种win32系统上安装使用,因而具有广泛的适用性。 8 2.1.2 openssl的安全服务 作为一个基于密码学的安全开发包,openssl提供的安全服务主要有以下几个 方面的特点: (1)机密性 机密性是对截获攻击的防范措施, 通常通过对通信数据进行加密与解密来实现。 如果数据量大,一般采用对称加密算法。openssl使用evp封装了所有的对称加密算 法,使得各种对称加密算法能够使用统一的api(application programming interface) 接口evp_encrypt和evp_decrypt进行数据的加密和解密。 (2)完整性 实现完整性是对篡改攻击的防范措施,通常采用对消息摘要码的计算与对比来 确认数据是否被篡改。 openssl实现了5种消息摘要算法, 分别是md2(message- digest algorithm version 2)、md5、mdc2、sha(sha- 1)和ripemd。openssl采用 evp_digest接口作为消息摘要算法统一的evp接口,对所有消息摘要算法进行了封 装。 (3)不可抵赖性 不可抵赖性主要针对发送方对接收方接收到的信息的不可抵赖,通常采用的方 法是对传输数据进行数字签名。 openssl也使用evp技术对不同功能的非对称加密算 法进行封装,提供了统一的api接口。如果使用非对称加密算法进行密钥交换或者密 钥加密,则使用evp_seal和 evp_open进行加密和解密;如果使用非对称加密算法 进行数字签名,则使用evp_sign和evp_verify进行签名和验证签名。 2.2 winsock 网络编程原理 2.2.1 套接字介绍 socket原是bsd(berkeley software distribution)unix4.3为了支持互联网通信而 设计的api。 socket采用c/s模式的通信机制, 使网络客户和服务器之间实现了基于网 络的连接建立和数据交互38。 9 windows socket是在unix socket的基础上发展起来的。windows socket描述了一 个microsoft windows的网络编程接口,不仅为windows tcp/ip(transfer control protocol/internet protocol)提供了bsd unix socket的完全兼容,还包含了扩充功能的 支持,通过一组附加的api实现windows式的编程风格,以使应用程序能够充分利用 windows消息驱动机制。 windows socket工作原理如图2.1所示。 应用程序1应用程序2 网络编程界面,例如windows socket 网络通信协议服务界面 ,例如 tcp/ip 操作系统 物理通信介质 图2.1 windows socket工作原理 应用程序调用windows socket的api实现相互之间的通信,windows socket又利 用下层的网络通信协议和操作系统调用实现实际的通信工作39。 socket是一种网络编程接口,提供了一种发送和接收数据的机制。用户目前可以 使用两种类型的套接字:数据报套接字(datagram socket)和流式套接字(stream socket)。这两种套接字传输的数据类型是不同的,因而其使用方法和相应的程序设 计模型也是不同的40。 (1)数据报套接字 数据报套接字(datagram socket)提供了一种不可靠的、无连接的数据报通信 方式。对于在tcp/ip上实现的winsock,数据报套接字使用udp(user diagram protocol)协议。在这种方式下,数据通过相互独立的报文进行传输,是无序的,并 且不保证报文的可靠、无差错。实际使用中,同一个分组数据报可能不止一次地被 发送,一般要等到接收方返回确认消息才会停止发送。 10 数据报套接字一般用于轻负载的局域网上的计算机之间的通信。数据报套接字 应用程序的流程如图2.2所示。 socket() bind() recvfrom() sendto() closesocket() socket() bind() sendto() recvfrom() closesocket() 客户端 服务请求 服务应答 服务端 图2.2 数据报套接字应用程序的流程 (2)流式套接字 流式套接字(stream socket)提供的是一种可靠的、面向连接的数据传输方式, 可以将数据顺序无重复地发送到目的地。流式套接字应用程序的流程如图2.3所示。 socket() bind() accept() socket() recv() send() closesocket() recv() send() closesocket() connect() 服务端 客户端 建立连接请求 请求数据 应答数据 listen() 服务端应答 图2.3 流式套接字应用程序的流程 不管是对单个的数据报,还是对数据包,流式套接字都提供了一种流式数据传 输,是tcp(transfer control protocol)传输协议的接口。当有大批量数据欲发送或 11 希望发送的数据按顺序无重复地到达目的地时,使用流式套接字最方便。此外,在 数据传输时,如果连接断开,应用程序会被通知。 2.2.2 服务器端操作 (1)在初始化阶段调用 wsastartup 函数 此函数在应用程序中初始化windows socket dll(dynamic link library),只 有此函数调用成功后,应用程序才可以再调用windows socket dll中的其它api函 数。 (2)建立 socket 初始化windows socket dll后,调用socket函数在服务器端建立一个监听的 socket。此函数调用成功返回socket对象,失败则返回invalid_socket。 (3)绑定端口 接下来为方便客户端连接服务器,调用bind函数为服务器端定义的socket指定一 个地址及端口。该函数调用成功返回0,否则返回socket_error41。 (4)监听 当服务器端的socket对象绑定完成之后, 服务器端通过建立一个监听的队列来接 收客户端的连接请求。listen函数使服务器端的socket进入监听状态,并设定可以建 立的最大连接数。该函数调用成功返回0,否则返回socket_error42。 为了使服务器端的socket能准确地监听客户端提出的连接要求来建立连接, 可以 通过wsaasyncselect函数让服务器端主动响应客户端的连接请求。该函数调用成功 返回0,否则返回socket_error。 int wsaasyncselect(socket s, hwnd hwnd, unsigned int wmsg, long event); 其中,参数s是socket对象,hwnd是接收消息的窗口句柄,wmsg是传给窗口的 消息,levent是被注册的网络事件,也即是应用程序向窗口发送消息的事件。 (5)服务器端接受客户端的连接请求 当客户端提出连接请求时,服务器端hwnd窗口会收到winsock stack送来用户自 定义的一个消息。分析消息结构后,调用accept函数来处理此事件。该函数通过创建 12 一个socket对象与客户端的socket进行通信,原先的监听socket继续等待其它连接请 求。该函数调用成功返回一个新产生的socket对象,否则返回invalid_socket。 (6)结束 socket 连接 结束服务器端和客户端的通信连接可以由服务器或客户机的任一端调用 closesocket函数即可。而要关闭服务器端监听状态的socket,同样也是调用此函数。 另外,与程序启动时调用wsastartup函数相对应,程序结束前,调用wsacleanup 函数来通知winsock stack释放socket所占用的资源。这两个函数都是调用成功返回 0,否则返回socket_error。 2.2.3 客户端操作 (1)建立客户端的 socket 客户端应用程序首先也是调用wsastartup函数来与winsock dll建立关系,然 后同样调用socket函数来建立一个tcp或udp socket(相同协议的socket才能相互通 信,即tcp对tcp、udp对udp)。与服务器端的socket不同的是,客户端的socket 可以调用bind函数,由自己来指定ip地址及port号,但是也可以不调用bind,而由 winsock来自动设定ip地址及port号。 (2)提出连接申请 客户端的socket使用connect函数来提出与服务器端的socket建立连接的申请,函 数调用成功返回0,否则返回socket_error43。 2.3 winsock i/o 模型 winsock 分别提供了多种套接字模式和套接字 i/o 模型, 可对一个或多个套接字 上的 i/o 行为加以控制。其中,套接字模式用于决定 winsock 函数随套接字调用的 行为, 套接字i/o模型描述了一个应用程序如何对套接字上的i/o进行管理及操作44。 winsock 提供了两种套接字模式:阻塞模式和非阻塞模式。在阻塞模式下,i/o 操作完成前,执行操作的 winsock 调用,例如函数 send 和 recv会一直等候下去,不 会立即将控制权交还给程序。而在非阻塞模式下,winsock 函数无论如何都会立即 13 返回。阻塞和非阻塞套接字模式都存在各自的优缺点。概念上讲,阻塞套接字易于 使用,但在应付建立连接的多个套接字时,存在数据的收发量不均、时间不定等缺 点,显得极难管理;非阻塞套接字则需要编写更多的代码。而使用套接字 i/o 模型, 将帮助应用程序通过一种异步方式,同时对一个或多个套接字上进行的通信加以管 理。 套接字 i/o 模型共有 6 种类型,包括:阻塞模型、选择模型、异步选择模型、事 件选择模型、重叠模型和完成端口模型。若打算开发服务器应用程序,预计到服务 器在任何给定的时间都会为大量的 i/o 请求提供服务,应考虑使用完成端口模型45; 若开发的是一个客户端应用程序,令其同时管理一个或多个套接字,则采用重叠或 事件选择模型,以便在一定程度上提升性能。 2.4 小结 本章分析了 openssl,讨论了 winsock 提供的套接字模式和套接字 i/o 模型, 重点阐述了构建 cies 的关键技术winsock 网络编程技术。 14 3 cies 总体设计 本章将在前一章讨论的基础上,结合网上阅卷环境中的应用需求,阐述 cies 的 总体架构、通信协议的选择、系统安全设计、功能模块的划分以及相关的数据库表 结构。 3.1 需求分析 即时通信涉及的主要内容有:用户登录、身份检验、消息的发送和接收、广播、 聊天记录的查看和在线信息的更新等等。由于网上阅卷环境的特殊性,存在几个与 通用环境对即时通信的不同需求: (1)阅卷环境中,目标用户是确定的,为全体阅卷教师和阅卷主管人员,无需 用户注册和模块维护。 (2)在通用环境中,所有的用户都是平等的,而且可以互相通信,在阅卷环境 中,用户是分级的,平级用户不能互相通信,用户只能和直属上级和直辖下级通信, 不能跨级通信。 (3)在通用环境中,信息的加密显得不是特别重要,而在阅卷环境中,考虑到 试卷的安全性,信息的加密传输和存储就显得非常重要。 (4)阅卷环境中,考虑到阅卷工作的严肃性、规范性和公正性,需要确保用户 发出的每一条信息都能够进行事后审计,这就需要保存信息并鉴别其真实性。 因此 cies 的功能在设计和实现时与面向通用环境的即时通信系统应有所区别, 以保证广域网的网上阅卷工作能够更好地进行。 3.1.1 用户的登录和注销 cies 是网上阅卷系统内嵌的即时通信平台,用户均来自于网上阅卷系统,无须 单独添加,直接使用网上阅卷系统用户数据库中的已有用户即可。为了不增加网上 15 阅卷系统的负担,cies 与网上阅卷系统采取松耦合的方式,即 cies 独立运行。用 户在登录阅卷客户端后,仍然需要登录 cies,以实现身份检验和授权功能。 用户登录 cies 时,输入必要的登录信息,然后客户端需要将此信息加密送往服 务端进行校验,校验结果由服务端返回给客户端。同时服务端需要对通过检验的用 户修改状态,分配必要的资源以确保其后续操作能够顺利进行。 用户注销 cies 时,发送注销请求给服务端,由服务端更改用户状态并进行其它 后续处理。 3.1.2 在线消息的发送和接收 在线消息的发送与接收是 cies 应该具备的基本功能之一。当用户输入消息,选 择了消息的接收用户后,客户端将消息进行加密和封装,发送给服务端进行中转。 接收此消息的用户自动接收服务端转发的消息,并显示在用户的终端屏幕上, 供用户查看和处理。 3.1.3 离线信息的发送和接收 离线消息的发送与接收也是 cies 应该具备的基本功能之一。 如果服务端转发消 息时,发现接收用户不在线,则应将其视为离线消息进行处理。 3.1.4 广播通知 文本消息的广播也是 cies 应该具备的基本功能之一。 当上级用户对下级用户发 号施令时,需要使用广播功能。 3.1.5 保存并管理聊天信息 保存并管理聊天信息是 cies 管理控制的一个必要功能。 用户可以查看自己与任 一联系人的历史聊天记录,包括单播和广播的记录。 3.1.6 用户信息管理 由于 cies 的用户信息均来源于网上阅卷系统,故 cies 中不涉及用户信息修改 16 的功能,但可对用户信息进行查看。 每个用户都包含一个联系人列表。该列表是根据权限预先指定的,不可由用户 任意更改。 当用户更改了自己的状态后,应对联系人列表中包含该用户的用户(称为该用 户的“观察者” )进行提醒并及时地更新,以保证信息的时效性。 3.1.7 日志管理 为了更好的对系统的运作情况进行监控,有必要维护一个系统运行的日志。日 志主要是对系统运行时所做的操作的记录。服务端启动、用户登录、用户注销和用 户发送消息等操作均需要记入日志中,以便监控和查看。 3.1.8 权限控制 权限控制是 cies 进行通信控制的一个重要方式。根据权限控制消息的传送,而 权限又与职务相对应。只有相邻权限的用户才能通信,上级对相邻下级具有单播与 广播权限,下级用户对上级只有单播权限。 为了防止用户的越权操作,服务端转发聊天消息报文时,需要对用户的权限进 行提取并比较,只有满足权限规则的报文才能被转发,否则丢弃。 3.2 系统架构 系统设计的第一要务是决定系统所采用的体系结构。目前应用软件主流的体系 结构为 c/s 结构和 b/s 结构,这两种结构的区别为: (1)硬件环境不同:c/s 一般建立在专用的网络上,b/s 建立在广域网之上。 (2)安全要求不同:c/s 对信息安全的控制能力很强,而 b/s 相对较弱。 (3)处理问题不同:c/s 面向的用户群固定,适合地域集中,数据量大,交互 性强,实时性和安全要求高的需求,而且要求通信双方必须都是相同的系统。而 b/s 面向不同的用户群,适合地域分散,数据量小,交互性不强,对执行速度要求不高, 对安全要求也不高的需求。 17 根据 cies 的需求分析,cies 面向相对固定的用户群,所有用户均使用的是 windows操作系统,而且对实时性和安全性都有极高的要求,所以 cies 系统的体系 结构选用 c/s 结构。系统总体架构如图 3.1 所示。 客户端 客户端 服务端 internet 图 3.1 系统总体架构 3.3 通信协议的选择 在 cies 中,客户端运行时需要登录服务端,与服务端之间成功建立连接后才能 进行各种操作,也就是说客户端与服务端之间的通信结构是面向连接的。基于客户 端和服务端之间通信数据的重要性和基于系统的可维护性的考虑,客户端与服务端 之间的通信选用了主流的 tcp/ip 协议。 3.4 安全性设计 cies 考虑到可能存在的安全问题,在设计时除了采用身份检验这种安全机制之 外,还采用了非对称加密技术,具体如下: (1)服务端和客户端本地机器上事先存放着来自 ca(certification authority) 18 中心颁发的包含自己公、私钥的证书和 ca 的根证书。 (2)服务端和客户端之间交换的任何报文(包括聊天消息报文和控制报文)都 需要经过加密,才能进入网络中传输。在服务端与客户端首次建立连接之后,客户 端向服务端发送包含登录用户公钥的证书。服务端接收到该证书后,利用存储在本 地的 ca 根证书验证该证书的有效性(即证书是否由共同的第三方ca 颁发) ,若有 效,服务端将包含自己公钥的证书发往客户端。客户端也利用存储在本地的 ca 根 证书验证服务端证书的有效性。若有效,此后,服务端与客户端之间发送的任何报 文将利用对方的公钥进行加密。 3.5 功能模块的划分 cies 的功能模块的划分如图 3.2 所示。 cies 客户端服务端 登 录 注 销 模 块 会 话 模 块 信 息 查 看 模 块 登 录 注 销 模 块 会 话 模 块 用 户 信 息 管 理 模 块 系 统 管 理 模 块 在 线 信 息 管 理 模 块 图 3.2 cies 的功能模块的划分 3.6 客户端功能模块设计 通过对 cies 需求的分析,可将其客户端分为登录注销、会话及信息查看三个功 能模块。 19 3.6.1 登录注销模块 登录模块是进行用户身份检验的功能模块。如果没有用户的身份检验,用户的 权限就得不到很好地控制。客户端的登录模块需要有登录界面,供用户输入登录的 用户名和密码以及其它必要的登录信息;需要有网络设置的功能,供用户第一次使 用 cies 的客户端时输入服务端的 ip 地址和端口,以便建立与服务端的连接,在此 后的使用过程中,如果服务端的 ip 地址或者端口号发生了变化,用户需要在登录前 更改此设置;还需要有身份检验的功能,将用户输入的登录信息发送给服务端进行 检验,并根据服务端返回的检验结果进行后续工作;另外还需要有交换证书的功能, 利用本地存放的 ca 根证书对服务端发送的公钥证书进行验证,如果服务端发送的 公钥证书有效,则以后与服务端通信的报文均要用该证书加密以保证消息的安全性。 注销操作可分为用户主动注销和系统强制注销两种情况。当用户自动注销时, 由客户端主动向服务端发送注销请求,操作成功则关闭客户端退出 cies;当系统强 制注销时,客户端接收由服务端发送的强制注销的命令,然后向服务端发送注销登 录的请求,服务端和客户端之后的互操作与第一种情况完全相同。 3.6.2 会话模块 会话模块功能是进行即时通信的核心模块, 在登录模块接收到检验成功的结果后 被启动,其中包括消息的发送和接收两个功能。 (1)消息的发送 客户端将消息加密签名、封装后,发送给服务端。客户端可以给服务端发送聊天 消息或者控制消息,可以同时给在线或离线的其他用户发送聊天消息,可以以单播 或广播的形式发送聊天消息,发送聊天消息成功时将发送的消息写入本地的文件中 以便查看。 (2)消息的接收 一旦服务端有消息发送过来,客户端就进行接收,接收成功则进行后续处理。如 果为聊天消息,则将该消息解密显示在终端上并记入本地的文件中。 20 3.6.3 信息查看模块 信息查看模块是 cies 的附加功能模块,主要是指聊天记录的查看。 为了减轻服务端的负荷,将聊天记录保存在本地的文件中。用户需要查询聊天 记录时,在本地文件中查找相关信息即可。 用户可查看与任何一个联系人的所有聊天记录。 3.7 服务端功能模块设计 通过对 cies 需求的分析,可将其服务端分为登录注销、会话、用户信息管理、 在线信息管理和系统管理五个功能模块。 3.7.1 登录注销模块 服务端的登录注销模块对应于客户端的登录注销模块,主要工作流程是接收客 户端发送的包含其公钥的证书,利用本地存放的 ca 根证书验证其有效性。若有效, 服务端将包含自己公钥的证书发往客户端。接着客户端将经过服务端公钥加密的登 录信息(用户名和密码)发送过来,服务端解密后,查找数据库表,检验该用户的 合法性。如果合法,则将检验结果和相关信息送回给客户端,并为该用户分配必要 的资源及修改该用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论