基于WINPCAP的GOOSE报文捕获分析工具开发.doc

基于WINPCAP的GOOSE报文捕获分析工具开发.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WINPCAP网络开发包是一个免费、基于Windows平台、访问网络链路层的工具,它允许各种应用程序绕过协议栈捕捉并传送网络数据包,同时还包括一些其他功能,如包过滤、网络流量统计以及远程捕获等。基于这一开发包,可以方便地开发出面向通用对象的变电站事件(GOOSE)报文的捕捉工具,进而根据ASN.1/BER对报文进行解码并分析。文中介绍了如何基于WINPCAP开发包开发一个完整的GOOSE报文捕获工具,以及整个的设计思路和实现过程,并提出了一些可能的应用。0 引言 ??? 当前,国内厂商对IEC 61850的开发工作已经从以制造报文规范(MMS)为核心的客户/服务器(C/S)服务实现转到面向通用对象的变电站事件(GOOSE)和IEC 61850-9-1/2的实现上来。GOOSE通信及其应用是IEC 61850的一个亮点,其出发点是功能的分布式实现口],GOOSE应用的建立需要多方面配合,同时也是一个较为烦琐的工程。在工程的调试过程中,对GOOSE报文的分析是一个必不可少的步骤,即检查数据发送是否正确及其时间特性。因此,如果有一个简捷的工具来捕捉与分析IEC 61850报文,将会有助于工程调试的顺利进行。 ??? WINPCAP(Windows packet capture)网络开发包是一个免费、基于Windows平台、访问网络链路层的工业标准工具,它允许各种应用程序绕过协议栈捕捉并传送网络数据包,同时还包括一些其他功能,如包过滤、网络流量统计以及远程捕获等。基于这一开发包,可以方便地开发出GOOSE报文的捕捉工具,进而根据ASN.1/BER对报文进行解码并分析。 ??? 本文介绍了如何基于WINPCAP开发包开发一个完整的GOOSE报文捕获工具,以及整个设计思路和实现过程,并提出了一些可能的应用。希望能够为IEC 61850标准在中国的推广做出一些贡献。 ??? 1 WINPCAP简介 ??? 1.1 内部结构 ??? WINPCAP是一个Win32平台下用于抓包和分析的系统,其基本构成如图1所示。它包含一个运行于操作系统内核级的模块,与网络设备驱动接口直接连接,这一模块直接绕过了系统的协议栈。为了让用户程序使用内核提供的功能,WINPCAP提供了多个编程接口分别封装在2个不同的动态链接库packet.d11和wpcap.d11中。packet.dll提供一个底层的应用程序接口(API),通过这个API可直接访问网络设备驱动,而独立于Microsoft操作系统;wpcap.dll是一个高层的强大捕获程序库,与Unix下的libpcap兼容,它独立于下层的网络硬件和操作系统。 ??? ??? 1.2 捕获数据包的接口与方法 ? WINPCAP有捕获数据包、发送数据包、统计网络流量3个主要功能。捕获数据包的基本流程如下: ??? ⑴通过接口函数pcap_findalldevs_ex枚举所有可用的网络设备。 ??? ⑵根据枚举返回的网络设备名称打开一个设备,对应接口函数为pcap_open( )。 ??? ⑶如果需要,设置数据包的过滤条件,对应接口函数为pcap_setfilter。 ??? ⑷捕获原始的数据包,有2种方法:一种方法是以回调函数的方式由接口pcap_loop或pcap_dispatch完成,其基本方法是底层收集数据包,当满足一定的条件(timeout或者缓冲区满),就调用回调函数,把收集到的原始数据包通过数据缓存区交给用户;另一种方法是pcap_next_ex( )的方法,每当一个包到达以后,接口pcap_next_ex就会返回,返回的数据缓冲区中只包含一个包。 ??? 本文采用。pcap_next_ex的方法,并且设置了包过滤的条件,只捕获类型为GOOSE的数据包,即EtherType为0x88的数据包。 ??? 2 程序设计与开发 ??? 2.1 初始化 ??? 初始化工作包括2个部分:一是人机界面中协议数据单元(PDU)列表控件实例与GOOSE数据集列表控件实例的初始化,包括列名称、列宽度等相关属性;二是网络设备的枚举及显示,枚举可用设备的接口函数为pcap_findalldevs( ),调用方法如下: ??? If (pcap_findalldevs(m_pAlldevs, errbuf)==-1) return FALSE; ??? 如果成功地枚举到可用的网络设备,网络设备的相关信息将返回到列表m_pAlldevs中,网络设备的信息包括设备的唯一识别名称及其可读的描述内容,然后将其显示在一个下拉列表中供用户选择。 ??? 2.2 捕获线程的建立和用户的交互 ??? 网络数据的捕获需要为其单独建立一个后台工作线程。当选定网络设备后,点击启动按钮,就启动后台工作线程。后台工作线程与界面线程的交互通过消息机制来完成

文档评论(0)

godaddy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档