CN109756517A - 一种基于winpcap的高速网络数据传输方法 - Google Patents

一种基于winpcap的高速网络数据传输方法 Download PDF

Info

Publication number
CN109756517A
CN109756517A CN201910162334.1A CN201910162334A CN109756517A CN 109756517 A CN109756517 A CN 109756517A CN 201910162334 A CN201910162334 A CN 201910162334A CN 109756517 A CN109756517 A CN 109756517A
Authority
CN
China
Prior art keywords
data
host
winpcap
packet
network
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.)
Granted
Application number
CN201910162334.1A
Other languages
English (en)
Other versions
CN109756517B (zh
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.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
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 Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN201910162334.1A priority Critical patent/CN109756517B/zh
Publication of CN109756517A publication Critical patent/CN109756517A/zh
Application granted granted Critical
Publication of CN109756517B publication Critical patent/CN109756517B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种基于winpcap的高速网络数据传输方法,以一种基于winpcap的主机与嵌入式设备高速网络数据传输方法为例,主机通过winpcap网络接口发送和接收网络数据包,winpcap接口运行于windows系统之上,通过网卡驱动访问网卡硬件,从而减少了TCP/IP协议栈组包和拆包的开销。主机包含处理器、储存器和网卡,存储器上有输入数据buffer,参数数据buffer和输出数据buffer。主机通过winpcap接口将输入数据和参数数据发送到嵌入式设备,并且通过winpcap网络接口将结果数据从嵌入式设备接收回来,并负责完成相应的发送数据包、接收数据包和应答包等的组包和拆包操作,以及相应buffer的读写操作。这样在windows系统网络硬件固定的情况下,提高了windows系统下网络传输的效率,更加充分地利用了网络带宽。

Description

一种基于winpcap的高速网络数据传输方法
技术领域
本发明涉及一种基于winpcap的高速网络数据传输方法,尤其涉及一种不经过TCP/IP协议栈的,基于winpcap的主机端网络传输方法,属于网络开发领域。
背景技术
winpcap在windows平台下为应用程序提供访问底层网络的能力,可用于windows系统下的直接的网络编程。winpcap能够实现windows系统下的底层网络抓包和发包。因此,可以将自己组好的不包含TCP/IP包头的网络包通过winpcap接口发送出去,也可以接收其他设备发送过来的不包含TCP/IP包头的网络包。
在实时性要求比较高的场景下,相比于发送和接收包含TCP/IP包头的网络包,发送和接收不包含TCP/IP包头的简单网络包可以节省很多TCP/IP协议栈消耗的时间,从而能够在有限的网卡硬件资源条件下,更加充分地利用网卡的带宽,提高网络传输的速率。
现有的专利相关文献如下:
(1)CN103281335:一种基于winpcap的嵌入式网络协议栈开发。
(2)CN103064064:WinPcap+千兆以太网外辐射源雷达数据传输方法。
专利号为CN103281335的专利也采用了winpcap,但是他们主要是为了克服嵌入式设备上调试程序的困难,将嵌入式设备上的网络协议栈的开发移植到了windows系统上进行开发、测试,本质上还是有协议栈的,只能提高嵌入式开发的效率,并不能提高网络传输的速率,在网络硬件设备固定的情况下,并不能充分利用网络带宽。专利号为CN103064064的专利,主要采用winpcap用于捕获外辐射源雷达信号的网络数据包,并未考虑提升网络传输速率。
发明内容
本发明的技术解决的问题:克服现有技术的不足,提供一种基于winpcap的高速网络数据传输方法,主机通过winpcap网络接口发送和接收网络数据包,从而减少了在TCP/IP协议栈上组包和拆包的开销,提高了windows系统下的网络传输速率,在网络硬件设备固定的情况下,更加充分地利用了网络带宽。
本发明的技术方案:一种基于winpcap的高速网络数据传输方法,尤其是一种基于winpcap的主机与嵌入式设备高速网络数据传输方法。所述主机包含处理器、存储器和网卡,所述存储器上有输入数据buffer,参数数据buffer和输出数据buffer。所述嵌入式设备内部包含加速计算模块和网卡。
本发明的一种基于winpcap的高速网络数据传输方法,包括:主机,主机通过winpcap接口发送数据,主机通过winpcap接口接收数据。
所述主机由处理器,网卡和包含输入数据buffer、参数数据buffer和输出数据buffer的存储器构成。
所述主机通过winpcap接口发送数据时,主机需要判断是否更新发送到嵌入式设备端的参数文件。
所述主机通过winpcap接口发送数据时,主机需要对要发送的参数数据和输入数据按照相应的格式进行组包,得到参数数据包和输入数据包。
所述主机通过winpcap接口接收数据时,主机需要准备好存放接收数据的buffer,对接收到的应答包和结果数据包进行拆包。
所述主机通过winpcap接口发送和接收数据时,需要对发送数据或者接收数据的最后一个不满数据长度的尾包进行处理,计算出来尾包的数据长度,并进行单独组包和拆包。
所述主机通过winpcap接口接收数据时,需要接收计算结果数据和接收来自嵌入式设备的应答包。
所述主机对接收到的结果数据包和应答包进行拆包,得到相应的计算结果数据或者应答信息。
本发明方法的完整工作流程如下:
步骤1:打开主机的winpcap网络接口。
步骤2:主机判断是否需要更新嵌入式设备端加速计算所需的参数文件,若需要更新,则执行步骤3,否则,跳到步骤5执行。
步骤3:主机端准备好需要发送的参数数据等相关信息并按指定格式进行组包,得到参数数据包。
步骤4:主机端将参数数据包通过winpcap网络接口发送到嵌入式设备端。
步骤5:主机端准备好存放要发送的输入数据等相关信息,并组好输入数据包。
步骤6:主机端将步骤5组好的输入数据包发送到嵌入式设备端。
步骤7:主机端准备好要接收的嵌入式设备端输出数据的buffer地址等信息。
步骤8:主机端接收来自嵌入式设备端的输出数据,并存储在主机端。
步骤9:判断主机端的输入数据是否处理完毕,若处理完毕,则执行步骤10;否则,回到步骤2执行。
步骤10:关闭主机端的winpcap网络接口。
本发明与现有技术相比的优点在于:
(1)本发明涉及的一种基于winpcap的高速网络数据传输方法,适用于主机与嵌入式设备之间的网络传输。当主机和嵌入式设备之间需要较高的网络传输速率时,可以在主机端基于winpcap接口完成网络发送和接收任务,从而保证较高的网络传输速率。
(2)本发明中,主机通过winpcap网络接口发送和接收网络数据包,从而减少了TCP/IP协议栈组包和拆包的开销。主机包含处理器、储存器和网卡,存储器上有输入数据buffer,参数数据buffer和输出数据buffer。主机通过winpcap接口将输入数据和参数数据发送到嵌入式设备,并且通过winpcap网络接口将结果数据从嵌入式设备接收回来,并负责完成相应的发送数据包、接收数据包和应答包等的组包和拆包操作,以及相应buffer的读写操作。这样在windows系统网络硬件固定的情况下,提高了windows系统下网络传输的效率,更加充分地利用了网络带宽。
附图说明
图1为本发明中主机与嵌入式设备之间发送和接收数据的模块图;
图2为本发明中主机通过winpcap接口发送和接收数据总体操作流程图;
图3为本发明中主机通过winpcap接口发送网络包的操作流程图;
图4为本发明中主机通过winpcap接口接收网络包的操作流程图。
具体实施方式
下面通过具体实施例和附图,对本发明做详细的说明。
图1为本发明中主机与嵌入式设备间高速网络数据传输的模块图。主机部分主要包含处理器,存储器和网卡,处理器和网卡通过总线读写存储器中的输入数据buffer、参数数据buffer和输出数据buffer。主机和嵌入式设备通过网卡发送和接收网络数据包。主机从输入数据buffer和参数数据buffer中取数据,组包后通过winpcap网络接口将组好的数据包发送到嵌入式设备,嵌入式设备处理完数据后,再将结果数据发送到主机,主机通过winpcap网络接口接收输出数据包,并将数据包中的数据拆出来存放到输出数据buffer中。winpcap接口运行于windows操作系统之上,需要网卡驱动的支持才能访问网卡硬件设备。完整的发送和接收网络数据的流程如图2所示。
图2为本发明中主机与嵌入式设备间高速网络数据传输的整体工作流程图,具体操作步骤如下:
步骤1:打开主机端的winpcap网络接口。
步骤2:判断是否需要更新嵌入式设备端加速计算所需的参数文件,若需要更新,则执行步骤3,否则,跳到步骤7执行。
步骤3:主机端准备好需要发送的存放参数数据的buffer和参数数据的长度。
步骤4:主机端确定出嵌入式设备端存放参数数据的buffer的地址。
步骤5:主机端准备好是否需要嵌入式设备进行加速计算的标志信息。
步骤6:主机端将参数数据发送到步骤4准备好的嵌入式设备端的参数buffer中。
步骤7:主机端准备好存放要发送的输入到嵌入式设备的输入数据的buffer和输入数据的长度。
步骤8:主机端准备好嵌入式设备端存放输入数据的buffer的地址。
步骤9:主机端准备好是否需要嵌入式设备端进行加速计算的标志信息。
步骤10:主机端将其输入数据buffer中的数据发送到嵌入式设备端的输入buffer中。
步骤11:主机端准备好要接收的嵌入式设备端输出数据的buffer地址和输出数据的长度。
步骤12:主机端准备好嵌入式设备端存放输出数据的buffer地址。
步骤13:主机端接收来自嵌入式设备端的输出buffer中的数据,并存储在主机端的输出buffer中。
步骤14:判断主机端的输入数据是否处理完毕,若处理完毕,则执行步骤15;否则,回到步骤2执行。
步骤15:关闭主机端的winpcap网络接口。
这里提到的主机端发送输入数据和参数数据到嵌入式设备端的操作流程如图3所示,主机端接收来自嵌入式设备端的输出数据的操作流程如图4所示。
图3为本发明中主机通过winpcap接口发送网络包的操作流程图,具体操作步骤如下。
步骤1:主机端获取存放要发送的输入(参数)数据的buffer和数据长度。
步骤2:主机端获取嵌入式设备端存放输入(参数)数据的buffer地址。
步骤3:主机端获取是否需要嵌入式设备进行加速计算的标志信息。
步骤4:主机端根据步骤1到步骤3的信息组发送任务包。
步骤5:主机端通过winpcap接口将步骤4组好的发送任务包发送到嵌入式设备。
步骤6:主机端计算单个数据包的数据长度,单组数据包的数据长度,完整组的个数,不完整组的数据长度,不完整组包含的数据包个数和不完整长度数据包的数据长度。
步骤7:判断主机端当前发送的是否为最后一个完整组,若不是最后一个完整组,则执行步骤8;否则,跳到步骤18执行。
步骤8:主机端接收来自嵌入式设备端的网络包。
步骤9:主机端判断接收是否出错,若没有出错,则执行步骤10,否则,跳到步骤31执行。
步骤10:主机端判断接收是否超时,若没有超时,则执行步骤11,否则,跳到步骤17执行。
步骤11:主机端判断接收到的网络包是否为应答包,若为应答包,则执行步骤12,否则,跳到步骤8执行。
步骤12:主机端判断循环计数器1的当前值是否小于单组的包个数,若小于单组的包个数,则执行步骤13,否则,跳到步骤7执行。
步骤13:主机从要发送的输入(参数)数据buffer中取数据,添加主机和嵌入式设备的MAC地址,数据包标志信息后组不包含TCP/IP头部的数据包。
步骤14:主机端通过winpcap接口将步骤13组好的数据包发送到嵌入式设备端。
步骤15:主机端要发送的输入(参数)数据buffer的地址增加一个包的数据长度。
步骤16:主机端的循环计数器1加1计数,回到步骤12执行。
步骤17:再次通过主机的winpcap接口将发送任务包发送到嵌入式设备,并回到步骤8执行。
步骤18:主机端判断不完整组的数据长度是否大于0,若大于0,则执行步骤19,否则跳到步骤31执行。
步骤19:主机端接收来自嵌入式设备的网络包。
步骤20:主机端判断接收是否出错,若接收没有出错,则执行步骤21,否则跳到步骤31执行。
步骤21:主机端判断接收是否超时,若没有超时,则执行步骤22,否则,跳到步骤19执行。
步骤22:主机端判断接收到的网络包是否为应答包,若为应答包,则跳到步骤23执行,否则跳到步骤19执行。
步骤23:主机端判断循环计数器2的当前计数值是否小于不完整组的数据包个数,若小于,则执行步骤24,否则,跳到步骤28执行。
步骤24:主机从要发送的输入(参数)数据buffer中取数据,添加主机和嵌入式设备的MAC地址,数据包标志信息后组不包含TCP/IP头部的数据包。
步骤25:主机端将组好的数据包通过winpcap接口发送到嵌入式设备。
步骤26:主机端发送的输入(参数)数据buffer地址增加一个包的数据长度。
步骤27:主机端将循环计数器2加1计数,并回到步骤23继续执行。
步骤28:主机端判断不完整包的数据长度是否大于0,若大于0,则执行步骤29,否则跳到步骤31执行。
步骤29:主机端从要发送的输入(参数)数据buffer取数据,并添加主机和嵌入式设备的MAC地址,数据包标志信息后组不包含TCP/IP头部的数据包。
步骤30:主机端将组好的数据包通过winpcap接口发送到嵌入式设备。
步骤31:退出。
图4为本发明中主机通过winpcap接口接收网络包的操作流程图,具体操作步骤如下。
步骤1:主机端获取用于存储输出数据的buffer和输出数据长度。
步骤2:主机端获取嵌入式设备端存放输出数据的buffer地址。
步骤3:根据步骤1和步骤2的信息,并添加主机和嵌入式设备的MAC地址、任务包标志信息后组成不包含TCP/IP头部信息的接收任务包。
步骤4:主机端通过winpcap接口将步骤3组好的接收任务包发送到嵌入式设备。
步骤5:主机计算单个数据包的数据长度,数据包的个数和不完整数据包的数据长度。
步骤6:接收来自嵌入式设备的网络包。
步骤7:主机端判断接收是否出错,若没有出错,则执行步骤8,否则,跳到步骤15执行。
步骤8:主机端判断接收是否超时,若没有超时,则执行步骤9,否则,跳到步骤6执行。
步骤9:主机端判断是否接收到结果数据,若接收到结果数据,则执行步骤10,否则,跳到步骤6执行。
步骤10:判断接收到数据包个数计数器的当前值是否小于包个数,若小于包个数,则执行步骤11,否则,跳到步骤14执行。
步骤11:主机将接收到的数据包中的数据拆出来并存储至主机的输出buffer。
步骤12:主机的输出buffer地址增加单个数据包的长度。
步骤13:接收数据包个数计数器加1计数,并回到步骤6继续执行。
步骤14:主机将接收到的不完整数据包中的数据拆出来并存储至主机的输出buffer中。
步骤15:退出。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。

Claims (8)

1.一种基于winpcap的高速网络数据传输方法,其特征在于:包括,主机,主机通过winpcap接口发送数据,主机通过winpcap接口接收数据。
2.根据权利要求1所述的方法,其特征在于:所述主机由处理器,网卡和包含输入数据buffer、参数数据buffer和输出数据buffer的存储器构成。
3.根据权利要求1或2所述的方法,其特征在于:所述主机通过winpcap接口发送数据时,主机需要判断是否更新发送到嵌入式设备端的参数文件。
4.根据权利要求1或2所述的方法,其特征在于:所述主机通过winpcap接口发送数据时,主机需要对要发送的参数数据和输入数据按照相应的格式进行组包,得到参数数据包和输入数据包。
5.根据权利要求1或2所述的方法,其特征在于:所述主机通过winpcap接口接收数据时,主机需要准备好存放接收数据的buffer,对接收到的应答包和结果数据包进行拆包。
6.根据权利要求1或2所述的方法,其特征在于:所述主机通过winpcap接口发送和接收数据时,需要对发送数据或者接收数据的最后一个不满数据长度的尾包进行处理,计算出来尾包的数据长度,并进行单独组包和拆包。
7.根据权利要求1或2所述的方法,其特征在于:所述主机通过winpcap接口接收数据时,需要接收计算结果数据和接收来自嵌入式设备的应答包。
8.根据权利要求5所述的方法,其特征在于:所述主机对接收到的结果数据包和应答包进行拆包,得到相应的计算结果数据或者应答信息。
CN201910162334.1A 2019-03-05 2019-03-05 一种基于winpcap的高速网络数据传输方法 Active CN109756517B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910162334.1A CN109756517B (zh) 2019-03-05 2019-03-05 一种基于winpcap的高速网络数据传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910162334.1A CN109756517B (zh) 2019-03-05 2019-03-05 一种基于winpcap的高速网络数据传输方法

Publications (2)

Publication Number Publication Date
CN109756517A true CN109756517A (zh) 2019-05-14
CN109756517B CN109756517B (zh) 2020-10-30

Family

ID=66406792

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910162334.1A Active CN109756517B (zh) 2019-03-05 2019-03-05 一种基于winpcap的高速网络数据传输方法

Country Status (1)

Country Link
CN (1) CN109756517B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110716831A (zh) * 2019-09-20 2020-01-21 厦门亿联网络技术股份有限公司 一种终端、usb设备的调试系统及usb设备的调试方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101692667A (zh) * 2009-10-16 2010-04-07 西安电子科技大学 基于千兆以太网的雷达实时信号处理终端数据传输系统
KR101022356B1 (ko) * 2010-04-09 2011-03-22 엘아이지넥스원 주식회사 실제 장비와 시뮬레이션 장비를 중재하는 방법 및 장치
CN103281335A (zh) * 2013-06-18 2013-09-04 东华大学 一种基于WinPcap的嵌入式网络协议栈开发方法
US20130232576A1 (en) * 2011-11-18 2013-09-05 Vinsula, Inc. Systems and methods for cyber-threat detection
CN104320378A (zh) * 2014-09-30 2015-01-28 百度在线网络技术(北京)有限公司 拦截网页数据的方法及系统
CN104883335A (zh) * 2014-02-27 2015-09-02 王磊 一种全硬件tcp协议栈实现方法
CN109120628A (zh) * 2018-08-30 2019-01-01 森大(深圳)技术有限公司 打印系统千兆网通信方法、终端及系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101692667A (zh) * 2009-10-16 2010-04-07 西安电子科技大学 基于千兆以太网的雷达实时信号处理终端数据传输系统
KR101022356B1 (ko) * 2010-04-09 2011-03-22 엘아이지넥스원 주식회사 실제 장비와 시뮬레이션 장비를 중재하는 방법 및 장치
US20130232576A1 (en) * 2011-11-18 2013-09-05 Vinsula, Inc. Systems and methods for cyber-threat detection
CN103281335A (zh) * 2013-06-18 2013-09-04 东华大学 一种基于WinPcap的嵌入式网络协议栈开发方法
CN104883335A (zh) * 2014-02-27 2015-09-02 王磊 一种全硬件tcp协议栈实现方法
CN104883335B (zh) * 2014-02-27 2017-12-01 王磊 一种全硬件tcp协议栈实现系统
CN104320378A (zh) * 2014-09-30 2015-01-28 百度在线网络技术(北京)有限公司 拦截网页数据的方法及系统
CN109120628A (zh) * 2018-08-30 2019-01-01 森大(深圳)技术有限公司 打印系统千兆网通信方法、终端及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110716831A (zh) * 2019-09-20 2020-01-21 厦门亿联网络技术股份有限公司 一种终端、usb设备的调试系统及usb设备的调试方法
CN110716831B (zh) * 2019-09-20 2022-08-02 厦门亿联网络技术股份有限公司 一种终端、usb设备的调试系统及usb设备的调试方法

Also Published As

Publication number Publication date
CN109756517B (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
CN108809854B (zh) 一种用于大流量网络处理的可重构芯片架构
CN112861468B (zh) 一种软硬件协同仿真验证的方法、装置和介质
CN106341266B (zh) 具有主动和被动传输模式的硬件tcp/ip协议栈装置
CN108540538A (zh) 一种基于sdn的云雾结合物联网应用构建系统
CN104883335B (zh) 一种全硬件tcp协议栈实现系统
CN104022922B (zh) 移动终端、心跳转发服务器以及心跳信息发送方法和系统
EP2713270A1 (en) Resource scheduling method and device
US20230080588A1 (en) Mqtt protocol simulation method and simulation device
CN113824706B (zh) 报文解析方法及网络设备
CN112954300A (zh) 视频监控平台的性能测试装置及方法
CN109756517A (zh) 一种基于winpcap的高速网络数据传输方法
CN103281335A (zh) 一种基于WinPcap的嵌入式网络协议栈开发方法
CN109525495A (zh) 一种数据处理装置、方法和fpga板卡
CN104052676A (zh) 一种发送通路及发送通路的数据处理方法
CN110445730A (zh) 基于WinPcap的网络数据实时采集存储方法和装置
CN115622896A (zh) 一种axi4高速总线及多队列仿真验证方法及仿真验证装置
US20140136683A1 (en) Inter-packet interval prediction operating algorithm
CN105592492A (zh) 高层协议栈一致性测试平台及测试方法
CN110297785A (zh) 一种基于fpga的金融数据流控装置和流控方法
CN112367708B (zh) 一种网络资源分配方法及装置
CN109862023A (zh) 一种嵌入式设备实现加速计算和高速网络数据传输方法
CN110868344A (zh) 一种仿真mvb的方法、系统、装置和计算机可读介质
CN112929457A (zh) Nat地址映射分时段保持方法、辅助服务器及设备
CN118093292B (zh) 一种自适应随机激励验证方法、系统、终端及介质
CN118101494B (zh) 网络控制平面协议仿真方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant