CN103281335A - 一种基于WinPcap的嵌入式网络协议栈开发方法 - Google Patents

一种基于WinPcap的嵌入式网络协议栈开发方法 Download PDF

Info

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
Application number
CN2013102418756A
Other languages
English (en)
Inventor
方东祥
曾培峰
杨伟勤
丁茹皓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Donghua University
Original Assignee
Donghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Donghua University filed Critical Donghua University
Priority to CN2013102418756A priority Critical patent/CN103281335A/zh
Publication of CN103281335A publication Critical patent/CN103281335A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于WinPcap的嵌入式网络协议栈开发方法,包括以下步骤:将原有运行在嵌入式设备上的***移植到Windows操作***上,在Windows上进行开发、测试;应用程序在使用协议栈时,提供一个将要使用的网卡接口的设备标识符;协议栈进行虚拟驱动的初始化操作;初始化操作后产生数据包捕获线程,该数据包捕获线程中的函数通过网卡循环抓取数据包;然后通过数据包处理函数进行处理;送到协议栈中去处理;协议栈会给每个数据包添加相应的包头;虚拟驱动程序会为数据包添加以太网帧头,进行发包处理;将处理后的数据包通过网卡送到真实的网络上去。本发明具有节省开发成本,提高开发效率等特点。

Description

一种基于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,把它交给协议栈中相应的程序去处理。
发包过程如图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,该函数会一直尝试读取网络上的数据包,直到捕获指定数目的数据包或者发生错误。
CN2013102418756A 2013-06-18 2013-06-18 一种基于WinPcap的嵌入式网络协议栈开发方法 Pending CN103281335A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 华为技术有限公司 模拟网元的方法与装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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