计算机网络课设报告1.doc_第1页
计算机网络课设报告1.doc_第2页
计算机网络课设报告1.doc_第3页
计算机网络课设报告1.doc_第4页
计算机网络课设报告1.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

计算机网络课程设计实验报告 姓 名:方展龙学 号:200830720406 班 级:08网络工程4班 2011年12月21日华南农业大学华南农业大学信息学院设计性、综合性实验设计题目基于加密的即时通讯软件起止日期2011-2012学年第一学期课程名称计算机网络课程设计学生资料院系 信息学院 专业班级 08级网络工程4班 人员组成及各自工作说明:学号姓名工作量成绩200830720428曾燕妮(组长)25%200830720425杨莉15%200830720405邓志赟20%200830720406方展龙20%200830720407贺兆增20%设计内容实现一个基于数据加密的tcp/ip即时通讯软件,使用加密以及数字签名对通讯信息进行保护评语与成绩项目/成绩优良中及格不及格系统分析设计程序设计水平内容完成情况设计报告撰写质量课程设计总结情况综合成绩 指导教师 杜治国 2011年 12 月 20 日摘 要 即时通信在互联网领域的应用取得了巨大的成功,但是在学校、企业内部的应用仍远未普及。鉴于即时通信作为一项有广泛应用价值的技术框架,在逐步适应企业网络、教育网络的应用特点后,局域网即时通信必将取得和电子邮件一样的普及效果。该系统使用.NET作为开发平台、access数据库存储用户信息,用tcp套接字连接客户端和服务器,用字节流套接字发送消息。使用该系统可进行一般的文字交流,及在线用户显示等功能。信息化的发展使得丰富的资源共享的同时,有的人就喜欢贪得无厌去窃取别人的隐私,因此即时通讯软件的安全性尤为重要,本系统使用了数据加密以及数字签名来保证信息传输不被轻易窃取。信息时代计算机技术的发展给整个社会的生活、工作方式带来了一次革命。因此基于网络安全的编程设计是很有意义的!关键词 .NET Framework;TCP;多线程;access;TCP/IP协议;安全;数据加密;数字签名Abstract pick instant communication in Internet applications and achieved great success, but in the school, enterprise application is still far from universal. In view of the instant communication as a widely used technology framework, in gradually adapt to the enterprise network, network education application features, LAN instant messaging and email the same popularity will effect. The system uses NET as the development platform, access database stores user information, using TCP socket connection client and server, using byte stream socket send a message. The use of the system for general text communication, and online user display and other functions.The development of information makes rich resources sharing at the same time, some people like be insatiably avaricious to steal other peoples privacy, so the security of instant messaging software is particularly important, this system uses the data encryption and digital signature to guarantee the information transmission is not being easy to steal.Information era of computer technology to the development of the entire social life, work has brought about a revolution. Therefore the network security based on programming design is of great significance!Key words. NET Framework; TCP; multithreading; access; TCP / IP protocol; security; data encryption; digital signature目 录前言11.课题及开发平台简介11.1 课题介绍11.2 开发平台简介11.3 编程语言简介(C#)21.4主要设计功能32.数据库设计及基本实现原理42.1 数据库设计42.2 基本实现原理42.2.1客户机/服务器模式42.2.2不对称加密与对称加密相结合的应用52.2.3 基于hash算法的数字签名63.服务端及客户端编程实现73.1服务端实现73.2 客户端实现74.网络安全编程实现74.1 数据加密实现74.2 数字签名实现85.程序运行效果86.总结8参考文献9前言由于因特网的迅速流行,越来越多的应用程序具备了在网上与其它程序通信的能力。从WIN95开始微软把网络功能融进了它的操作系统,使得应用程序网络通信能力更为普及。因此,微软的TCP/IP协议也就成为网络应用程序基于的首选协议。TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要。从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架(如ACE、Java、.NET FCL)和控件(如IP*Works)大大简化了TCP/IP编程的难度。但是,如果想要在这个领域达到融会贯通的地步,不打下坚实的基础是不可想象的。正如Richard Stevens在TCP/IP Illustrated中所说,在网络编程领域,开发者所遇到的实际问题中,大约有90%都与开发者对于TCP/IP的理解相关。高层的框架和控件总结了TCP/IP的主要使用模式,并且进行了抽象和封装,这固然非常好,但是想要真正掌握TCP/IP网络编程的真谛,还得靠自己一不一个脚印从基础的开始。诚然C#语言的抽象、封装给我们使用带来方便,但是我觉得弄清楚其底层实现是非常重要的! 随着信息化的进一步发展,网络隐私成为一个热点话题,而在于即时通讯领域,安全性能更是成为一个好的即时通讯软件的重要标志!本课程设计的重点就在与把数据加密以及数字签名应用到一个聊天工具中,实现对通讯信息的保护以及验证。1.课题及开发平台简介1.1 课题介绍本课程是网络安全专业及相近专业开始的一门重要实践课程,主要要求学生掌握网络安全原理和技术在实践中的应用。本课程设计的目的是使学生在理论学上的基础上,动手编写程序、通过应用所学习的知识,来解决一些实际网络安全应用问题。在此基础上,我们决定把数据加密以及数字签名应用于即时通讯中,开发一个基于加密的即时通讯软件。1.2 开发平台简介.NET Framework 是微软的几个开发团队一起努力发展的成果,最主要用来产生一个可以用来快速开发、部署网站服务及应用程序的开发平台。作为微软公司继WindowsDNA以来的新的开发平台。.Net Framework是以一种类似于Java系统的虚拟机方式运行和管理的编程平台,通过CLR为基础,支持多种语言(C#、VB.NET、C+、Python等)的开发。C#是一种安全的、稳定的、简单的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。 在Visual Studio 2008的C+语言当中,MFC可以支持Vista的通用控件。Visual Studio 2008还支持智能感应,除此以外,对于AJAX引入了很多扩展控件,从而可以快速开发ASP.NET AJAX的应用。新的Vista SDK中包含大量的非托管API。UAC(用户访问控制)是Vista的一种访问控制机制,主要是防止病毒对系统的破坏。使用Visual Studio 2008可以高效开发Windows应用。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时Visual Studio 2008支持项目模板、调试器和部署程序。使用Expression交互式设计器可以无缝集成设计人员与开发人员的工作流程。LINQ是一种用来进行数据访问的编程模型,使得.NET语言可以直接支持数据查询。LINQ的目标是降低访问数据的复杂度。LINQ可以用统一的方法访问不同类型的数据,可以将数据作为对象使用,能够更好地与编程模型集成,可以在Visual Studio 中进行智能提示。1.3 编程语言简介(C#)1.面向对象的可视化编程方法:用传统程序设计语言设计程序时,大都是通过编写程序代码来实现用户界面,在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察,这很麻烦,大大影响了软件开发的效率。C#则是应用的面向对象的程序设计方法(OOP),提供了可视化的设计方法,它把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。开发人员不必再为界面设计而编写大量程序代码,也不需要通过一遍遍编译来修改不满意之处了。只要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部件”,即图形对象,并设置这些图形对象的属性,就可以轻松完成任务了。C#会自动产生界面设计代码,程序设计人员不必再手工编写实现程序功能的那些烦人的代码,从而可以大大提高程序设计的效率。2.结构化程序设计语言:C#是在C/C+语言的基础上发展起来的,具有高级程序设计语言的语句结构,接近于自然语言和人类的逻辑思维方式。C#语句简单易懂,其编辑器支持彩色代码,可自动进行语法错误检查,同时具有功能强大且使用灵活的调试器和编译器。C#是面向对象型语言,在输入代码的同时,解释系统将高级语言分解翻译成计算机可以识别的机器指令,并判断每个语句的语法错误。在设计C#程序的过程中,随时可以运行程序,而在整个程序设计好之后,可以编译生成可执行文件(.EXE),脱离C#环境,直接在Windows环境下运行。3.事件驱动编程机制:C#通过事件来执行对象的操作。一个对象可能会产生多个事件,每个事件都可以通过一段程序来响应。例如,命令按钮是一个对象,当用户单击该按钮时,将产生一个“单击”(CLICK)事件,而在产生该事件时将执行一段程序,用来实现指定的操作。在用C#设计大型应用软件时,不必建立具有明显开始和结束的程序,而是编写若干个微小的子程序,即过程。这些过程分别面向不同的对象,由用户操作引发某个事件来驱动完成某种特定的功能,或者由事件驱动程序调用通用过程来执行指定的操作,这样可以方便编程人员,提高效率。4.访问数据库功能:C#具有强大的数据库管理功能,利用数据控件和数据库管理窗口,可以直接建立或处理Microsoft SQL Server 2005 Express格式的数据库,并提供了强大的数据存储和检索功能。同时,C#还能直接编辑和访问其他外部数据库,如:DATABASE,FoxPro,Paradox等,这些数据库格式都可以用C# 编辑和处理。C#提供开放式数据连接,即ADO.NET功能,可通过直接访问或建立连接的方式使用并操作后台大型网络数据库,如SQL Server,Oracle等。在应用程序中,可以使用结构化查询语言SQL数据标准,直接访问服务器上的数据库,还提供了简单的面向对象的库操作指令和多用户数据库访问的加锁机制和网络数据库的SQL的编程技术,为单机上运行的数据库提供了SQL网络接口,可以在分布式环境中快速而有效地实现客户/服务器(client/server)方案。5.动态数据交换(DDE)功能:利用动态数据交换(Dynamic Data Exchange)技术,可以把一种应用程序中的数据动态地链接到另一种应用程序中,使两种完全不同的应用程序建立起一条动态数据链路。当原始数据变化时,可以自动更新链接的数据。C#提供了动态数据交换的编程技术,可以在应用程序中与其他Windows应用程序建立动态数据交换,在不同的应用程序之间进行通信。6.对象的链接与嵌入(OLE)功能:对象的链接与嵌入(OLE)将每个应用程序都看作是一个对象(object),将不同的对象链接(link)起来,再嵌入(embed)某个应用程序中,从而可以得到具有声音、影像、图像、动画、文字等各种信息的集合式的文件。利用OLE技术,可以方便地建立复合式文档(compound document),这种文档由来自多个不同应用程序的对象组成,文档中的每个对象都与原来的应用程序相联系,并可执行与原来应用程序完全相同的操作。Visual Basic就采用了OLE技术。7.动态链接库(DLL)功能:C# 是一种高级程序设计语言,不具备低级语言的功能,对访问机器硬件的操作不太容易实现。但它可以通过动态链接库技术将C/C+或汇编语言编写的程序加入到C# 应用程序中,可以像调用内部函数一样调用其他语言编写的函数。此外,通过动态链接库,还可以调用Windows应用程序接口(API)函数,实现SDK所具有的功能。1.4主要设计功能可以进行通信的身份验证,登陆时需要对密码进行加密;采用公钥密码技术验证和签名;采用公钥密码和对称密码相结合来进行消息加密,每一次会话产生一个对称加密的会话密钥,会话密钥用公钥建立;具备正常的密钥管理功能,自己的私钥要加密,对方的公钥要存储保管,具备导入导出功能;验证完备性,确保消息在传输过程中没有被更改。2.数据库设计及基本实现原理2.1 数据库设计2.2 基本实现原理2.2.1客户机/服务器模式C#支持多种协议上的网络程序开发,比如TCP、UDP、和IP等等。由于这次课程设计是实现点到点的可靠连接,所以在此使用TCP连接方式。在这个连接中,双方分为客户和服务器,他们各自的功能不同。基于TCP套接字编程三个步骤:服务器监听,客户端请求,连接确认。所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。所以Socket接口的网络通讯原理:首先,服务端有一个进程(或多个进程)在指定的端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按设计的数据交换方法和格式进行数据传输。在使用TCP协议时,一般服务端进程先使用socket调用得到一个描述符,然后使用bind调用将一个名字与socket描述符连接起来,对于Internet域就是将Internet地址联编到socket。对于实例服务端用TcpListener监听,然后把连接的对象实例化为一个TcpClient,调用TcpClient.GetStream()方法,返回网络流实例化为一个NetworlStream流,然后进行Send,Receive。客户机一方,TCP/IP应用程序功能如下:(1) 打开通信信道(申请一套接字),并连接到服务器在主机的保留端口,该端口对应服务器的TCP/IP进程。(2) 向服务器发出请求报文,等待接收应答。(3) 从服务器方收到最终应答结果,或在不再请求时关闭信道并终止客户机进程。服务器一方,TCP/IP应用程序动作如下:(1) 打开通信信道(申请一套接字),通知本地主机在某一保留端口接收客户机请求。(2) 等待客户请求到达指定端口。(3) 接收到请求,启动一新进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路。(4) 继续等待客户机请求。(5) 如果不想响应客户机请求,关闭服务器进程。综上所述,TCP/IP应用中的服务器程序必须先于客户机进程启动,直到对客户机的响应结束或强迫终止。其面向连接的应用程序流程图如图2-1。图2-1 C/S模式2.2.2不对称加密与对称加密相结合的应用不对称加密与对称加密各有优缺点,在本课题中,考虑到聊天软件的即时性,在消息传输中使用处理速度更快得对称加密,同时,使用不对称加密来传输对称密钥。不对称加密解决了用对称加密传递信息必须传递密钥的问题,对于通过网络传递的数据来说,由于不对称加密无法使用流进行处理,因此在网络应用程序中,一般将对称加密和不对称加密配合使用。基本思想是:用不对称加密算法加密对称加密算法的密钥,用对称加密算法加密实际数据。A希望向B传递加密数据,B首先生成一个不对称加密算法使用的公钥/密钥对,假定公钥过publicKey,私钥为privateKey,然后B将公钥publicKey通过网络传递给A;A接收到此公钥后,用它加密使用对称加密算法的密钥KEY和初始化向量IV,并将加密后的密钥KEY和初始化向量IV通过网络传递给B。这样,A和B都有了一个共同使用的对称加密的密钥,然后双方用此密钥加密数据,并将加密后的数据传递给对方,对方收到加密后的数据后,再用对称加密的密钥KEY和初始化向量IV解密数据。具体实现的设计思路如下:1,,客户端生成一个使用RSA算法的不对称加密的公钥/私钥对,通过TCP将公钥发送到服务器端;2,服务器端用客户端发送的公钥初始化RSA对象。然后利用此对象加密使用tripleDES算法的对称加密的密钥;3,服务器端将加密后的对称加密的密钥发送到客户端,客户端利用RSA的私钥解密tripleDES密钥,并用此密钥初始化tripleDES对象;4,双方使用对称加密算法加密对话内容,并将加密后的对话内容发送到对方;5,接收方接收到加密后的对话内容后,利用对称加密算法解密对话内容,并显示解密前和解密后的结果。2.2.3 基于hash算法的数字签名数字签名是利用不对称加密和hash算法共同实现的。本实验中,利用数字签名来保证消息的完整性。发送方先使用hash算法对数据进行hash运算得到数据的hash值,然后将数据和hash值一块儿发送给接收方;接收方接收到数据和hash值后,对接收的数据进行和发送方相同的hash运算,然后将计算得到的hash值和接收的hash值进行比较,如果二者一致,说明收到的数据肯定与发送方的原始数据相同,从而保证数据的完整性。使用RSACryptoServiceProvider类来实现数字签名,主要流程如下:1,发送方先将发送的信息使用hash函数创建消息摘要,然后用私钥对信息摘要进行加密,以创建发送方的个人签名;2,把个人签名和消息一起发送,接收方收到之后,使用发送方的公钥解密该签名,以恢复消息摘要,并使用发送方所用的hash算法对该消息进行hash运算;3,如果接收方计算的消息摘要与收到的完全匹配,则接收方可以确保消息在传输过程中没有被修改。3.服务端及客户端编程实现3.1服务端实现3.2 客户端实现4.网络安全编程实现4.1 数据加密实现网络流内存流发送加密的数据字节序列加密计算发送数据量数据网络流字节序列读取数据量大小读取加密的数据内存流解密数据发送方接收方4.2 数字签名实现5.程序运行效果6.总结本课题着重在于即时通讯方面的网络安全应用,因此模仿QQ实现了一个基于TCP/IP的即时通讯软件,采用客户端与服务器Client/Server模型,在此基础上,使用数据加密以及数字签名来保证信息传输的安全性和完整性。本系统主要分为三部分,服务端、客户端以及access数据库。服务端和客户端使用了封装了socket的更高层次的TCP套接字来实现消息传输,在传输过程中,需要对客户端与服务器的消息进行统一的设计,并对此有深入的了解;另外,需要运用C#网络编程,包括网络套接字、监察器等的使用,IP地址、

温馨提示

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

评论

0/150

提交评论