基于sharpcap的数据包捕获应用设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于sharpcap的数据包捕获应用设计

基于Sharpcap的数据包捕获应用设计 摘要:研究了基于Sharpcap的局域网数据包的捕获机制,实现了.NET平台下的原始数据包捕获应用设计,解决了.Net下使用原始套接字抓包慢、丢包严重的问题,填补了.Net程序员捕获原始数据包的空白,实践证明此方法快速、准确、稳定、高效。关键词: Sharpcap;数据包;捕获;C#;.Net; 引言 Internet的飞速发展使网络用户及规模逐渐变大,网络维护与安全日益重要。C++开发人员用Winpcap来捕获底层数据包,Java开发人员Jpcap来捕获底层数据包C#程序员使用原始套接字进行网络抓包,但是Raw Socket不仅只能抓IP层以上的包,且抓包慢、丢包严重的缺陷一直困扰着大家,因此底层网络控制被定位为.Net的软肋。本文介绍了.Net 平台下使用Sharpcap捕获原始数据包的始末,并展示了C#编写的程序运行界面,希望以此帮助那些想在.Net平台下对捕获原始数据包而束手无策的人。 局域网数据包捕获原理 局域网使用的是广播信道,从一个站点可以很方便的访问全网。计算机与外界局域网的连接是通过通信适配器(Adapter),适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的。所谓广播通信就是一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。为了在总线上实现一对一通信,每个计算机都配备了全球唯一的MAC地址,在发送数据帧时,在帧的首部写明接收站的地址,总线上的每台计算机在检测到该数据帧时,适配器都会把数据帧的地址与自己的MAC地址匹配,如果一致则接收,否则丢弃。但是为了管理网络,适配器有一种特殊的工作模式:混杂模式,在该模式下适配器会接收总线上所有的数据帧,这就是数据包捕获的基本原理。 Sharpcap简介 SharpPcap是Tamir Gal专门为.Net开发环境写的数据包捕获框架,它是Winpcap组件和Windows网络核心函数的完美结合。该程序集继承Winpcap又超越Winpcap,它采用了消息机制,将面向对象的优越性表现的淋漓尽致,同时还集成了部分网络API函数和读取注册表的API函数,。它封装了接口类、异常类、事件类、数据包类等32个类,适用于C#.Net、VB.Net。 3.1 Sharpcap中主要类的功能 (1)LivePcapDeviceList类获取计算机的网卡列表。该类有1个字段,2个属性,4个方法,主要是获取本机的网卡列表和刷新列表。 (2)LivePcapDevice类封装了网卡所有的功能,如捕获、发送、过滤等。该类有2个阻塞设置字段,7个网卡信息属性,12个网卡操作方法,其中打开网卡方法2次重载,发送包方法3次重载,另外还有网卡流量统计信息方法、队列发送方法。由于它继承了PcapDevice类,因此还有网卡过滤设置方法,发送文件,关闭文件方法,缓冲区设置方法,捕捉方法,延时设置等多种方法。 (3)DeviceMode类枚举类网卡工作模式。它指定网卡的工作模式是正常还是混杂。 (4)PcapInterface类封装了本机适配器的所有信息。该类有7个属性用来描述适配器名称、标志,本机IP、MAC,网关地址等信息。 (5)PcapStatistics、StatisticsModePacket类负责网络统计信息。PcapStatistics类用来统计适配器接收到的包,丢弃的包数目。 (6)SendQueue类负责发送包队列处理。 (7)Sockaddr、Sockaddr.Type类解决了地址簇的问题;PcapUnmanagedStructure类封装了Winpcap总用到的结构体和常量。 (8)WinPcapRequiredException、PacketArrivalEventHandler、CaptureStoppedEventHandler类定义了Sharpcap中产生的所有的异常、消息。 (9)ARP类封装了ARP协议的所有功能。它提供了2个重载构造函数,3个属性用来设置ARP协议的几个参数,一个方法获取目标主机的MAC地址。 (10)MiscUtil.Conversion、MiscUtil.IO、PacketDotNet等接口类负责所有的接口定义。 3.2 Sharpcap结构图 该结构图从类的层次关系角度出发,直观形象的展示了Sharpcap程序集中主要类的派生关系。理解类与类之间的关系是面向对象设计的瓶颈,与此同时,还对开发人员在使用Sharpcap过程中调试代码大有裨益。 图13.3 Sharpcap的使用步骤1安装Winpcap。Winpcap有安装包和开发包两种,在这只需要安装包,运行Setup即可完成安装。 (2)在命名空间外添加using SharpPcap; (3)在解决方案内添加引用,导入SharpPcap

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档