欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年网络协议分析课程设计IP协议 .pdf

    • 资源ID:27883961       资源大小:812.77KB        全文页数:18页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年网络协议分析课程设计IP协议 .pdf

    郑州轻工业学院网络协议分析课程设计设计题目:解析IP 数据包姓名:院 (系) :专业班级:学号:指导教师:成绩:时间:2011 年 6 月 12 日至 2011年 6 月 17 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 18 页 - - - - - - - - - 2 郑州轻工业学院课 程 设 计 任 务 书题目解析 IP 数据包专业、班级学号姓名程序在 Windows窗口环境下捕获IP 数据报,并解析出各个字段信息,显示在窗口中。选定本机 IP 后,程序捕获经过对应网卡的IP 数据报,根据 IP 数据报的结构, 拆分获得各字段的值, 显示在窗口上。 同时程序可以将捕获的所有数据信息导出到日志文件。参考资料:网络协议分析寇晓蕤罗军勇 蔡延荣 机械工业出版社完成期限:2011.6.13-2010.6.17 指 导教 师签 名:课程负责人签名:2010 年 6 月 17 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 18 页 - - - - - - - - - 3 目录第一章引言 .41.1.关于题目 .41.1.1.题目要求 .41.1.2.选题背景 .41.2.关于编译软件.41.3.关于稳定性 .5第二章程序设计 .52.主要功能设计 .52.1.程序流程 .5第三章程序实现 .63.类设计声明 .63.1.RawSocket 类.73.2.EventArgs 类.73.3.Header 结构 .83.4.主要功能的实现 .83.4.1.程序界面 .83.4.2.获得主机IP .93.4.3.显示列表 . 103.4.4.详细信息 . 113.4.5.导出日志 . 12第四章程序测试 . 144.程序测试 . 14总结与体会 . 15附录:. 15名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 18 页 - - - - - - - - - 4 第一章引言1.1. 关于题目1.1.1. 题目要求(1) 捕获网络中的IP 数据包,解析数据包的内容,显示结果,并将结果写入日志文件。(2) 显示的内容包括:捕获的 IP 包的版本、 头长度、 服务类型、 数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源 IP 地址和目的IP 地址等内容。(3) 设置停止标志,当程序接收到停止命令时即停止。1.1.2. 选题背景IP 数据包是网络协议学习过程中容易接触到的,选择这个题目一是为了将自己的所学知识加以运用,二是希望通过探索实践去实现题目,在实践和实际的项目中提高自己的编程能力。因此我选定了这个题目。1.2. 关于编译软件本程序使用C#语言, Microsoft Visual Studio 2005 进行编译。 Visual Studio 是微软公司推出的开发环境,Visual Studio 可以用来创建 Windows 平台下的Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 18 页 - - - - - - - - - 5 1.3. 关于稳定性经测试,本程序可以在windows 操作系统中稳定运行,较为稳定。要求至少安装.Net Framework 2.0 。第二章程序设计2. 主要功能设计根据分析,这个程序要实现如下几个功能,初始化、捕获数据包、显示、导出日志。其中捕获数据包是程序的核心部分,是后续操作的基础。程序结构如图2-1 所示。图 2-1 程序结构图2.1. 程序流程根据分析后的程序结构图设计出相应的流程图。内容主要包括初始化,获得主机 IP 列表,绑定Socket ,开始捕获数据,分析数据,显示数据项,导出日志文件,根据用户操作退出程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - 6 图 2-2 流程图第三章程序实现3. 类设计声明根据程序的结构, 将程序需要实现的功能细化为相应的类属性和成员函数。程序有两个类,一个RawSocket 类,用于数据包相关捕获和处理。一个EventArgs 类,用于类间传递信息。同时还有一个公共结构体,对应IP 数据包的格式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - - - - - 7 3.1. RawSocket类public class RawSocket private bool error_occurred;/ 是否产生错误public bool KeepRunning;/ 是否继续进行private static int len_receive_buf;/ 得到的数据流的长度byte receive_buf_bytes;/ 收到的字节private Socket socket = null; /声明套接字public void Run()/ 开始接收public void CreateAndBindSocket(string IP)/建立并绑定套接字public void Shutdown()/ 停止接收private bool SetSocketOption()/ 设置套接字private void Receive(byte buf, int len) /解析接收的数据包; 3.2. EventArgs类class squar private string ip_version;/ 版本private uint header_length;/ 首部长度private string service_type;/ 服务类型private uint total_packet_length;/ 总长度private string identification;/ 标识private string flags;/ 标志private string fragment_offset;/ 片偏移量private string time_to_live;/ 寿命private string protocol;/ 协议private string checksum;/ 校验和private string destination_address;/ 目的 IP 地址private string origination_address;/ 源 IP 地址private uint message_length; /数据长度; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - 8 3.3. Header 结构public struct IPHeader public byte ip_verlen; public byte ip_tos; public ushort ip_totallength; public ushort ip_id; public ushort ip_offset; public byte ip_ttl; public byte ip_protocol; public ushort ip_checksum; public uint ip_srcaddr; public uint ip_destaddr; 3.4. 主要功能的实现3.4.1. 程序界面菜单栏及工具栏包含了基本操作按钮,包括退出程序,关于信息,选择IP,开始捕获和导出日志。窗体主要为显示报文信息的列表区和具体字段区,分别用树视图显示。具体界面如图3-1 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - 9 图 3-1 3.4.2. 获得主机IP 通过 System 的 Net 类函数,容易获得主机的所有IP。代码如下:private void GetHostIP() string hostName = Dns.GetHostName(); IPHostEntry ipEntry = Dns.GetHostEntry(hostName); IPAddress addr = ipEntry.AddressList; foreach (IPAddress ip in addr) toolStripComboBox1.Items.Add(ip.ToString(); 具体结果如图3-2 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 18 页 - - - - - - - - - 10 图 3-2 3.4.3. 显示列表捕获数据后,触发事件,在事件处理函数里,将传递的参数信息添加到主窗体信息列表里。void rawSocket_PacketArrival(object sender, RawSocket.PacketArrivedEventArgs args) TreeNode rootNode = new TreeNode(); TreeNode ipNode = MakeIPTreeNode(args); rootNode.Nodes.Add(ipNode); rootNode.Text = args.OriginationAddress + - + args.DestinationAddress; AddTreeNode addTreeNode = new AddTreeNode(OnAddTreeNode); reeView1.Invoke(addTreeNode, new object rootNode ); 结果如图3-3 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - - - - - - - - 11 图 3-3 3.4.4. 详细信息点击列表项,该项对应数据包的详细信息会显示在窗体右侧树形显示。private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) TreeNode curr = e.Node; if (curr.Level = 0) treeView2.Nodes.Clear(); TreeNode root = (TreeNode)curr.Nodes0.Clone(); treeView2.Nodes.Add(root); treeView2.ExpandAll(); 结果如图3-4 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 18 页 - - - - - - - - - 12 图 3-4 3.4.5. 导出日志程序可以将当前列表的所有数据保存在日志文件里,默认路径为程序运行目录,以导出时间命名。代码如下:private void toolStripButton2_Click(object sender, EventArgs e) string logName = DateTime.Now.ToString(yyyyMMddhhmmss) + .log;FileStream fs = new FileStream(logName, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); foreach (TreeNode tr1 in treeView1.Nodes) sw.Write(tr1.Text + Environment.NewLine); TreeNode temp = tr1.Nodes0; sw.Write( + temp.Text + Environment.NewLine); foreach (TreeNode tr2 in temp.Nodes) sw.Write( + tr2.Text + Environment.NewLine); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 18 页 - - - - - - - - - 13 sw.Write(Environment.NewLine); sw.Close(); fs.Close(); MessageBox.Show( 日志保存成功!); 结果如图3-5 所示。图 3-5 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - 14 图 3-6 第四章程序测试4. 程序测试经过调试和修改,程序完全实现设计要求,成功抓取了IP 数据包,并分析显示了数据包各字段的信息,达到了这次实训的要求和目的。程序正常运行,能够捕获IP 数据包,显示数据列表和数据项的详细信息,并且成功导出到日志文件。程序欢迎界面如图4-1 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 18 页 - - - - - - - - - 15 图 4-1 总结与体会通过这次课程设计,我收获了很多。 首先把所学知识加以利用和巩固,其次在实践中遇到问题去探索和学习,更增加了新知识。在程序设计编写过程中,使用异步来处理数据包的接受和处理,异步线程要添加数据项到主线程创建的界面,这就需要处理两个线程间的数据交换。使用托管函数调用主线程的控件,添加数据项,实践证明达到了预期的目的,积累了经验。这次的课程设计使我掌握了一定的网络编程知识,同时也掌握了探索问题解决问题的方法。 更好的理解课本的知识,为以后的进一步学习和考试打下良好的基础。附录:程序主要代码/解析接收的数据包,形成PacketArrivedEventArgs时间数据类对象,并引名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 18 页 - - - - - - - - - 16 发 PacketArrival 事件unsafe private void Receive(byte buf, int len) byte temp_tos = 0; byte temp_protocol = 0; uint temp_version = 0; ushort temp_identification = 0; int temp_flags = 0; int temp_fragmentOffset = 0; byte temp_ttl = 0; ushort temp_check = 0; uint temp_ip_srcaddr = 0; uint temp_ip_destaddr = 0; IPAddress temp_ip; PacketArrivedEventArgs e = new PacketArrivedEventArgs(); fixed (byte* fixed_buf = buf) IPHeader* head = (IPHeader*)fixed_buf; temp_version = (uint)(head-ip_verlen & 0 xF0) 4; e.IPVersion = temp_version.ToString(); e.HeaderLength = (uint)(head-ip_verlen & 0 x0F) ip_tos; e.TypeOfService = string.Format(0 x0:x2 (1),temp_tos,temp_tos); temp_identification = head-ip_id; e.Identification = temp_identification.ToString(); temp_flags = (head-ip_offset) 13; e.Flags = temp_flags.ToString(); temp_fragmentOffset = (head-ip_offset) & 0 x1FFF; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 18 页 - - - - - - - - - 17 e.FragmentOffset = temp_fragmentOffset.ToString(); temp_ttl = head-ip_ttl; e.TimeToLive = temp_ttl.ToString(); 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 = UDP; break; default: e.Protocol = UNKNOWN; break; temp_check = head-ip_checksum; e.Checkum = string.Format(0 x0:x2, temp_check); 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(temp_ip_destaddr); e.DestinationAddress = temp_ip.ToString(); e.PacketLength = (uint)len; e.MessageLength = (uint)len - e.HeaderLength; OnPacketArrival(e); /添加数据项private TreeNode MakeIPTreeNode(RawSocket.PacketArrivedEventArgs arg) TreeNode ipNode = new TreeNode(); ipNode.Text = IP 数据包 ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - 18 ipNode.Nodes.Add( 版本 : + arg.IPV ersion); ipNode.Nodes.Add( 首部长度 : + arg.HeaderLength); ipNode.Nodes.Add( 服务类型 : + arg.TypeOfService); ipNode.Nodes.Add( 总长度 : + arg.PacketLength); ipNode.Nodes.Add( 标识 : + arg.Identification); ipNode.Nodes.Add( 标志 : + arg.Flags); ipNode.Nodes.Add( 片偏移量 : + arg.FragmentOffset); ipNode.Nodes.Add( 寿命 : +arg.TimeToLive); ipNode.Nodes.Add( 协议 : + arg.Protocol); ipNode.Nodes.Add( 首部校验和 : + arg.Checkum); ipNode.Nodes.Add( 源 IP 地址 : + arg.OriginationAddress); ipNode.Nodes.Add( 目的 IP 地址 : + arg.DestinationAddress); return ipNode; /保存日志文件private void toolStripButton2_Click(object sender, EventArgs e) string logName = DateTime.Now.ToString(yyyyMMddhhmmss) + .log; FileStream fs = new FileStream(logName, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); foreach (TreeNode tr1 in treeView1.Nodes) sw.Write(tr1.Text + Environment.NewLine); TreeNode temp = tr1.Nodes0; sw.Write( + temp.Text + Environment.NewLine); foreach (TreeNode tr2 in temp.Nodes) sw.Write( + tr2.Text + Environment.NewLine); sw.Write(Environment.NewLine); sw.Close(); fs.Close(); MessageBox.Show( 日志保存成功!); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -

    注意事项

    本文(2022年网络协议分析课程设计IP协议 .pdf)为本站会员(Q****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开