




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 通信网原理课程设计报告 专业班级 姓名学号 指导教师 设计时间2013 年7 月电子信息工程系信息科学与工程学院中南大学信息科学与工程学院目录课题:ip 数据包的捕获与解析11 绪论11.1 开发背景11.2 研究意义12 系统分析22.1 需求分析22.2 开发环境22.3 开发相关技术介绍22.4 可行性分析63 总体设计63.1 设计原理63.2 功能说明93.3 设计流程94 详细设计104.1 界面设计104.2 主要功能函数说明115 测试155.1 数据包捕获155.2 数据包分析155.3 数据包保存166 总结18参考文献19课题:网络即时通信程序201 绪论201.1 开
2、发背景202 系统分析202.1 需求分析202.2 开发环境202.3 用户特点212.4 开发相关技术介绍213 总体设计233.1 系统总体结构图:233.2 注册登陆模块结构图:233.3 添加好友流程结构图:243.4 消息管理结构图:253.5 个人信息设置结构图:25 3.6 数据库设计26 3.6.1 账户信息26 3.6.2 在线用户表27 3.6.3 好友表274 详细设计284.1 界面设计285 测试295.1 登录界面295.2 注册界面305.3 查找好友305.4 好友聊天315.5 好友信息查看325.6 其他功能模块336 总结36参考文献37中南大学信息科学
3、与工程学院1中南大学信息科学与工程学院 摘 要计算机网络嗅探器是可以窃听计算机程序在网络上发送和接收到的数据,程序实现了对抓取到的本机在网络中的通信数据的协议类型、源地址、目的地址、端口和数据包的大小加以简单的分析,改程序应用c#语言编写,实现了一个简单的网络嗅探功能。其中一个窗体显示主页面,另一个窗体显示详细信息。关键词:网络嗅探器;数据包;c#abstractthe computer network sniffer can be tapped the computer programs on the network to send and receive the data, the pro
4、gram has realized to grab the machine on the network to the communication of the data of the agreement, the source address, purpose type address, port and the size of the data packets to simple analysis, the program written application c #, implements a simple network sniffer function. one of the ma
5、in screen display form, another form shows detailed information.key words: network sniffer, packet, c#中南大学信息科学与工程学院课题:ip 数据包的捕获与解析1 绪论1.1 开发背景随着各种新的网络技术的不断出现、应用和发展,计算机网络的应用越来越广泛,其作用也越来越重要。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。计算机网络安全问题越来越严重,网络破坏所造成的损失越
6、来越大。internet的安全已经成为亟待解决的问题。多数黑客入侵成功并植入后门后的第一件事就是选择一个合适当前网络的嗅探器,以获得更多的受侵者的信息。嗅探器是一种常用的收集有用数据的方法,可以作为分析网络数据包的设备。网络嗅探器就是利用计算机的网络接口截获其他计算机的数据报文的一种工具,而且它与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器捕获的则是真实的网络报文.如果把网络嗅探器放置于网络节点处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法,可以分析各种信息包并描述出网络的结构和使用的机器,由于它接收任何一个在同一网段上传输的数据包,所以
7、也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性。这成为黑客们常用的扩大战果的方法,用来夺取其他主机的控制权。当然嗅探器的正当用处主要是网络管理人员分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器截获网络中的数据包,分析问题的所在。1.2 研究意义本次课程设计是基于c#的网络嗅探器的设计与实现,由于本人能力上的限度,只是对抓取到的本机在网络中的通信数据,比如说协议类型,源、目的地址和端口、数据包的大小等加以分析,而无法做到像sniffer或者影音神探那种成熟的嗅探器所拥
8、有的强大功能。作为从事网络技术方面的人员来说,要想有效地利用它、防范它,就得深入地学习、分析网络嗅探技术。最为重要的是,对于网络嗅探器的设计与实现,使我对网络通信,数据传输和网络信息安全等有了切身的体会与融入,同时也是对大学三年的学以致用,不断提高自我的一种有效途径。对网络嗅探器的深入研究更重要的是可以让我们的互联网世界更安全、信息更健康。2 系统分析2.1 需求分析实现一个简单的网络嗅探器。具备以下功能:u 有一个简洁的易操作的计算机操作用户界面。u 能抓取与本机网络相关的数据包。u 能随时暂停抓取数据包。u 能清空数据包列表。u 能显示数据包详细的信息。u 能保存数据包条目。2.2 开发环
9、境u 一台能联网并安装有windows xp或windows7操作系统的计算机。u 使用microsoft visual studio 2010开发平台。u 使用易开发的c#语言来开发。u 必须安装有microsoft .net framework 4.0。2.3 开发相关技术介绍2.3.1 嗅探技术简介数据在网络上是以很小的称为帧(frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其
10、进行存储。就是在这个传输和接收的过程中,存在安全方面的问题。 每一个在局域网(lan)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与internet地址系统比较相似)。当用户发送一个数据包时,这些数据包就会发送到lan上所有可用的机器。如图2.1所示:图2.1 一个简单的局域网组成在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站a不会捕获属于工作站b的数据,而是简单地忽略这些数据)。 嗅探器工作在网络的底层,在网络上监听数据包来获取敏感信息。从原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传
11、输来的数据,网卡内的单片程序接收数据帧的目的mac地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知cpu,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式:a) 广播方式:该模式下的网卡能够接收网络中的广播信息。b) 组播方式:设置在该模式下的网卡能够接收组播数据。c) 直接方式:在这种模式下,只有目的网卡才能接收该数据。d) 混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。首先,在以太网中是基于广播方式传送数据的,也就是说,所有的物理信号都要经过我的机器
12、。其次,如果某个工作站的网络接口处于混杂模式,那么它就可以捕获网络上所有的数据包和帧。sniffor程序是一种利用以太网的特性把网络适配卡(nic,一般为以太网卡)置为混杂模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包,而不管该数据是否传给它的。2.3.2 网络协议现今因特网上用到的主要协议有:用户数据报协议(udp),次要文件传输协议(tftp),网际协议(ip),因特网控制报文协议(icmp),传输控制协议(tcp),地址转换协议(arp),虚终端协议(telnet),反向地址转换协议(rarp),外部网关协议(egp)版本2,引导协议(bootp),路由信息
13、协议(rip),距离向量多播路由协议(dvmrp)。下面对其中的4个协议做一些简单的介绍: ip :网际协议ip是tcp/ip的心脏,也是网络层中最重要的协议。ip层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-tcp或udp层;相反,ip层也把从tcp或udp层接收来的数据包传送到更低层。ip数据包是不可靠的,因为ip并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。ip数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 高层的tcp和udp服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,ip地址形成了
14、许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。ip确认包含一个选项,叫作ip source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些tcp和udp的服务来说,使用了该选项的ip包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠ip源地址做确认的服务将产生问题并且会被非法入侵。 tcp:如果ip数据包中有已经封好的tcp数据包,那么ip将把它们向上传送到tcp层。tcp将包排序并进行错误检查,同时实现虚电路间的连接。tcp数据包中包括
15、序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 tcp将它的信息送到更高层的应用程序,例如telnet的服务程序和客户程序。应用程序轮流将信息送回tcp层,tcp层便将它们向下传送到ip层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如telnet、ftp、rlogin、x windows和smtp)需要高度的可靠性,所以它们使用了tcp。dns在某些情况下使用tcp(发送和接收域名数据库),但使用udp传送有关单个主机的信息。 udp:udp与tcp位于同一层,但对于数据包的顺序错误或重发。因此,udp不被应用于那些使用虚电路的面向连接的服务,udp主要用
16、于那些面向查询-应答的服务,例如nfs。相对于ftp或telnet,这些服务需要交换的信息量较小。使用udp的服务包括ntp(网落时间协议)和dns(dns也使用tcp)。 欺骗udp包比欺骗tcp包更容易,因为udp没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与udp相关的服务面临着更大的危险。 icmp: icmp与ip位于同一层,它被用来传送ip的的控制信息。它主要是用来提供有关通向目的地址的路径信息。icmp的redirect信息通知主机通向其他系统的更准确的路径,而unreachable信息则指出路径有问题。另外,如果路径不可用了,icmp可以使tc
17、p连接体面地终止。ping是最常用的基于icmp的服务。2.3.3 数据包简介“包”(packet)是tcp/ip协议通信传输中的数据单位,一般也称“数据包”。有人说,局域网中传输的不是“帧”(frame)吗?没错,但是tcp/ip协议是工作在osi模型第三层(网络层)、第四层(传输层)上的,而帧是工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。osi(open system interconnection,开放系统互联)模型是由国际标准化组织(iso)定义的标准,它定义了一种分层体系结构,在其中的每一层定义了针对不同通信级别的协议。os
18、i模型有5层,1到5层分别是:物理层、数据链路层、网络层、传输层、应用层。osi模型在逻辑上可分为两个部分:低层的1至3层关注的是原始数据的传输;高层的4至5层关注的是网络下的应用程序。数据包主要由“目的ip地址”、“源ip地址”、“净载数据”等部分构成。 数据包的结构与我们平常写信非常类似,目的ip地址是说明这个数据包是要发给谁的,相当于收信人地址;源ip地址是说明这个数据包是发自哪里的,相当于发信人地址;而净载数据相当于信件的内容。如图2.2所示:图2.2 数据包封装格式正是因为数据包具有这样的结构,安装了tcp/ip协议的计算机之间才能相互通信。我们在使用基于tcp/ip协议的网络时,网
19、络中其实传递的就是数据包。比如说当你上网打开网页,这个简单的动作,就是你先发送数据包给网站,它接收到了之后,根据你发送的数据包的ip地址,返回给你网页的数据包,也就是说,网页的浏览,实际上就是数据包的交换。理解数据包,对于网络管理的网络安全具有至关重要的意义。2.4 可行性分析可行性研究(feasibility study)是通过对项目的主要内容和配套条件,如市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等,从技术、经济、工程等方面进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行预测,从而提出该项目是否值得投资和如何进行建设的咨
20、询意见,为项目决策提供依据的一种综合性的系统分析方法。可行性研究应具有预见性、公正性、可靠性、科学性的特点。当然这次论文的可行性研究并没有上述的如此意义重大,只是理清整个系统分析和设计的大致过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。它的目的不是解决问题,而是确定问题是否值得去解决。当然在现阶段这样的信息安全背景下,网络嗅探器的研究与使用的价值是毋庸置疑的。不仅可以有效地诊断网络状况,更可以为信息安全战打攻坚战。3 总体设计3.1 设计原理嗅探侦听主要有两种途径,一种是将侦听工具软件放到网络连接的设备或者放到可以控制网络连接设备的电脑上,(比如网关服务器,路由器)当然要实
21、现这样的效果可能也需要通过其他黑客技术来实现:比如通过木马方式将嗅探器发给某个网络管理员,使其不自觉的为攻击者进行了安装。另外一种是针对不安全的局域网(采用交换hub实现),放到个人电脑上就可以实现对整个局域网的侦听,这里的原理是这样的:共享hub获得一个子网内需要接收的数据时,并不是直接发送到指定主机,而是通过广播方式发送到每个电脑,对于处于接受者地位的电脑就会处理该数据,而其他非接受者的电脑就会过滤这些数据,这些操作与电脑操作者无关,是系统自动完成的,但是电脑操作者如果有意的话,就可以将那些原本不属于他的数据打开,这就是安全隐患。以太网的数据传输是基于“共享”原理的:所有的同一本地网范围内
22、的计算机共同接收到相同的数据包。这意味着计算机直接的通讯都是透明可见的。正是因为这样的原因,以太网卡都构造了硬件的“过滤器”。这个过滤器将忽略掉一切和自己无关的网络信息。事实上是忽略掉了与自身mac地址不符合的信息。嗅探程序正是利用了这个特点,它主动的关闭了这个过滤器,也就是前面提到的设置网卡“混杂模式”。因此,嗅探程序就能够接收到整个以太网内的网络数据了信息了。举例一下,很多的小型局域网计算机用户都为实现文件和打印共享,安装了“netbeui” 因为它不是基于tcp/ip协议的,所以来自于网络的黑客一样无法得知他们的设备情况。基于raw协议,传输和接收都在以太网里起着支配作用。你不能直接发送
23、一个raw数据给以太网,你必须先做一些事情,让以太网能够理解你的意思。这有点类似于发短信的方法,你不可能直接把一条短信直接发送出去,你还要输入对方的手机号码才可以发送,同样的网络上的传输数据也是一个道理。以下是一个帮助我们理解数据传送的简单图示: _ /. /.internet +-+ +-+.+-+ 用户a-路由.用户b +-+ +-+.+-+ ./ -/ +-+ 嗅探器 +-+ 用户a ip 地址: 0 用户b ip 地址: 现在知道用户a要于用户b进行计算机通讯,用户a需要为0到用户b 的通讯建立一
24、个ip包 。这个ip包在网络上传输,它必须能够穿透路由器。因此,用户a必须首先提交这个包给路由器。由每个路由器考查目地ip地址然后决定传送路径。 用户a 所知道的只是本地与路由连接和用户b的ip地址。用户a并不清楚网络的结构情况和路由走向。用户a必须告诉路由器准备发送数据包的情况,以太网数据传输结构大概是这样的: +-+-+-+-+-+-+ 目标 mac +-+-+-+-+-+-+ 源 mac +-+-+-+-+-+-+ 0x0800 +-+-+-+ ip 包 +-+-+-+-+-+ crc校验 +-+-+-+-+ 理解一下这个结构,用户a的计算机建立了一个数据包假设它由100个字节的长度(假
25、设一下,20 个字节是ip信息,20个字节是tcp信息,还有60个字节为传送的数据)。现在把这个数据包发送给以太网,放14个字节在目的mac地址之前,源mac地址还要置一个0x0800的标记,他指示出了tcp/ip栈后的数据结构。同时,也附加了4个字节用于做crc校验(crc校验用来检查传输数据的正确性)。 现在发送数据到网络,所有在局域网内的计算机通过适配器都能够发现这个数据包,其中也包括路由适配器,嗅探器和其他一些机器。通常,适配器都具有一块芯片用来做结构比较的,检查结构中的目地mac地址和自己的mac地址,如果不相同,则适配器会丢弃这个结构。这个操作会由硬件来完成,所以,对于计算机内的程
26、序来说,整个过程时毫无察觉的。当路由器的以太网适配器发现这个结构后,它会读取网络信息,并且去掉前14个字节,跟踪4个字节。查找0x0800标记,然后对这个结构进行处理(它将根据网络状况推测出下一个最快路由节点,从而最快传送数据到预定的目标地址)。设想,只有路由机器能够检查这个结构,并且所有其他的机器都忽略这个结构,则嗅探器无论如何也无法检测到这个结构的。3.2 功能说明本课程设计我只对抓取到的本机在网络中的通信数据(如协议类型,源、目的地址和端口、数据包的大小等)加以分析,实现一个简单的网络嗅探器。一个窗体显示主页面,另一个页面显示详细的包信息。详细信息页面,我们显示一下信息:开始时间:嗅探器
27、抓取数据包的时间;源端口:源目的ip地址+端口号;目的端口:目的ip地址+端口号;协议类型:只分析一下常见的类型,如icmp, igmp,ip, tcp,udp;版本信息:协议的版本;生存时间:数据包的生命周期;报头大小:报文报首部大小;报文总长:整个数据报的大小;优先级别:提供七个级别,分别是routine = 0,priority = 1,immediate = 2,flash = 3,flashoverride = 4,criticecp = 5,internetworkcontrol = 6,networkcontrol = 7;延迟:normaldelay = 0、 lowdelay
28、 = 1;吞吐量:normalthroughput = 0,highthroughput = 1;可靠性:normalreliability = 0,highreliability = 1;3.3 设计流程根据系统分析后设计出相应的流程图。内容主要包括初始化,获得主机ip列表,绑定socket,开始捕获数据,分析数据,显示数据项,导出日志文件,根据用户操作退出程序。如图3.1所示:图3.1程序流程图4 详细设计4.1 界面设计主程序捕获数据包的界面设计如图4.1所示:图4.1 主程序捕获数据包界面 分析数据包的界面设计如图4.2所示: 图4.2 分析数据包界面4.2 主要功能函数说明(1)在主
29、程序的load方法中初始化,获取本地计算机的ipv4地址,并添加到combobox中显示出来。private void packetmonitor_load(object sender, eventargs e) / 取得计算机的所有ipv4,并以列表的形式显示出来 ipaddress hosts = packetmonitor.getlocalhostipv4addresses(); if (hosts.length = 0) throw new notsupportedexception(没有安装网卡); for (int i = 0; i hosts.length; i+) this.c
30、bxips.items.add(hostsi.tostring(); m_packettracks = new packettrackthis.cbxips.items.count; for (int i = 0; i m_packettracks.length; i+) m_packettracksi = new packettrack(hostsi); m_packettracksi.newpacket += new newpacketeventhandler(this.onnewpacket); m_packets = new arraylist(); (2)当点击开始捕获数据包按钮后,
31、启动start函数,开始捕获并接收数据包。public void start() if (m_monitor = null) try m_monitor = new socket(addressfamily.internetwork,socke type.raw, protocoltype.ip); m_monitor.bind(new ipendpoint(ip, 9980);m_monitor.setsocketoption(socketoptionlevel.ip, socketoptionname.headerincluded, 1); m_monitor.iocontrol(sio_
32、rcvall, bitconverter.getbytes(int)1), null); /低级别操作模式 m_monitor.beginreceive(m_buffer, 0, m_buffer.length, socketflags.none, new asynccallback(this.onreceive), null); catch m_monitor = null; throw new socketexception();(3)当捕获到数据包时,对其进行处理的函数如下:public packet(byte raw, datetime time)if (raw = null)hrow
33、 new argumentnullexception();if (raw.length 4;m_headerlength = (raw0 & 0x0f) * 4;if (raw0 & 0x0f) 5);m_delay = (delay)(raw1 & 0x10) 4);m_throughput = (throughput)(raw1 & 0x8) 3);m_reliability = (reliability)(raw1 & 0x4) 2);m_totallength = raw2 * 256 + raw3;if (m_totallength != raw.length)throw new a
34、rgumentexception(); / 无效的数据包大小m_identification = raw4 * 256 + raw5;m_timetolive = raw8;if (enum.isdefined(typeof(protocol), (int)raw9)m_protocol = (protocol)raw9;elsem_protocol = protocol.other;m_checksum = new byte2;m_checksum0 = raw11;m_checksum1 = raw10;m_sourceaddress = new ipaddress(bitconverte
35、r.touint32(raw, 12);m_destinationaddress = new ipaddress(bitconverter.touint32(raw, 16);if (m_protocol = protocol.tcp | m_protocol = protocol.udp)m_sourceport = rawm_headerlength * 256 + rawm_headerlength +1;m_destinationport = rawm_headerlength + 2 * 256 + rawm_headerlength + 3;elsem_sourceport = -
36、1;m_destinationport = -1;5 测试5.1 数据包捕获 程序运行后,直接点击开始按钮,开始捕获数据包,测试结果如图5.1所示:图5.1 程序运行的测试结果 由图5.1可知,左下角显示程序成功的捕获到了17个数据包。若计算机安装有多个网卡或者安装有虚拟机,程序还可以对某个指定的网卡(虚拟网卡)进行侦听并捕获数据包。5.2 数据包分析 根据程序捕获的数据包的结果,下面对由图5.1中的数据包进行分析。(1)tcp协议数据包的详细信息,如图5.2所示:图5.2 tcp数据包 (2)udp协议数据包的详细信息,如图5.3所示:图5.3 udp数据包5.3 数据包保存 点击保存按钮后
37、,弹出保存对话框并输入要保存的文件名后,保存并打开文件,如图5.5所示:图5.5 保存数据包的测试 由以上的测试可知,程序符合实训的要求和目的,实现了数据包的捕获与分析。6 总结通过这次通信网原理课程设计,我收获了很多。首先使我更加充分理解了课本上的知识,加深对ip数据包格式和ip协议的了解,同时进一步掌握了c#的一些网络编程知识,其次在实践中遇到问题去探索和学习,更增加了新知识。在程序设计编写过程中,使用异步来处理数据包的接受和处理,异步线程要添加数据项到主线程创建的界面,这就需要处理两个线程间的数据交换。使用托管函数调用主线程的控件,添加数据项,实践证明达到了预期的目的,积累了经验。为今后
38、更好的学习及今后工作打下了坚实的基础。通过此次课程设计,自己动手实现网络嗅探器的设计,加强了对网络通信,数据传输和网络信息安全有的学习,同时也使我对计算机信息安全产生了兴趣。虽然实现了本次实训的主要功能,但还是有些地方需要改进,比如在windows7系统下执行该程序会出现一些socket问题,这是由于系统权限问题造成,该程序还不能单独对某一个远程的ip进行跟踪捕获等等,这些都是今后需要改进的地方。这个课程设计我在七月七号写完并实现功能后上传网站共享,希望和大家分享并得到更多的意见和建议,针对大家提出的不可以指定类型保存和限定抓包数量两个模块,事后我自己又加以修改可以实现功能。参考文献1 潘荷新
39、等著.网络技术应用与实训教程m.北京:科技出版社,2009.82 张保通等著.计算机网络模块教程m.北京:中国水利水电出版社,2009.103 段云所著.信息安全概论m.大连:东北财经大学出版社,20064 杨晓光,李兰友.visual c#.net程序设计m. 北京:北京交通大学出版社,20085 刘瑞新.c#网络编程及应用m. 北京:机械工业出版社,20096 comer,d.computer networks and internets,4edm.pearson education,2006.87 吴成著.c#网络与通信程序设计案例精讲m.北京:国防工业出版社,20078 梅晓东著.vi
40、sual c#网络编程技术与实践m.北京:清华大学出版社,2006 19中南大学信息科学与工程学院摘 要 网络即时通信im(instant messaging)是目前internet上最为流行的通讯方式,而各种各样的即时通信软件也层出不穷:服务提供商也提供了越来越丰富的通信服务功能。随着互联网的发展,即时通信的运用日益广泛,即时通信软件业方兴未艾。 点对点网络已经被越来越多的用户所需要并且作为一种标准的分发信息的标准方式登堂入室,因为它的结构使得网络富有延展性,相较普通网络有更高的效率和更好的表现。p2p(peertopeer)网络是非中心化,自组织和动态的网络,并且为传统的客户端一服务器计算
41、模型提供另外一种选择。客户端-he务器(cs)结构允许用户链接到某一个服务器,尽管服务器是可扩展的,但这总有限制。而p2p网络却拥有几乎无限的扩展可能。 本系统基于c#,使用vs作为开发工具,最终实现了多个用户可以点对点的进行即时通信。关键词:p2p,网络即时通信,tcp,客户端,服务器中南大学信息科学与工程学院abstract instant messaging is currently the most popular way to communicate on the interact,by the way various instant messaging software have
42、been continuously appearing;service provider offers more and more communication services nowadays as the development of the intemet,instant messaging will perform a wider use and isgrowing up day after day peer-to-peer network is needed by a growing number of users嬲a standard distribution of a stand
43、ard information arrival method,because it makes the structure of the network more scalability,which has higher efficiency and better performance than ordinary networksp2p network has no center,self-organized,from simple sense, it is a dynamic(network)and provides another option to the traditional cl
44、ientserver modelclientserver structure allows users to link to a certain server,while the server can be extended,it is always limitedbut peer-to-peer network has almost unlimited expansion potential this system is based on c# and uses vs as the development t001 key words:p2p,instant messaging,tcp,cl
45、ient,server中南大学信息科学与工程学院课题:网络即时通信程序1 绪论1.1 开发背景 现代社会沟通越来越重要,网络上有很多像qq,msn,icq等的聊天工具,基于本次通信网原理课程设计要求,决定开发一套web网络即时通讯的聊天工具csu-mm。2 系统分析2.1 需求分析实现一个简单的csu-mm的多数功能都在模仿qq,在本次课程设计中,csu-mm应达到一下的功能要求:u 用户注册:只有通过用户注册,用户才可以获取帐号并登录csu-mm系统,实现注册国家省市、密保、邮箱验证及随机验证码。u 用户登录:用户输入账号、密码登录csu-mm系统,并给出智能提示。u 个人信息加载:用户登录
46、后,应该在获取个人信息、好友列表、未读消息列表等个人信息。u 查找、添加好友:在用户在线搜索好友时,可以进行好友的添加。u 消息文本格式化:在用户使用csu-mm进行聊天时,csu-mm需要提供文本编辑如加粗、斜体、字体颜色及上传个人图标等操作。u 动态加载消息列表:在用户登录csu-mm系统后,需要动态加载用户消息列表使用户迅速获取聊天消息、传输文件、播放音乐及视频等信息。2.2 开发环境u 一台能联网并安装有windows xp或windows7操作系统的计算机。u 使用microsoft visual studio 2010开发平台。u 使用易开发的c#语言来开发。u 必须安装有sql
47、serve 2008。2.3 用户特点适合各年龄阶段用户使用2.4 开发相关技术介绍2.4.1 登录模块 在本次课程设计csu-mm的开发中,使用了iframe内嵌页面方式开发,这种方式在ajax大型应用中非常普遍,可以进行快速开发。在ajax开发应用中,大量使用本页面或用户控件实现ajax功能,这种页面与控件的紧密耦合的方式不便于后期维护和扩展。使用iframe可以将具体功能分解至不同页面,实现了按照功能划分的解耦,便于后期维护及扩展,并且将功能分解至不同页面,不容易导致异步线程紊乱和线程阻塞、死锁,保证了服务器效率。2.4.2 ajax javascript脚本封装类 在csu-mm的开发
48、中使用了一个javascript类,该类位于login.js文件中用于封装ajax的基本操作,代码如下所示: 在ajaxxmlhttp类中封装了3个方法:createxmlhttp()、$()、makeurl()。createxmlhttp()方法提供了创建xmlhttprequest对象的工作,$()方法提供了获取当前document对象中特定元素的方法,makeurl()用于组装ajax请求url。在csu-mm的开发中,基本的ajax操作都使用了ajaxxmlhttp类中封装的方法。2.4.3 功能集成页面 在csu-mm中只有一个页面是可以与用户交互,所有的页面都使用iframe被内嵌
49、在default.aspx页面中,default页面前台代码非常简单,如下所示:loadcsu-mmpanel()函数设定了id为divcsu-mmpanel的中的html代码,仔细阅读这些html代码,会发现在iframe中严格限定了大小、位置。如果不在iframe中设定大小和位置,会发现加载的页面不能正常显示。2.4.4 mm主面板实现在使用mm登录后,会弹出一个含有用户信息及好友列表的mm主面板。mm主面板提供好友列表的显示、消息提醒、用户个人信息的显示等功能,在本次课程设计中将展示mm主面板的实现细节。2.4.5 mm聊天模块 聊天模块是实现csu-mm中非常重要的模块。当用户好友双击
50、好友头像时,应迅速加载聊天窗口。在之前的好友列表的加载的好友头像时,就内置了javascript函数实现双击好友头像加载聊天窗口的功能。聊天窗口还需要提供文本编辑、好友信息显示等功能,在此环节中将实现以上功能。 mm聊天窗口前台代码 sendmsg页面就是聊天窗口页面,提供了用户聊天消息的文本编辑、插入未读消息、更新聊天信息状态的功能。sendmsg页面的前台html代码如下所示:实际上发送消息的javascript函数非常简单,仅仅将所有聊天消息的属性组装为url参数传递值msghandler类,由msghandler类进行数据库插入操作。 mm聊天窗口后台代
51、码 实际上sendmsg页面后台功能非常简单,提供了加载消息、更新消息状态的功能,代码如下所示: 显示消息调用readsysmsg()函数组装消息显示的html代码,同时将显示的消息更新为已读消息。通过frame页面和sendmsg页面的联动,就实现了类似qq即时提醒消息,已读消息不再提醒的功能。getfriendinf页面中动态加载好友列表,并将显示好友头像的标记的src属性设定为当前好友的userid。当当前用户双击好友头像时,就会执行双击事件,那么就会使用iframe加载sendmsg页面,这样就实现了类似qq双击头像显示聊天窗口的功能。2.4.6 注册模块在csu-mm中提供了用户注册功能,注册功能需要实现用户信息录入及选择等功能。其功能模块后台代码如下:register页面的后台代码非常简单,实现了用户国籍地区下拉列表、密保问题下拉列表的数据绑定,并实现了用户注册功能。3 总体设计3.1 系统总体结构图:3.2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 整车制造绿色环保技术应用考核试卷
- 木材采伐作业成本控制考核试卷
- 卫生材料的社会影响与企业责任考核试卷
- 在建工地安全课件模板
- 工厂院内改造合同范本
- 公司聘用合同范本6
- 土地小院出租合同范本
- 团队合作合同范本
- 铝厂服装租借合同范本
- 小学生注意力课件
- 成人重症患者人工气道湿化护理专家共识解读教学课件
- 英语课件音标教学课件
- 2024年湖北省中考语文真题(学生版+解析版)
- 起重作业安全教育培训
- 水果店入职培训
- DB35T 1832-2019 工业企业能耗在线监测数据质量评价技术规范
- DB15T3127-2023酿酒葡萄气候品质评价
- 一年级新生家长会课件(共25张课件)
- 心理健康教育(共35张课件)
- 古诗词诵读《客至》课件+2023-2024学年统编版高中语文选择性必修下册
- 信号与系统考试试题及答案
评论
0/150
提交评论