(通信与信息系统专业论文)视频监控系统中监控中心软件的设计与实现.pdf_第1页
(通信与信息系统专业论文)视频监控系统中监控中心软件的设计与实现.pdf_第2页
(通信与信息系统专业论文)视频监控系统中监控中心软件的设计与实现.pdf_第3页
(通信与信息系统专业论文)视频监控系统中监控中心软件的设计与实现.pdf_第4页
(通信与信息系统专业论文)视频监控系统中监控中心软件的设计与实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(通信与信息系统专业论文)视频监控系统中监控中心软件的设计与实现.pdf.pdf 免费下载

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

文档简介

i 摘 要 摘 要 近年来,基于嵌入式的网络数字视频监控技术与互联网有机结合,且融合了信 息技术、计算机技术、网络技术以及流媒体技术,己成为监控领域的一个发展趋势。 因此嵌入式网络数字视频监控软件的研究将有着广阔的应用前景和巨大的社会效益 及经济效益。 本文以一个实际的嵌入式网络视频监控系统的模拟开发为背景,简要介绍了系 统的总体结构设计和各组成部分,对监控系统服务器端软件涉及的关键技术进行了 重点研究,详细论述了监控中心设计和实现的具体过程。 本监控系统主要由监控中心、客户端和视频服务器组成,其中,监控中心是系 统的核心部分。本文首先概要说明了系统的各个组成部分,重点阐明了监控中心的 基本设计思想:基于代理和面向对象,并详细分析了监控中心的子系统划分。 接着,文中介绍了监控中心实现过程中用到了一些关键技术:基于 tcp/ip 协议 的客户端和服务器端的通信原理,网络通信编程,即 socket 编程技术,多线程技术 以及用于上层应用程序访问数据库的 ado 技术。其中,详细描述了 socket 编程的流 程以及 ado 访问数据库的编程步骤。 基于代理和面向对象的设计思想,本文接下来重点分析了子系统的相互依赖关 系,依次介绍了各子系统的结构和实现。重点分析了系统的数据结构,详细描述了 数据库的设计和实现。 本文涉及的工作是对监控中心的实现进行研究和实践,它提出的设计思想和实 现方式有一定代表性,对相关领域的设计是具有一定借鉴意义的。 关键词:关键词:视频监控,客户端/服务器,数据库,ado 技术,单件模式 ii abstract in recent years, with the integration of the computer, network and multimedia technology, the embedded digital video monitoring technique has become a development trend of surveillance field. so, the research on the design of the software in the embedded digital video monitoring system has great social and economic significance. in this thesis, based on a practical embedded digital video monitoring project, we briefly introduce the whole framework and each part of the system, focus on some key technologies used in the server software, and detailedly describe the design and implementation of the server system. this monitoring system is mainly made up of monitoring-center, the client and the video server. this thesis firstly briefly introduces each part of the whole system, puts emphasis on the basic design ideas including using agency and object-oriented, and particularly analyze the subsystem partition of monitoring-center. then, the thesis detailedly describes some key technologies used during the realization of monitoring-center. these key technologies include communication theory of the server and the client based on tcp/ip protocols, sockets programming, multithreading and ado. it mainly discusses sockets programming flow and how a top application can access to the database through ado. based on agent and object-oriented design, the next focus of this paper analyzes the interdependence between subsystems, followed on the subsystem architecture and implementation. it focuses on the systems data structure and detailed describes the database design and implementation. key words: video monitoring, client/server, database, ado, singleton iii 英文缩写索引 英文缩写索引 b/s browse/server 浏览器/服务器 c/s client/server 客户端/服务器 tcp transmission control protocol 传输控制协议 ip internet protocol 网间协议 udp user datagram protocol 用户数据报协议 ftp file transfer protocol 文件传输协议 nic network interface card 网络接口卡 ado activex data objects 活动数据对象 odbc open database connectivity 开放式数据库连接 独创性声明独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在 文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密,在 年解密后适用本授权书。 不保密。 (请在以上方框内打“” ) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 本论文属于: 1 1 绪论绪论 本章首先介绍视频监控系统的发展历程,简述其现状并展望其发展方向,最后 将给出全文主要的研究工作和结构安排。 1.1 引言引言 视频监控系统是一门集计算机技术、通信技术和数字视频技术于一体的综合系 统。它以其直观、方便、信息内容丰富等特性而被广泛应用于工业生产、交通、电 力、银行、智能办公大楼等场所1。它正从传统的安防监控向管理、生产监控发展, 并逐步与管理信息系统相结合,达到资源共享,为管理者提供更直观、更有效的决 策信息,网络视频监控不仅符合社会信息化的发展趋势,而且代表了监控行业的发 展方向。 网络视频监控系统的一般过程是2:在一些重要的场所安放一个或若干个摄像 机, 摄像机采集监控现场视频数据, 并经过压缩编码处理后, 通过一定的传输网络(线 缆、无线、光纤或以太网),传到指定的监控中心。监控中心可以远程监控现场图像, 并可通过存储介质保存现场视频数据供日后查询取证。同时,还可以根据不同需要 在监控现场安装其它的探测装置作为监控系统的辅助设备。 1.2 视频监控系统的发展历程视频监控系统的发展历程 视频监控的发展经历了三个不同阶段1,即第一代模拟图像监控,第二代基于 pc 机的多媒体监控,第三代基于嵌入式网络视频服务器技术的网络视频监控。 20 世纪 90 年代初及其以前,主要是以模拟设备为主的闭路系统,称为第一代视 频监控系统,即模拟图像监控系统。典型的模拟监控系统一般由图像摄影部分(模拟 摄像机、镜头,云台、麦克风等)、图像传输部分(电缆、光缆、射频)、视频控制部 分(操作键盘、视频分配器、视频矩阵切换器、云台控制器、字符叠加器等)和显示记 录部分(视频矩阵,监控器,录像机等组成)组成2。最简单的监控系统是由一架摄像 机和一台监视器组成,中间用传输线连接。 第一代系统的主要优点是实现方法简单。但是,其缺点非常明显3:它采用同轴 电缆传输,传输距离近,布线复杂,设备、材料费用高,施工困难;另外,由于视 2 频图像是模拟的,图像数据量大,录像时间短,而长时间录像时录像机存储丢失的 信息多、由于模拟信号很容易受到干扰,导致图像质量差;其顺序存储的方式又使 得查询速度慢;扩展能力差,如果要新增监控点,往往是牵一发而动全身,新的设 备很难添加到原有的系统中。 20 世纪 90 年代中期, 计算机处理能力的提高和视频技术的发展尤其是视频压缩 编解码技术的出现和发展,使数字视频的存储和传输成为可能。人们利用计算机的 高速数据处理能力进行视频的采集、显示、压缩等处理,利用显示器的高分辨率实 现图像的多画面显示,采用大容量的计算机硬盘存储视频数据,从而大大提高了图 像质量,增强了视频监控的功能。这类系统即第二代基于 pc 机的多媒体监控系统。 第二代系统的优点是录像时间长,图像传输距离远、质量好,查询速度快随着 计算机软硬件性价比不断提升,利用硬盘录像系统来采集、储存和传输视频占据了 监控系统的主要市场并逐步取代模拟监控系统网。但是,由于需要利用专用压缩/解 压卡对视频信号进行压缩和解压处理4,所以使监控系统体积较大,功耗较高;监控 现场需要专人职守,维护烦琐;实时性不高和稳定性差;成本较高;可扩展性差, 采用专用的压缩卡和解压缩卡对视频数据进行压缩和解压缩,只能支持一种编码格 式,无法提供对其他编码方式的支持。 随着芯片、网络技术的进步,现在出现了一种新型的网络视频监控系统,即第 三代基于嵌入式网络视频服务器技术的网络视频监控系统。 基于嵌入式网络视频服务器技术的网络监控系统主要的原理是:采用嵌入式实 时多任务操作系统,高效压缩芯片和功能强大的 cpu,将视频压缩与传输处理工作 全部内置到芯片上。摄像机传送来的视频信号数字化后由高效压缩芯片压缩,通过 内部处理后转移到网络或服务器上。网络上用户可以通过专用软件或者直接用浏览 器观看 web 服务器上的摄像机图像,授权用户可以控制摄像机云台镜头的动作和对 系统配置进行操作。 采用嵌入式操作系统,大大提高了系统的稳定性和实时性。由于这种系统的硬 件是一个同处理器和操作系统捆绑较为紧密、功能专一、设计专门的独立的设备, 不像插卡系统那样受通用计算机系统中其它软硬件的影响,因此性能上更稳定,且 便于安装、维护,易于实现系统的模块化设计,便于管理维护。硬盘录像和回放基 本上可以达到实时的效果且录像清晰度较高。把视频压缩和网络传输功能集成到一 个体积很小的设备内,可以直接连入以太网,达到即插即用,省掉各种复杂的电缆, 3 安装方便,无需专人职守。在监控终端,远程监控人员只需要拥有一台安装了监控 软件的 pc 机,无需安装特殊的硬件设备,就可以在世界任何一个可以接入 internet 的地方,对监控现场进行实时远程监控。大大降低了系统成本,极大地方便了整个 监控系统的操作和维护。这种架构发展较晚,但由于其显著的优点即将在市场上取 得大规模的应用。 基于嵌入式技术的网络视频监控系统系统的特点是:在视频图像的信源端对图 像进行压缩,然后通过一定的通信协议和通信介质把压缩过的图像数据传输到远端 计算机上,用计算机再对图像进行解压和显示,这样就能有效地减少视频传输的数 据量。 第三代系统结合数据库技术对图像进行存储, 便于图像的查询和回放5。 所以这 种系统有设备、材料费用低,施工容易,录像时间长,图像质量好,查询速度快等 优点。不过,这种系统的技术实现是比较复杂的。 1.3 视频监控系统的现状和发展方向视频监控系统的现状和发展方向 在国内外市场上,主要推出数字控制的模拟视频监控和数字视频监控两类产品。 前者经过几十年的发展,技术已经非常成熟,其性能稳定,在实际工程中有十分广 泛的应用,特别是在大、中型视频监控工程中的应用尤为广泛6。但是由于对图像的 处理和传送均采用模拟技术,不仅图象质量低,而且系统资源浪费严重,不易组成 复杂的网络结构,监控功能可扩展性差。随着数字技术的迅猛发展,网络技术的不 断发展和进步,图像信息的数字编码处理模式的不断增加,使新一代数字视频监控 系统日益显示出其独特的魅力。 近年来国际标准化组织 (iso) 、 国际电工委员会 (iec) 为数字图像的处理和传输建立了一套国际统一的相关标准,如 mpeg-1、mpeg-2、 mpeg-4 等数字视频编解码标准, 为数字视频监控建立了国际统一的技术规范, 更加 促进了该类系统的产业化发展。数字视频监控系统解决了模拟系统部分弊端,但仍 需进一步完善和发展。目前,视频监控系统正处在数控模拟系统与数字系统混合应 用并将逐渐向数字系统过渡的阶段。 前端一体化、视频数字化、监控网络化、系统集成化是视频监控系统公认的发 展方向,而数字化是网络化的前提,网络化又是系统集成化的基础,所以,视频监 控发展的最大两个特点就是数字化和网络化7,8。 4 视频监控系统的数字化首先应该是系统中信息流(包括视频、音频、控制等) 从模拟状态转为数字状态9,这将彻底打破 “经典闭路电视系统是以摄像机成像技术 为中心”的结构,根本上改变视频监控系统从信息采集、数据处理、传输、系统控 制等的方式和结构形式。信息流的数字化、编码压缩、开放式的协议,使视频监控 系统与安防系统中其它各子系统间实现无缝连接,并在统一的操作平台上实现管理 和控制。视频监控系统的网络化是远程视频监控系统今后发展的主要目标之一,系 统网络化将实现整个网络系统硬件和软件资源共享以及任务和负载共享。提高网络 的利用效率,这也促使视频监控系统成为新的网络应用热点。 1.4 本文的研究工作和内容安排本文的研究工作和内容安排 本文主要研究了嵌入式的网络视频监控系统中服务器端软件的设计和实现。提 出了服务器端和客户端分别使用代理的应用模式,采用面向对象的设计思想,进行 子系统和模块划分,实现功能模块化和对象化,并在系统实现中应用了面向对象的 设计模式,大大提高了系统的可重用性和可扩展性,简化了服务器端的设计,使得 系统结构清晰明了。 本文内容安排如下: 1. 简要回顾视频监控系统的发展历程及其现状和发展方向; 2. 结合系统总体功能需求,给出了系统的总体结构方案设计,重点介绍了系统的基 本设计思想以及监控中心的子系统划分情况; 3. 详细介绍了服务器端软件实现中将涉及的几种关键技术, 为第四章的介绍奠定基 础; 4. 阐述服务器端的详细设计,各子系统的结构、类的设计以及依赖关系等。重点介 绍了系统的数据结构设计,数据库模块的实现; 5. 总结全文,并展望本文的研究工作。 5 2 系统总体方案设计系统总体方案设计 本章首先概述系统功能需求,随后给出系统总体结构,并讨论了系统的使用人 员,接着简要介绍系统各部分,最后重点阐明系统的设计思想及子系统划分。 2.1 系统总体功能需求系统总体功能需求 本视频监控系统是一个集实时数据传输处理和信息管理于一身的综合应用系 统。系统不仅需要能满足远程用户浏览实时视频、历史录像,控制云台,处理音频 报警信息等基本要求,而且需要管理用户登录信息,设置不同的用户权限,进行录 像管理,修改视频服务器参数等。这里并不一一详述功能需求,只做一个简单归纳。 系统功能可分为六大部分:用户管理、设备管理、视音频监控、录像管理、配 置管理和日志管理,如表 2.1 所示。 表 2.1 系统总体功能需求表 用户管理 设备管理 视音频监控 录像管理 配置管理 日志管理 1.用户登录 2.用户登出 3.添加用户 4.删除用户 5.查看、修改 用户属性 6.添加用户组 7.删除用户组 8.查看、修改 用户组属性 1.设备登录 2.设备登出 3.添加设备 4.删除设备 5.查看、修改设 备参数 6.添加场所 7.删除场所 8.查看、修改场 所信息 1.手动分组(包 括建立和删除) 视频画面 2.手动选择浏 览各组画面 3.自动轮循各 分组画面 4.选择浏览某 设备通道的视 频画面 5.选择接收某 设备的音频 6.选择向某设 备发送本地音 频 7.选择某设备 控制其云镜 8.选择某设备 手动输出 1.手动对某设 备进行预约录 像 2.手动删除录 像记录 (包括已 完成、 未完成和 正在进行中的) 3.立即开启一 个未开始的录 像记录 4.立即停止一 个正在进行的 录像记录 5.查看、修改未 开始的录像记 录 6.浏览录像记 录并回放 1.查看、修改默 认录像删除时 间 2.查看、修改默 认日志删除时 间 1.查看系统保 存 的 任 意 一 天的日志 2.自动刷新当 前 的 日 志 记 录 3.手动删除系 统 保 存 的 任 意 一 天 的 记 录 6 2.2 系统总体结构系统总体结构 本系统主要由以下几部分组成:前端视频采集终端,监控中心,客户端以及连 接它们的网络。本系统采用一种类 b/s 的架构10,11。整个监控软件由监控中心和客 户端构成, 作为一个 activex 控件嵌入网页中。 web 服务器提供 activex 控件下载功 能,网络用户只需要安装 web 浏览器,然后下载该 activex 控件,即可以访问该监 控系统。监控中心和客户端通过 tcp/ip 协议实现两端之间的控制信息通信,而实时 视频流通信则采用 rtp 协议。 系统结构示意图如图 2.1 所示。 网络用户 企业mis网 powerfault data alarm 监控中心pc 以太网 powerfault data alarm 视频服务器 视频服务器 视频服务器 视频服务器 图 2.1 系统总体结构示意图 下面对各部分稍作说明。 1. 前端视频采集终端 前端视频采集终端核心部分为一台网络视频服务器(简称视频服务器) 。外围器 件包括云台解码器、14 个摄像头(带/不带云台) 、话筒、音箱、传感器、报警器 等。视频服务器是系统的主要设备。系统理论上可以挂接无限多的视频服务器,实 际数目受到网络带宽等资源的限制。视频服务器的主要特点是:采集特定场景的视 7 频画面,流经特定的通道进入编码器进行视频压缩编码,打包并将数据上传到网络。 2. 监控中心 监控中心处于系统的核心,超级管理员负责其使用管理,超级管理员的概念请 参见 2.3 节。 监控中心集中管理所有的视频服务器和网络用户, 负责调度和任务分配。 它可能由一台或多台视频服务器构成。 集 web 服务、 应用服务和数据库服务于一体。 以 web 访问的形式对超级管理员和网络用户提供统一的访问界面。理论上,监控中 心的结构如图 2.2 所示。而在系统的真正实现过程中,考虑到监控中心的简化和效 率问题,以及尽量降低监控中心的机器配置需求,我们把 web 服务器、应用服务器 和数据库服务器集中到一台高配置的 pc 上。 图 2.2 监控中心理论上的结构示意图 3. 客户端 客户端可以是监控子网(监控中心所处的局域网称为监控子网)或者企业 mis 网甚至 internet 上的任意一台机器。只要该机器安装有浏览器,就可以下载 activex 控件通过 web 访问本监控系统。 4. 连接系统的网络 要想连接监控中心、视频服务器和客户端,并使它们能够协同工作,就必然需 要网络。监控中心和视频服务器在一个专用的监控局域网内,此局域网只用于承载 监控的数据。它和企业 mis 网通过网关或者路由器进行连接。此网关或路由器应该 提供组播服务。 8 2.3 系统人员系统人员 本文侧重于对系统信息管理的介绍和实现,所以这里有必要说明一下系统不同 的使用人员。不同身份的人员,具有对系统不同等级的操作权限。 1. 现场配置人员 视频服务器出厂时有一套默认的运行参数,根据其具体工作环境的特点,需要 重新配置,这就是现场配置人员的工作职责。现场配置人员使用串口配置软件通过 串口对视频服务器进行运行参数的配置,配置好的视频服务器一旦挂接到网络上, 就可以按照其重新配置的运行参数正常运行。 2. 终端用户 终端用户包括超级管理员和网络用户。系统终端用户拥有账号、密码等属性, 用户使用账号、密码登录系统。 3. 超级管理员 整个系统有且仅有一个超级管理员。超级管理员只能在监控中心登录系统进行 管理。它拥有本系统的所有操作权限,可以进行任何系统提供的操作。 4. 网络用户 网络用户可以在客户端通过浏览器访问系统。网络用户的访问权限由超级管理 员进行配置,网络用户根据其拥有的权限可以对系统进行相应的访问和操作。超级 管理员还可以对网络用户进行分组,相同用户组拥有同一等级的权限。 5. 用户组 超级管理员用户可以把具有同等权限的用户归为一个组,即用户组。系统默认 一个超级管理员组和一个来客组。超级管理员组有且始终只有一个用户即超级管理 员。来客组的用户数可以任意多,初始时为零。超级管理员每创建一个终端用户, 其默认组就是来客组。超级管理员可以对终端用户任意分组,每组对应一定的权限。 用户组拥有用户组名等属性。 2.4 监控中心总体设计监控中心总体设计 2.4.1 基本设计思想基本设计思想 如 2.1 节中所指, 本系统是一个集实时数据传输处理与信息管理于一身的综合应 9 用系统,按照传统信息管理系统的设计原则,系统符合三层体系结构,如图 2.3-a 所示。表示层负责系统和用户的人机交互121314;数据层负责系统持久化信息的存 储管理;应用层则负责解释用户的操作,维护系统运行逻辑。 又由于系统应用于网络环境,用户从远程监控管理系统,按照经典网络应用的 设计原则,系统符合客户机/服务器体系结构,如图 2.3-b 所示。上述的三层体系结 构如果运行于单机系统,则三个层次都运行于一个节点。而客户机/服务器模式则打 破了这种封闭性,三层必须分别运行于不同的节点。考虑到为了方便用户使用系统, 即不用安装任何应用程序,客户端仅需要使用 web 浏览器从中心服务器下载应用程 序,就能通过 web 浏览器监控管理系统。客户端只是起到一个与用户交互的作用。 因此可以考虑将表示层放在客户机端,而将应用层和数据层放在中心服务器端,如 图 2.3-c 所示。这样既可以减轻客户机的负载, 也可以最大程度的保证系统运行逻辑 和数据的安全性。 由于客户机和服务器这种不可抗拒的物理分离将系统的不同层次阻隔开来,为 了保持系统的兼容性,即在各个运行节点(客户机和服务器)都保持逻辑上的三层 体系结构,本设计采用了代理的设计模式16,17,19。在客户机端,服务器的代理向表 示层提供了应用层的接口;而在服务器端,客户机的代理使用应用层提供的接口, 如图 2.3-d 所示。 这样当有可能需要重新将三层重新部署在一个节点上的时候, 就可 以直接去掉两个代理,使得系统具有非常良好的重构性20。 表示层 应用层 数据层 客户机服务器网络 客户机 表示层 服务器 应用层 数据层 网络 客户机 表 示 层 服务器 代理 服务器 应 用 层 客户端 代理 数 据 层 网络 a bc d 图 2.3 客户机/服务器模式的层次结构 为了使系统设计更具有重用性,我们采用面向对象的设计方法,将系统的全部 10 模块都对象化,具体的设计和实现将在第四章详细介绍。 2.4.2 涉及的关键技术涉及的关键技术 如上一小节所述,本监控系统符合客户机/服务器模式。客户机与服务器之间的 通信必然是基于现有网络协议即 tcp/ip 协议的。那么,我们首先必须了解客户机与 服务器之间的通信过程,熟悉 windows 环境下的网络编程,即 windows sockets 编 程。 在服务器端,我们采用多线程技术,处理多用户同时发送服务器服务请求。 为了存储和管理系统的持久化信息,监控中心采用了数据库技术,对用户信息、 用户组信息,视频服务器的场所信息等进行操作和管理。数据库管理系统用的 access2000,这是出于对系统规模与使用成本综合考虑的结果。 第三章将对这几项关键技术进行详细介绍。下面一节将简述监控中心的子系统 划分。 2.4.3 子系统设计子系统设计 上一小节已经阐明本系统采用基于代理的三层体系结构设计,现在分别考虑各 层的主要的子系统设计。 表示层(客户机代理) :如上一小节所述,真正的表示层在客户机端,服务器端 的是客户机代理,它完成表示层的功能。既然叫客户机代理,就要代理客户机的功 能。客户机的主要功能是和用户交互,但由于网络将客户和服务器阻隔开来,客户 要想真正和服务器交互,必须首先直接与客户机交互,客户机再与服务器交互。在 这里,客户机通过网络通信来与服务器交换数据。因此服务器端的表示层也即客户 机代理的主要功能是完成与客户机的网络数据通信,然后解释客户机发送的数据, 调用应用层提供的相应接口,再将用户所需要的数据通过网络发送给客户机。因此 表示层可以设计为一个通信子系统,命名为 communication。 应用层: 应用层是实现系统逻辑的地方, 系统功能在 2.1 节中被划分为六大部分, 由于视音频监控主要是客户机直接与视频服务器交互,不需要通过服务器中转。因 此应用层可以被设计为五个子系统的组合,它们之间交互完成系统的所有功能。这 五个子系统分别被命名为 usermanagement、 devicemanagement、 recordmanagement、 configmanagement、logmanagement。为了给上层也即表示层提供统一的接口,再为 11 整个应用层设计一个接口服务子系统来屏蔽应用层内部的逻辑,命名为 serverservice。 数据层:数据层处理系统持久化信息的存储和访问。本系统许多信息,如用户 信息,录像信息和日志信息都需要用数据库保存,因此数据层提供对数据库操作的 封装,以便应用层使用。此层设计为一个子系统,命名为 database。 综上,整个服务器端的系统被设计为八个子系统,如图 2.4 所示。 表示层 (客户机代理) 应用层 数据层 communication serverservice usermanagement devicemanagement recordmanagement configmanagement logmanagement database 图 2.4 监控中心子系统划分图 2.5 本章小结本章小结 本监控系统主要由监控中心、客户端和视频服务器组成。监控软件是一种拟客 户端/服务器模式。本章从系统特点出发,提出了使用代理的基本设计思想,并采用 面向对象思想完成监控中心子系统的划分。下一章将介绍监控中心使用的几种关键 技术。 12 3 关键技术介绍关键技术介绍 本章主要介绍几项监控中心涉及的关键技术:使用 tcp/ip 协议族完成客户端、 服务器之间的通信,使用套接字进行网络编程,多线程技术以及 ado 访问数据库技 术。 3.1 tcp/ip 协议的工作过程协议的工作过程 tcp/ip(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上所有 的通信设备相互间的通信方式。tcp/ip 是 internet 的通信基础。 3.1.1 tcp/ip 协议的分层协议的分层 网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。tcp/ip 协议是一组不同层次上的多个协议的组合,它通常被认为是一个四层协议系统20, 如图 3.1 所示。每一层都负责不同的功能。 应用层(telnet、ftp、 http、dns等) 传输层(tcp和udp) 网络层(ip、icmp和igmp) 链路层(以太网、令牌环网、 fddi等) 图 3.1 tcp/ip 协议的层次结构 1. 链路层 链路层又称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序 和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物 理接口细节。 2. 网络层 网络层又称作互联网层, 处理分组在网络中的活动, 例如分组的选路。 在 tcp/ip 协议族中,网络层协议包括 ip 协议(网际协议) ,icmp 协议(internet 互联网控制 13 报文协议) ,以及 igmp 协议(internet 组管理协议) 。 3. 传输层 传输层主要为两台主机上的应用程序提供端到端的通信。在 tcp/ip 协议族中, 有两个互不相同的传输协议: tcp (传输控制协议) 和 udp (用户数据报协议) 。 tcp 为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据 分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的 超时时钟等21。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略 所有这些细节。而另一方面,udp 则为应用层提供一种非常简单的服务。它只是把 称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一 端。任何必需的可靠性必须由应用层来提供。 4. 应用层 应用层负责处理特定的应用程序细节。几乎各种不同的 tcp/ip 实现都会提供下 面这些通用的应用程序:telnet 远程登录,ftp 文件传输协议,smtp 简单邮件传送 协议,snmp 简单网络管理协议。 3.1.2 tcp/ip 协议的通信模型协议的通信模型 internet 是全球最大的、 开放的、 由众多网络互联而成的计算机互联网, 而 tcp/ip 协议是该互联网使用的 “语言” 。 下面我们将以一个具体的小互联网为例, 说明 tcp/ip 协议的通信模型22。 图 3.2 所示是一个由以太网和令牌环网通过路由器互联的网络互联示意图。 abc21路由器 以太网 令牌环网 图 3.2 网络互联示意图 左边的以太网有三台编号分别为 a、b、c 的主机,右边的令牌环网有两台编号 为 1、2 的主机。假设以太网中的主机 a 要与令牌环网中的主机 1 使用文件传输协议 ftp 完成一次文件传输过程, 主机 a 中的 ftp 客户程序就要向主机 1 中的 ftp 服务 器程序提出请求, 由此开始了在 tcp/ip 协议控制下的主机 a 与主机 1 之间的通信过 程。 14 主机 a 和主机 1 都使用 tcp/ip 协议,由 3.1.1 节所述的四层协议栈组成。但要 注意主机 a 的物理网络是以太网,链路层使用的是以太网网卡和以太网驱动程序; 主机 1 由于在令牌环网中,因而使用令牌环网网卡及驱动程序。路由器是一个具有 多个接口的网络互联设备,它的功能是把分组从一个网络转发到另一个网络。在 tcp/ip 协议中,网络互联是通过网络层(ip 层)来实现的(不同的网络可以通过不 同的 ip 地址来识别) ,因此路由器通常只处理与互联网数据传输有关的低两层协议。 该例中的路由器有一个与以太网相连的接口和一个与令牌环网相连的接口。与以太 网相连的接口要能处理在以太网中传输的数据帧,与令牌环网相连的接口要能处理 在令牌环网中传输的数据帧,这两种类型的数据帧通过路由器的网络层(ip 层)相 互转发。 综上所述,我们可以把主机 a 和主机 1 之间的通信过程抽象成如图 3.3 所示的 tcp/ip 协议的通信模型。 ftp客户 ftp服务 器 tcp ip 以太网驱 动程序 tcp ip 令牌环驱 动程序 以太网驱 动程序 令牌环驱 动程序 令牌环 ip 以太网 以太网协议令牌环协议 路由器 ip协议 ip协议 tcp协议 ip协议 v 图 3.3 tcp/ip 协议的通信模型 15 当主机 a 的 ftp 客户程序向主机 1 的 ftp 服务器程序提出服务请求时, 我们可 以把用户输入的 ftp 命令和参数看成是由主机 a 传到主机 1 的“数据包” 。 该数据包通过网络由主机 a 送到主机 1 后,主机 1 的应用程序解释并执行该命 令,主机 1 又把该命令执行后的结果通过网络传到主机 a 的应用层(结果可能是把 某一文件下载到主机 a)22。因此,上图所示的模型中有一条由主机 a 的 ftp 客户 程序到主机 1 的 ftp 服务器程序的双向线来指示它们的通信过程,该线画成虚线的 原因是它们之间的通信是一个对等层之间进行的“虚通信” 。顾名思义,它们之间不 能直接进行通信,实际的通信过程是应用层把数据包传送到 tcp 层,因此,应用层 与 tcp 层之间画的是双向实线。同样的,其他对等层之间的通信也是虚通信。 接下来,我们详细讲述数据包的实际传递路线及其在 tcp/ip 协议栈中的层层封 装。 3.1.3 数据的封装与传递过程数据的封装与传递过程 应用层把数据包传输到 tcp 层后,tcp 层为了进行可靠性控制和识别数据从源 主机的哪个进程来以及要送到目标主机的哪个进程去,会加上一些 tcp 层的控制信 息(常称为 tcp 报文头) 23。之后,tcp 层把加上了 tcp 报文头的报文数据转发给 ip 层, ip 层再加上用于识别互联网中源主机和目标主机的 ip 地址以及上层协议类型 等, 组成 ip 层数据报后送给网络接口层;网络接口层把从 ip 层收到的数据报加上以 太网数据帧头后,通过以太网网卡向物理介质中传输比特流。数据只有传到这里, 才进行真正意义上的物理信号传输,即“实通信” 。 上述的这样一个过程,即每一层对从它上层收到的数据增加一些头部信息的过 程,称为数据封装或数据打包。数据送到接收方对等层后,接收方将识别、提取和 处理发送方对等层所加的数据头,这个过程叫数据的解封或拆包。封装与解封的整 个过程如图 3.4 所示。 16 客户数据 客户数据 客户数据 客户数据 ftp头 ftp头 ftp头 ftp头tcp头 tcp头 tcp头ip头 ip头以太网头 路由器接收 以太网数据 帧并根据目 标ip地址转 发到令牌环 网接口 客户数据 主机a主机1 客户数据 客户数据 客户数据 客户数据 ftp头 ftp头 ftp头 ftp头tcp头 tcp头 tcp头ip头 ip头以太网头 客户数据 应用层数据包 tcp段 ip数据报 应用层数据包 tcp段 ip数据报 接收端数据解封过程 发送端数据封装过程 以太网数据帧令牌环网数据帧 图 3.4 tcp/ip 协议数据封装与解封过程 3.2 套接字(套接字(sockets)编程)编程 在进行网络编程时,我们首先应该明白 tcp/ip 协议的核心内容是被封装在操作 系统中的。网络应用程序若想使用 tcp/ip 协议来实现自己的功能,只能通过系统提 供给用户的 tcp/ip 协议编程接口来实现。 在 windows 环境下设计网络程序, 必然用 到 windows 网络应用程序编程接口,即 windows sockets。socket 可译为“接口” 、 “插口” 、 “套接口”及“套接字”等22。本文中称其为“套接字” 。 3.2.1 套接字的概念及分类套接字的概念及分类 套接字(socket)是网络通信的基本构建模块。它可以看成是两个网络应用程序 进行通信时,各自通信连接中的一个端点24。通信时,其中的一个网络应用程序将 要传输的一段信息写入它所在主机的 socket 中,该 socket 通过网络接口卡(nic) 的传输介质将这段信息发送到另一台主机的 socket 中,使这段信息能传送到其他程 序中,如图 3.5 所示。 17 程序b 程序a 主机a主机b 网络管理软件 基于tcp/ip的网络 网络接口卡 (nic) 套接字套接字 图 3.5 套接字示意图 现在根据上图分析一下使用 socket 进行通信的过程。 当主机 a 上的程序 a 要发 送数据时, 通过调用数据发送函数首先将要发送的一段信息写入其 socket 中, socket 中的内容通过主机 a 的网络管理软件由主机 a 的网络接口卡发送到主机 b,主机 b 的网络接口卡接收到这段信息后,再传给主机 b 的网络管理软件,网络管理软件将 这段信息保存在主机 b 的 socket 中, 然后程序 b 才能在 socket 总读取并使用这段信 息。 从以上的通信过程可以看出,如果不考虑通信过程中的网络接口卡和传输介质 等,则网络通信的过程就是由数据的发送者将要发送的信息写入一个套接字,再通 过中间环节将信息传输到接收端的套接字中,然后就可以由接收端的应用程序将信 息从套接字中取出。套接字的本质是通信过程中所要使用的一些缓冲区及一些相关 的数据结构。 程序员目前普遍使用两种类型的套接字25:流式套接字(stream socket)和数据 报套接字(datagram socket) 。流式套接字定义了一种可靠的、面向连接的数据传输 服务,可提供双向、可靠、顺序且不重复的无记录边界的数据流。在 tcp/ip 协议族 中,使用 tcp 协议来实现字节流的传输,当用户向发送大批量的数据或者对数据的 传输有较高的要求时,使用流式套接字。在本监控系统中,使用的即是流式套接字 编程。 数据报套接字则定义了一种无连接、不可靠的双向数据传输服务。数据包以独 立的包形式被发送,并且保留了记录边界,不提供可靠性保证。数据在传输过程中 可能会丢失或重复,并且不能保证在接收端数据按发送顺序接收。在 tcp/ip 协议族 中,使用 udp 协议来实现数据报接口。 18 除了上述两种常用的套接字外,还有一种供测试用的原始套接字,用于一些协 议的开发和测试新的网络协议的实现,在应用程序中可以通过使用原始套接字来完 成一些比较底层的操作,如对 ip 或 icmp 的直接访问等。 3.2.2 套接字编程流程套接字编程流程 如上一小节所述,套接字分为流式套接字和数据报套接字。由于二者具有不同 的通信性质,使用不同的传输层协议,套接字编程的流程自然也是有所差异的。 使用 tcp 协议的流式套接字实现的通信是面向连接的24。这种通信方式要求通 信双发在通信前必须先建立连接。类似于电话服务系统,每一次完整的通信过程都 要经过建立连接、使用连接、终止连接三个过程。使用 udp 协议的数据报套接字实 现的通信是面向无连接的。这种通信方式在通信前,双发无需建立连接,可直接收 发数据。发送方不管对方是否收到或正确接收,只要有数据就发送,而接收方仅负 责接收数据,不管数据正确与否,且不向发送方发送应答信息。 对于流式套接字,服务器端首先调用 socket()函数建立一个流式套接字,并返回 新套接字号。之后,将此套接字号与本机的一个端口关联,这是由 bind()函数来完成 的。继续调用 listen()函数将套接字置于被动的侦听方式以监听连接,并确定能够同 时处理的客户请求数目。服务器只有在调用了 accept()函数进入等待状态之后才可以 接收来自客户端的请求。一旦接收到客户端通过 connect()发出的连接请求,accept() 将返回一个新的套接字号,通过此套接字号调用 send()或 recv()函数即可与客户端进 行数据收发。待数据传送完成,服务器、客户端调用 closesocket()函数关闭套接字。 需要说明的是,服务器此时关闭的是此前由 accept()所返回的新的套接字,而非开始 创建的套接字。在此套接字被关闭后,服务器将再次处于阻塞状态,以等待下一个 客户端的连接请求并重复上述过程。只有在服务器退出或不再接收客户发出的连接 请求后,才用 closesocket()关闭开始创建的套接字27。图 3.6 给出了使用流式套接字 进行网络编程时套接字函数的调用时序。 对于数据报套接字,其服务器通常是面向事务处理,一个请求、应答即完成了 客户端与服务器进程的相互作用。服务器在调用 socket()建立了数据报套接字后必须 调用 bind()函数以此套接字号与本地地址绑定。而对于客户机,bind()的调用则不是 必需的,即可以通过它来指定 ip 地址及端口号,也可以不调用 bind()而由套接字来 自动设定 ip 地址及端口号。这样通信双方就通过 socket()和 bind()建立了半相关。对 19 于这种无连接的数据收发,由于本地套接字并未通过 connect()与远程主机建立连接, 因此应当使用 recvfrom()和 sendto()函数以指明源地址和目的地址,从而在数据的收 发过程中动态建立起全相关。在数据传送过程结束后,通信双方调用 closesocket()关 闭套接字。图 3.7 给出了使用数据报套接字进行网络编程时套接字函数的调用时序 27。 socket(),建立流式套接 字,返回套接字号s bind(),将套接字号s与 本机一个端口相连 listen(),监听连接 accept(),接收连接,等 待客户端的连接 socket(),建立流式套接 字,返回套接字号s connect(),将套接字s与 远程主机相连 recv()/send(),在套接字 ns上读/写数据,直到完 成交换 send()/recv(),在套接字s 上写/读数据,直到数据 完成交换 建立连接,accept()返 回,得到新的套接字ns closesocket(),关闭套接 字ns closesocket(),关闭套接 字s,服务结束 closesocket(),关闭套接 字s,结束tcp会话 服务器 客户机 阻塞,等待客户数据 建立连接

温馨提示

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

评论

0/150

提交评论