CN103281335A - 一种基于WinPcap的嵌入式网络协议栈开发方法 - Google Patents
一种基于WinPcap的嵌入式网络协议栈开发方法 Download PDFInfo
- Publication number
- CN103281335A CN103281335A CN2013102418756A CN201310241875A CN103281335A CN 103281335 A CN103281335 A CN 103281335A CN 2013102418756 A CN2013102418756 A CN 2013102418756A CN 201310241875 A CN201310241875 A CN 201310241875A CN 103281335 A CN103281335 A CN 103281335A
- Authority
- CN
- China
- Prior art keywords
- protocol stack
- packet
- network
- winpcap
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于WinPcap的嵌入式网络协议栈开发方法,包括以下步骤:将原有运行在嵌入式设备上的***移植到Windows操作***上,在Windows上进行开发、测试;应用程序在使用协议栈时,提供一个将要使用的网卡接口的设备标识符;协议栈进行虚拟驱动的初始化操作;初始化操作后产生数据包捕获线程,该数据包捕获线程中的函数通过网卡循环抓取数据包;然后通过数据包处理函数进行处理;送到协议栈中去处理;协议栈会给每个数据包添加相应的包头;虚拟驱动程序会为数据包添加以太网帧头,进行发包处理;将处理后的数据包通过网卡送到真实的网络上去。本发明具有节省开发成本,提高开发效率等特点。
Description
技术领域
本发明涉及一种嵌入式网络开发方法,尤其涉及一种基于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,把它交给协议栈中相应的程序去处理。
发包过程如图1中的点划线所示,协议栈会给每个数据包添加相应的包头,WinPcap对数据包不会进行任何封装。当数据包到达网络接口层时,虚拟驱动程序会为数据包添加以太网帧头,进行发包处理,但不计算帧校验序列,因为真实的网卡驱动会进行计算(硬件计算,速度更快)。然后把以太网数据包交给WinPcap提供的API pcap_sendpacket,该API会把数据包发送到真实的网络中去,即将处理后的数据包通过网卡送到真实的网络上去。
本发明主要使用的开发库是WinPcap,WinPcap是由意大利人FulvioRisso和Loris Degioanni等提出并实现的,它是Windows平台下的网络数据包捕获函数库,它允许应用程序绕过Windows的网络协议栈抓取和发送数据包,还提供内核级别的数据包过滤器,减少不必要的数据包的抓捕。WinPcap是许多著名网络工具的抓包和过滤引擎,包括Wireshark,Nmap,Snort等,可见它是一个标准的,业界认可的数据包捕获函数库。本发明利用WinPcap的抓包功能实现待开发协议栈的收包驱动,利用WinPcap发包功能实现待开发协议栈的发包驱动。
下面以某个协议栈的开发为实施具体说明本发明的技术内容:
传统的操作,用户需要修改协议栈LwIP的某些功能,开发过程中需要使用嵌入式设备来进行程序的调试。其存在两个问题,嵌入式设备成本贵,在嵌入式设备上调试程序效率低。
用户使用本发明提出的方法,不存在以上出现的问题。首先,将LwIP移植到Windows上,安装WinPcap软件,该软件提供底层驱动,在协议栈LwIP的网络接口层,按照本发明提出的方法实现虚拟驱动。完成之后,用户可以部署图2中所示的调试环境,在一台PC上安装多个网卡,这样就会有多个对应的虚拟驱动。这样就可以在一台PC上模拟多个嵌入式设备,实现嵌入式设备之间的通信。
Claims (3)
1.一种基于WinPcap的嵌入式网络协议栈开发方法,其特征在于,包括以下步骤:
步骤1:将原有运行在嵌入式设备上的***移植到Windows操作***上,在Windows上进行开发、测试;
步骤2:应用程序在使用协议栈时,提供一个将要使用的网卡接口的设备标识符;
步骤3:协议栈进行虚拟驱动的初始化操作;
步骤4:初始化操作后产生数据包捕获线程,该数据包捕获线程中的函数通过Windows操作***上的网卡循环抓取数据包;
步骤5:将抓取的数据包通过数据包处理函数进行处理;
步骤6:将处理后的数据包送到协议栈中去处理;
步骤7:协议栈会给每个数据包添加相应的包头;
步骤8:当数据包到达网络接口层时,虚拟驱动程序会为数据包添加以太网帧头,进行发包处理;
步骤9:将处理后的数据包通过网卡送到真实的网络上去。
2.如权利要求1所述的一种基于WinPcap的嵌入式网络协议栈开发方法,其特征在于,所述步骤3中的初始化操作主要实现两个功能:一个功能是根据用户提供的设备标识符打开指定的网络适配器;另一个功能是创建一个用于捕获网络数据包的线程。
3.如权利要求1所述的一种基于WinPcap的嵌入式网络协议栈开发方法,其特征在于,所述步骤4的数据包捕获线程中会调用WinPcap API pcap_loop,该函数会一直尝试读取网络上的数据包,直到捕获指定数目的数据包或者发生错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102418756A CN103281335A (zh) | 2013-06-18 | 2013-06-18 | 一种基于WinPcap的嵌入式网络协议栈开发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102418756A CN103281335A (zh) | 2013-06-18 | 2013-06-18 | 一种基于WinPcap的嵌入式网络协议栈开发方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103281335A true CN103281335A (zh) | 2013-09-04 |
Family
ID=49063782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102418756A Pending CN103281335A (zh) | 2013-06-18 | 2013-06-18 | 一种基于WinPcap的嵌入式网络协议栈开发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103281335A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104125117A (zh) * | 2014-08-04 | 2014-10-29 | 上海斐讯数据通信技术有限公司 | 一种收发包测试方法 |
CN104468279A (zh) * | 2014-12-22 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 一种路由协议交互的测试方法和测试工具 |
CN106571978A (zh) * | 2016-10-28 | 2017-04-19 | 东软集团股份有限公司 | 数据包捕获方法及装置 |
CN107070809A (zh) * | 2017-04-11 | 2017-08-18 | 南通大学 | 一种大规模传感器数据的实时转发方法 |
CN109756517A (zh) * | 2019-03-05 | 2019-05-14 | 中国科学院软件研究所 | 一种基于winpcap的高速网络数据传输方法 |
CN111641623A (zh) * | 2020-05-22 | 2020-09-08 | 中国航空无线电电子研究所 | 一种基于WinPcap的AFDX协议栈构建方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101175073A (zh) * | 2006-11-01 | 2008-05-07 | 英业达股份有限公司 | 基于硬盘控制器的双控制器通讯***及其方法 |
CN101426000A (zh) * | 2007-10-30 | 2009-05-06 | 北京启明星辰信息技术有限公司 | 一种通用协议解析方法及*** |
CN102946395A (zh) * | 2012-11-23 | 2013-02-27 | 华为技术有限公司 | 模拟网元的方法与装置 |
-
2013
- 2013-06-18 CN CN2013102418756A patent/CN103281335A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101175073A (zh) * | 2006-11-01 | 2008-05-07 | 英业达股份有限公司 | 基于硬盘控制器的双控制器通讯***及其方法 |
CN101426000A (zh) * | 2007-10-30 | 2009-05-06 | 北京启明星辰信息技术有限公司 | 一种通用协议解析方法及*** |
CN102946395A (zh) * | 2012-11-23 | 2013-02-27 | 华为技术有限公司 | 模拟网元的方法与装置 |
Non-Patent Citations (1)
Title |
---|
XIAOFAN LU,等: "Design and Research Based on WinPcap Network Protocol Analysis System", 《PROCEEDINGS OF 2010 INTERNATIONAL CONFERENCE ON COMPUTER,MECHATRONICS, CONTROL AND ELECTRONIC ENGINEERING》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104125117A (zh) * | 2014-08-04 | 2014-10-29 | 上海斐讯数据通信技术有限公司 | 一种收发包测试方法 |
CN104468279A (zh) * | 2014-12-22 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 一种路由协议交互的测试方法和测试工具 |
CN106571978A (zh) * | 2016-10-28 | 2017-04-19 | 东软集团股份有限公司 | 数据包捕获方法及装置 |
CN106571978B (zh) * | 2016-10-28 | 2020-11-27 | 东软集团股份有限公司 | 数据包捕获方法及装置 |
CN107070809A (zh) * | 2017-04-11 | 2017-08-18 | 南通大学 | 一种大规模传感器数据的实时转发方法 |
CN107070809B (zh) * | 2017-04-11 | 2020-05-12 | 南通大学 | 一种大规模传感器数据的实时转发方法 |
CN109756517A (zh) * | 2019-03-05 | 2019-05-14 | 中国科学院软件研究所 | 一种基于winpcap的高速网络数据传输方法 |
CN111641623A (zh) * | 2020-05-22 | 2020-09-08 | 中国航空无线电电子研究所 | 一种基于WinPcap的AFDX协议栈构建方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103281335A (zh) | 一种基于WinPcap的嵌入式网络协议栈开发方法 | |
CN106656801B (zh) | 业务流的转发路径的重定向方法、装置和业务流转发*** | |
CN100369423C (zh) | 网络仿真测试***及方法 | |
CN103346980B (zh) | 一种业务调度方法、装置及网络设备 | |
CN108881158A (zh) | 数据交互***和方法 | |
CN109981403A (zh) | 虚拟机网络数据流量监控方法及装置 | |
CN104766007A (zh) | 一种基于文件***过滤驱动实现沙箱快速恢复的方法 | |
CN109617878A (zh) | 一种蜜网的组建方法及***、计算机可读存储介质 | |
US10334084B2 (en) | Communication method and system based on assembled communication protocol stack | |
CN111163043B (zh) | 一种源网荷***实时交互协议深度解析方法和*** | |
CN104778042A (zh) | 一种基于事件流处理和插件式开发框架的流数据处理方法 | |
CN104683428B (zh) | 网络业务处理方法与装置 | |
WO2016015511A1 (zh) | 一种网管测试事件的数据包模拟方法、装置及计算机存储介质 | |
Ivey et al. | Comparing a scalable SDN simulation framework built on ns-3 and DCE with existing SDN simulators and emulators | |
CN103260190A (zh) | 基于演进分组***网路的安全审计***及其方法 | |
Li et al. | Programming network stack for middleboxes with Rubik | |
CN105808287B (zh) | 一种重启网络服务的方法及*** | |
CN102315981B (zh) | 一种演进分组核心网设备的测试设备及方法 | |
CN104065486A (zh) | 一种加密策略匹配算法模块验证平台及其实现方法 | |
CN107070809A (zh) | 一种大规模传感器数据的实时转发方法 | |
CN103415085A (zh) | 一种通用mac协议处理器的自动生成方法 | |
CN104660506B (zh) | 一种数据包转发的方法、装置及*** | |
Pinczel et al. | Towards high performance packet processing for 5G | |
CN110493210A (zh) | 一种基于sdn的可配置网络安全实验*** | |
CN105577453A (zh) | 一种实现移动端应用测试的***和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130904 |