[发明专利]一种基于WinPcap的嵌入式网络协议栈开发方法无效
申请号: | 201310241875.6 | 申请日: | 2013-06-18 |
公开(公告)号: | CN103281335A | 公开(公告)日: | 2013-09-04 |
发明(设计)人: | 方东祥;曾培峰;杨伟勤;丁茹皓 | 申请(专利权)人: | 东华大学 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 上海申汇专利代理有限公司 31001 | 代理人: | 翁若莹 |
地址: | 201620 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 winpcap 嵌入式 网络 协议 开发 方法 | ||
技术领域
本发明涉及一种嵌入式网络开发方法,尤其涉及一种基于WinPcap的嵌入式网络协议栈开发方法,属于网络开发领域。
背景技术
在基于嵌入式的网络协议栈开发中,需要使用嵌入式设备来实现网络通信。实际项目中,往往是一个团队来共同完成一个项目,在开发过程中很多成员都需要调试程序,这就需要有多个硬件设备来配合调试。这样的开发方式需要将程序烧入到嵌入式设备上,启动调试的过程比较慢,开发效率低下。又由于硬件成本较贵而且容易损坏,这样的开发方式成本很高。
发明内容
本发明要解决的技术问题是:目前的开发方式是使用嵌入式设备来实现网络通信,嵌入式设备成本贵,在嵌入式设备上调试程序效率低,因此,需要一种开发成本低,开发效率高的开发方法。
为了解决上述技术问题,本发明的技术方案是提供了一种基于WinPcap的嵌入式网络协议栈开发方法,其特征在于,包括以下步骤:
步骤1:将原有运行在嵌入式设备上的系统移植到Windows操作系统上,在Windows上进行开发、测试;
步骤2:应用程序在使用协议栈时,提供一个将要使用的网卡接口的设备标识符;
步骤3:协议栈进行虚拟驱动的初始化操作;
步骤4:初始化操作后产生数据包捕获线程,该数据包捕获线程中的函数通过Windows操作系统上的网卡循环抓取数据包;
步骤5:将抓取的数据包通过数据包处理函数进行处理;
步骤6:将处理后的数据包送到协议栈中去处理;
步骤7:协议栈会给每个数据包添加相应的包头;
步骤8:当数据包到达网络接口层时,虚拟驱动程序会为数据包添加以太网帧头,进行发包处理;
步骤9:将处理后的数据包通过网卡送到真实的网络上去。
优选地,所述步骤3中的初始化操作主要实现两个功能:一个功能是根据用户提供的设备标识符打开指定的网络适配器;另一个功能是创建一个用于捕获网络数据包的线程。
优选地,所述步骤4的数据包捕获线程中会调用WinPcap API pcap_loop,该函数会一直尝试读取网络上的数据包,直到捕获指定数目的数据包或者发生错误。
本发明在进行嵌入式网络协议栈的开发时,可以避免直接在嵌入式设备上进行开发,节省了大量设备的投入,节约开发成本。在PC上开发不需要将代码下载到嵌入式设备上,节省时间,提高了开发效率。
附图说明
图1为本发明的程序架构图;
图2为本发明的调试环境的示意图。
具体实施方式
为使本发明更明显易懂,兹以优选实施例,并配合附图作详细说明如下。
本发明为一种基于WinPcap的嵌入式网络协议栈开发方法,其将原有运行在嵌入式设备上的系统移植到Windows操作系统上,在Windows上进行开发、测试。
真实的嵌入式设备有特定的网卡驱动来进行网络数据包的收发,Windows并没有专用的驱动来支持移植后的程序,因此需要一种方法来让程序在真实网络上进行数据包的收发,也就是需要从网卡抓取数据包到应用程序,并将应用程序的数据包通过网卡送到网络上去。
本发明的具体流程如图1所示,应用程序在使用协议栈时,要求提供一个将要使用的网卡接口的设备标识符,然后协议栈会进行虚拟驱动的初始化操作。初始化操作中主要实现两个功能,一个是根据用户提供的设备标识符打开指定的网络适配器,这里会使用WinPcap提供的API pcap_open。第二个功能是创建一个用于捕获网络数据包的线程。
收包过程如图1中的双点划线所示,首先在数据包捕获线程中会调用WinPcap API pcap_loop,该函数会一直尝试读取网络上的数据包,直到捕获指定数目的数据包或者发生错误。该系统的对捕获数据包的数量没有要求,故将对应参数设置为0,指定该函数一直循环工作。一旦捕获一个数据包,pcap_loop会以回调函数的形式将该数据包交给一个指定的函数去处理。在该处理函数中,会将该数据包从WinPcap的缓冲区拷贝到定义的符合协议栈要求的缓冲区中去,即将处理后的数据包送到协议栈中去处理。然后去掉以太网帧头部,真实的网卡驱动程序已经进行过了以太网帧的校验,这里没有再进行计算。对于去掉以太网帧头的数据包,会根据上层协议的类型,IP、ARP或者RARP,把它交给协议栈中相应的程序去处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东华大学,未经东华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310241875.6/2.html,转载请声明来源钻瓜专利网。