收藏 分享(赏)

计算机网络课程设计报告(2016模板).pdf

上传人:weiwoduzun 文档编号:4240069 上传时间:2018-12-17 格式:PDF 页数:20 大小:649.94KB
下载 相关 举报
计算机网络课程设计报告(2016模板).pdf_第1页
第1页 / 共20页
计算机网络课程设计报告(2016模板).pdf_第2页
第2页 / 共20页
计算机网络课程设计报告(2016模板).pdf_第3页
第3页 / 共20页
计算机网络课程设计报告(2016模板).pdf_第4页
第4页 / 共20页
计算机网络课程设计报告(2016模板).pdf_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、 计算机网络 课程设计报告 题目 成绩 学院名称 专业班级 学生姓名 学 号 指导教师 2016 年 6 月 计算机网络课程设计报告模板 2 目录 摘要 . 3 关键词 . 4 一背景概述 . 4 二设计内容 . 4 三设计要求 . 5 四需求分析 . 5 五总体设计 . 5 程序流程图 . 6 设计思路 : . 6 设计环境 : . 6 基本功能 : . 6 详细设计 : . 7 六总结与体会 19 七参考文献 . 20 计算机网络课程设计报告模板 3 摘要 在科学技术飞速发展的时代,网络互联技术显示出了它蓬勃发展的生命力,它逐渐进入了人们的家居生活,使得当今社会的智能化和网络化越来越来明显

2、。人们对居住环境的要求也随着计算机的普及和信息产业的发展而大大提高,越来越多的人已经离不开网络了,无论是工作、学习还是休闲娱乐,这些都已经和网络息息相关:人们可以足不出户了解世界上每个角落在发生什么,买到自己心仪的物品,可以在通过网络进行视频会议,远程控制完成一些工作任务等,网络给人们带来了巨大的便利。由于 Internet 的信息和服务内容不断的扩大,使得用户对网络的需求急剧增 加。同时, 企业 的网络化也会给 企业 带来新的市场机遇和商业价值。 企业 的网络系统建设也随着计算机技术、通信技术、控制技术及多媒体技术进步和互相渗透而发展起来。 本 课 设主要 致力于 防火墙 1、防火墙简介 防

3、火墙是目前一种最重要的网络防护设备。从专业角度讲,防火墙是位于两个 或两个以上的 网络间,实施网络之间访问控制的一组组件集合。对于普通用户来说,所谓 “ 防火墙 ” ,指的就是一种被放置在自己的计算机与外界网络之间的防御系统,它对从网络发往计算机的所有数据都进行判断处理,并决定能否把这些数据交给计算机,一旦发现有害数据, 防火墙就会拦截下来,实现对计算机的保护功能。 设置防火墙的目的是防火墙是在网络之间执行控制策略的系统,它包括硬件和软件,目的是保护内部网络资源不被外部非授权用户使用、防止内部网络受到外部非法用户的攻击。 防火墙的主要功能检查所有从外部网络进入内部网络的数据包;检查所有从内部网

4、络流出到外部网络的数据包;执行安全策略,限值所有不符合安全策略要求的数据包通过; 具有防攻击能力,以保证自身的安全性 ;防火墙实现的主要技术:数据包过滤、应用网关和代理服务。 2 、防火墙使用的技术: 数据包过滤: 包过滤路由器可以决定对它所收到的每个数据包的取舍。是基于路由器技术的,建立在网络层、传输层上 。路由器对每发送或接收来的数据包审查是否与某个包过滤规则相匹配。 包 过滤规则 即访问控制表,通过检查每个分组的源 IP 地址、目的地址来决定该分组是否应该转发。 如果找到一个匹配,且规则允许该数据包通过,则该数据包根据路由表中的信息向前转发。如果找到一个与规则不相匹配的,且规则 拒绝此

5、数据包,则该数据包将被舍弃。 计算机网络课程设计报告模板 4 包 过滤方法 具有以下优点: ( 1)执行包过滤所用的时间很少或几乎不需要什么时间。 ( 2)对路由器的负载较小 ( 3)由于 包过滤路由器对 用户 和应用程序是透明的,因此不需要在每台主机上安装特别的软件。 包过滤 方法的缺点: ( 1)在路由器中设置包过滤规则比较困难 ( 2)由于包过滤只能工作在“假定内部主机是可靠地,外部诸暨 市不可靠的”这种简单的判断上,它只是控制在主机一级,不涉及包 的内容与用户一级,因此它有很大的局限性。 关键词 防火墙 包过滤 IP 地址 一背景概述 在系统下 ,包过滤功能是内建于核心的(作为一个核心

6、模块,或者直接内建),同时还有一些可以运用于 数据包 之上的技巧,不过最常用的依然是查看 包头 以决定包的命运。 包过滤 防火墙 将对每一个接收到的包 做出允许或拒绝的决定。具体地讲,它针对每一个数据包的包头,按照包过滤规则进行判定,与规则相匹配的包依 照 路由 信息继续转发,否则就丢弃。包过滤是在 IP 层 实现的,包过滤根据 数据包 的源 IP 地址、目的 IP 地址、协议类型( TCP 包、 UDP 包、 ICMP包)、 源端口 、目的端口等包头信息及数据包传输方向等信息来判断是否允许数据包通过。 包过滤也包括与服务相关的过滤,这是指基于特定的服务进行包过滤,由于绝大多数服务的监听都驻留

7、在特定 TCP/UDP 端口,因此,为阻断所有进入 特定服务的链接, 防火墙 只需将所有包含特定 TCP/UDP 目的端口的包丢弃即可。 二设计内容 要求实现一个简单的包过滤防火墙 , 能够根据 IP 地址范围阻塞或允许客户机对 FTP 服务的访问 。 计算机网络课程设计报告模板 5 三设计要求 要求: ( 1)推荐采用图形界面实现。 ( 2)程序代码书写规范,有充足的注释。 ( 3) 绿色软件 :程序运行不需安装, 避免写系统 和注册表 ; ( 4)开发平台、开发语言不限。 (5) 明确题目的意图,设计上应有足够的工作量 四需求分析 防火墙在网络中占有重要的地位。用户安全意识的提高和网络攻击

8、手段的发展使得传统的功能简单的 个人 防火墙已经无法满足现在的需求。首先 ,用户对个人防火墙的功能需求增强 , 个人 防火墙需要提供不同层次的安全保护。其次 ,用户对个人防火墙效率的需求增强。在防火墙功能扩展的情况下 ,效率问题显得非常突出。因此 ,在实际应用中个人防火墙在实现安全的基础上 ,不仅要保持高效和低耗 ,还要实现不同层次的保护功能。在对防火墙的性能和效率进行分析和改进的基础上 ,设计并实现了一个基于 Windows 平台的个人防火墙。个人防火墙在实现过程中应用了效 率和性能改进的策略 ,取得了非常好的效果。 五总体设计 包过滤防火墙总的实现有三部分组成:表示层、应用层逻辑层和存储层

9、。 ( 1)在表示层上,主要是防火墙与用户交互界面的实现; ( 2)在应用逻辑高层,主要是利用系统提供的 IP 过滤驱动注册用户处理数据包的函数,包括实现分析数据包、过滤数据包等功能; ( 3)在应用逻辑低层主要是利用系统提供的 IP 过滤驱动 ipfltdrv.sys 实现数据包的拦截;在存储层上,主要实现用户定义的过滤规则的存储。 计算机网络课程设计报告模板 6 程序流程图 设计 思路 : 首先将网卡设置为低级模式 ,通过 网络嗅探器 ,并将捕捉到的数据包的 IP 地址以及相关信息显示出来 .然后根据用户的要求选择要过滤的 IP 地址 ,再进行数据包过滤 ,显示出过滤掉的数据包的 IP 地

10、址以及相关信息 . 设计环境 : VS2010, win7. 基本功能 : 我们设计的数据包过滤器有以下几个功能 : 1. 开始 2. 停止 3. 清空 4. 过滤 IP 地址 5. 在该程序界面上自动显示本机的 IP 地址 6. 程序带有系统时间 开始 捕捉所有的数据包 用户选择要过滤的 IP 开始过滤 停止 计算机网络课程设计报告模板 7 图 1 界面 详细设计 : 某些变量的定义 : public byte ip_tos; /服务质量 ,public ushort ip_totallength;/数据包总长度 ,public ushort ip_offset;/标志和偏移量 ,publi

11、c ushort ip_id;/IP 地址 public byte ip_ttl;/存活时间 ,public byte ip_protocol;/协议类型 (TCP,UDP,ICMP,Etc.), public ushort ip_checksum;/IP 包头校验和 public uint ip_srcaddr;/源 IP 地址 ,public uint ip_destaddr;/目的 IP 地址 , private static int rcv_buf_len;/得到的数据流的长度 private byte rcv_buf_bytes;/收到的字节 private Socket socke

12、t = null;/声明套接字 private static string gustIP; / 需要 过滤的 IP 地址 . 创建和绑定 socket: socket 非常类似于电话插座。以一个国家级电话网为例,电话的通话双方相当于相互通信的 2 个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于 socket 号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个 socket;同时要知道对方的号码,相当于对方有一个固定的 socket。然后向 对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨打 当于给出网络地址)。假如对方

13、在场并空闲(相当于通信的另一主机开 机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从计算机网络课程设计报告模板 8 电话机接收信号的过程,相当于向 socket 发送数据和从 socket 接收数据。通话结束后,一方挂起电话机相当于关闭 socket,撤消连接。相关代码如下 : / 创建和绑定 socket / / 本机的 IP public void CreateAndBind(string IP) socket = new Socket(AddressFamily.InterNetwork, SocketType.Ra

14、w, ProtocolType.IP); socket.Blocking = false;/非阻塞状态,即在请求尚未完成的时候也能继续执行 socket.Bind(new IPEndPoint(IPAddress.Parse(IP), 0); SetSocketOption(); 设置网卡为混杂模式并接收所有的数据包 : 这里的 SIO_RCVALL 是指示 RawSocket 接收所有的数据包,在以后的 IOContrl函数中要用,在下面的构造函 数中,实现了对一些变量参数的初始化: public RawSocket() /构造函数 error_occurred=false; len_rec

15、eive_buf = 4096; receive_buf_bytes = new bytelen_receive_buf; 下面的函数实现了创建 RawSocket,并把它与终结点( IPEndPoint:本机 IP 和端口)绑定: public void CreateAndBindSocket(string IP) /建立并绑定套接字 socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP); socket.Blocking = false; /置 socket 非阻塞状态 socket.

16、Bind(new IPEndPoint(IPAddress.Parse(IP), 0); /绑定套接字 if (SetSocketOption()=false) error_occurred=true; 其中 ,在创建 socket 套接字 socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);中有 3 个参数: 第一个参数是设定地址族, MSDN 上的描述是 “指定 Socket 实例用来解析地址的计算机网络课程设计报告模板 9 寻址方案 ”,当要把套接 字绑定到终结点( IPEndP

17、oint)时,需要使用 InterNetwork 成员,即采用 IP 版本4 的地址格式,这也是当 今大多数套接字编程所采用一个寻址方案( AddressFamily)。 第二个参数设置的套接字类型就是我们使用的 Raw 类型了, SocketType 是一个枚举数据类型, Raw 套接字类 型支持对基础传输协议的访问。通过使 用 SocketType.Raw,你不光可以使用传输 控制协议 (Tcp)和用户数 据报协议 (Udp)进行通信,也可以使用网际消息控制协议 (Icmp) 和 Internet 组管理协议 (Igmp) 来进 行通信。在发送时,您的应用程序必须提供完整的 IP 标头。所

18、接收的数据报在返回时会保持其 IP 标头 和选项不变。 代码如下 : private void SetSocketOption() SniffSocketException ex; try socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1); /设置套接字选项 byte IN = new byte4 1, 0, 0, 0 ; byte OUT = new byte4; int SIO_RCVALL = unchecked(int)0x98000001);/低级别操作模式 ,接受所有的数

19、据包 int ret_code = socket.IOControl(SIO_RCVALL, IN, OUT);/ if (ret_code != 0) ex = new SniffSocketException(“command execute error“); throw ex; catch (SocketException e) ex = new SniffSocketException(“socket error“, e); throw ex; 计算机网络课程设计报告模板 10 图 2 开始 接收所有数据包 停 止接收和发送数据 : 当前使用的是面向连接的 Socket,则必须先调用

20、Shutdown 方法,然后才能关闭 Socket。 这可以确保在已连接的套接字关闭之前,已发送和接收该套接字上的所有数据。 调用 Close 方法可释放所有与 Socket 关联的托管资源和非托管资源。 在关闭 Socket 后请不要尝试重用它。 代码如下 : / / 停止接收和发出数据 / public void ShutDown() if (socket != null) socket.Shutdown(SocketShutdown.Both);/ 计算机网络课程设计报告模板 11 图 3 接收一段时间后暂停的数据包 实现的数据包的接收 : 下面的函数实现的数据包的接收: /解析接收的数

21、据包,形成 PacketArrivedEventArgs 事件数据类对象,并引发PacketArrival 事件 unsafe private void Receive(byte buf, int len) byte temp_protocol = 0; uint temp_ip_srcaddr = 0; uint temp_ip_destaddr = 0; short temp_srcport = 0; short temp_dstport = 0; 计算机网络课程设计报告模板 12 IPAddress temp_ip; PacketArrivedEventArgs e = new Pack

22、etArrivedEventArgs(); fixed (byte* fixed_buf = buf) IPHeader* head = (IPHeader*)fixed_buf;/把封包中的数据流强制转换成 IPHeader 类型 temp_protocol = head-ip_protocol; switch (temp_protocol) case 1: e.Protocol = “ICMP“; break; case 2: e.Protocol = “IGMP“; break; case 6: e.Protocol = “TCP“; break; case 17: e.Protocol

23、 = “UDP“; break; default: e.Protocol = “UNKNOWN“; break; temp_ip_srcaddr = head-ip_srcaddr; temp_ip_destaddr = head-ip_destaddr; temp_ip = new IPAddress(temp_ip_srcaddr); e.OriginationAddress = temp_ip.ToString(); temp_ip = new IPAddress(head-ip_destaddr); e.DestinationAddress = temp_ip.ToString();

24、temp_srcport = *(short*) temp_dstport = *(short*)/? e.ReceiveBuffer = buf; Array.Copy(buf, 0, e.IPHeaderBuffer, 0, (int)e.HeaderLength);/把 buf 中的 IP 头赋给 PacketArrivedEventArgs 中的 IPHeaderBuffer OnpacketArrival(e);/数据包到达时触发事件 在上面的函数中,我们使用了指针这种所谓的不安全代码,可见在 C#中指针和移位运算这 些原始操作也可以给程序员带来编程上的便利。在函数中声明Packet

25、ArrivedEventArgs 类对象,以便通过 PacketArrival(e) 函 数 通 过 事 件 把 数 据 包 信 息 传 递 出 去 。 其 中PacketArrivedEventArgs 类是 RawSocket 计算机网络课程设计报告模板 13 类中的嵌套类,它继承了系统事件( Event)类,封装了数据包 的 IP、端口、协议等其他数据包头中包含 的信息。在启动接收数据包的函数中,我们使用了异步操作的方法,以下函数开启了异步监听的接口: public void Run() /开始监听 IAsyncResult ar = socket.BeginReceive(receiv

26、e_buf_bytes, 0, len_receive_buf, SocketFlags.None, new AsyncCallback(CallReceive), this); Socket.BeginReceive 函数 返回了一个异步操作的接口,并在此接口的生成函数BeginReceive 中声明了异 步回调函数 CallReceive,并把接收到的网络数据流传给 receive_buf_bytes,这样就可用一个带有异步操 作的接口参数的异步回调函数不断地接收数据包: private void CallReceive(IAsyncResult ar)/异步回调 int received

27、_bytes; received_bytes = socket.EndReceive(ar); Receive(receive_buf_bytes, received_bytes); if (KeepRunning) Run(); 此函数当挂起或结束异步读取后去接收一个新的数据包,这样能保证让每一个数据包都能够被程序探测到 计算机网络课程设计报告模板 14 图 4 选择 IP 过滤后的 接受包的事件处理类 的函数 : public class PacketArrivedEventArgs : EventArgs private string origination_MAC;/源 MAC 地址

28、private string destination_MAC;/目的 Mac 地址 private string protocol; private string destination_address; private string origination_address; private uint header_length; private byte receive_buf_bytes = null; private byte ip_header_bytes = null; private byte message_bytes = null; / / 构造函数 计算机网络课程设计报告模板

29、 15 / public PacketArrivedEventArgs() this.protocol = “; this.destination_address = “; this.origination_address = “; this.header_length = 0; this.receive_buf_bytes = new bytercv_buf_len; this.ip_header_bytes = new bytercv_buf_len; this.message_bytes = new bytercv_buf_len; #region 定义属性 / / 以下代码是定义属性

30、/ public string Protocol get return protocol; set this.protocol = value; public string DestinationAddress get return destination_address; set this.destination_address = value; public string Origination_Mac get return origination_MAC; set this.origination_MAC = value; public string Destination_Mac ge

31、t return destination_MAC; set this.destination_MAC = value; public string OriginationAddress 计算机网络课程设计报告模板 16 get return origination_address; set this.origination_address = value; public uint HeaderLength get return header_length; set this.header_length = value; public byte ReceiveBuffer get return

32、receive_buf_bytes; set this.receive_buf_bytes = value; public byte IPHeaderBuffer get return ip_header_bytes; set this.ip_header_bytes = value; public byte MessageBuffer get return message_bytes; set this.message_bytes = value; #endregion /定义事件句柄 public delegate void PacketArrivedEventHandler(object

33、 sender, PacketArrivedEventArgs args); public event PacketArrivedEventHandler PacketArrival;/ 定义事件PacketArrival /引发触发事件执行的方法 protected void OnpacketArrival(PacketArrivedEventArgs e) if (PacketArrival != null)/如果设置了触发事件,则执行这个触发事件 if (gustIP = null) 计算机网络课程设计报告模板 17 PacketArrival(this, e); else if (Is

34、Equal(e.OriginationAddress) PacketArrival(this, e); / / 定义异常处理类 / public class SniffSocketException : Exception / / 无参构造函数 / public SniffSocketException() / / 带一个参数构造函数 / / public SniffSocketException(string message) : base(message) / / 带两个参数的构造函数 / / / public SniffSocketException(string message, Ex

35、ception innerException) : base(message, innerException) 计算机网络课程设计报告模板 18 / / 判断 IP 是否在是过滤 IP / / / true or false private bool IsEqual(string ip) int i = 0; bool state =false; try string IP1 = ip.Split(.); string IP2 = gustIP.Split(.); long p1 = 0; long p2 = 0; while (i IP1.Length) p1 += int.Parse(IP

36、1i); p2 += int.Parse(IP2i); i+; if (p1 = p2) state = true; catch state = false; ; return state; 计算机网络课程设计报告模板 19 图 5 选择过滤后的结果 六 总结与体会 在这次的课程设计当中遇到的问题不少 ,例如关于网络嗅探器的使用 ,以前从来没接触过网络嗅探器 .做这次的课程设计需要使用到网络嗅探器 ,所以只能通过自己查阅书籍和上网参考资料 ,或者与同学交流 . 通过这次课程设计使我们明白了自己原来的知识还是比较欠缺的 .自己 要学习的东西还太多 ,以前老是觉得自己什么东西都会 ,什么东西都懂

37、,有点眼高手低 .通过这次课程设计 ,我才明白学习是一个长期积累的过程 ,在以后的工作 ,S生活中都应该不断的学习 ,努力提高自己只是和综合素质 .课程设计是每一个大学生在大学生涯中都不可或缺的,它使我们在实践中了 巩固了所学的知识、在实践中锻炼自己的动手能力;实习又是对每一位大学生所学专业知识的一种拓展手段,它让我们学到了很多在课堂上 根本就学不到的知识 ,不仅开阔了自己的视野,增战了自己的见识,也为我们以后进一步走向社会打下 了坚实的基础,是我们走向以后走向工作岗位的奠基石 在这次实验中也使我们的同学关系更进一步了 ,同学之间相互帮助 ,有什么不懂的大家在一起商量 ,听听不同的看法对我们更

38、好的理解知识 . 从抽象的理论回到了丰富的实践创造,细致的了解了计算机网络连接的的全 过程,我利用此次难得的机会,努力完成实验,严格要求自己,认真学习计算机网络的基础理论,学习网络电缆的制作等知识,利用空余时间认真学习一些课本内容以外的相关知识,掌握了一些 基本的实践技能。 计算机网络课程设计报告模板 20 七 参考文献 1Tamara Dean 著 . 陶华敏,韩存兵 ,宋德伟译 .计算机网络实用教程 .机械工业出版社 .2000 2 谢希仁 .计算机网络(第 4 版)电子工业出版社 3 Andrew S.Tanenbaum、 David J.Wetherall. 计算机网络 (英文版第 5版 ). 机械工业出版社 4吴功宜 . 计算机网络课程设计 . 机械工业出版社 /C语言编程 5 王勇 . 计算机网络课程设计(计算机课程设计与综合实践规划教材) . 清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 课程设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报