CN109756517B - 一种基于winpcap的高速网络数据传输方法 - Google Patents
一种基于winpcap的高速网络数据传输方法 Download PDFInfo
- Publication number
- CN109756517B CN109756517B CN201910162334.1A CN201910162334A CN109756517B CN 109756517 B CN109756517 B CN 109756517B CN 201910162334 A CN201910162334 A CN 201910162334A CN 109756517 B CN109756517 B CN 109756517B
- Authority
- CN
- China
- Prior art keywords
- data
- host
- packet
- winpcap
- 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.)
- Active
Links
Images
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的高速网络数据传输方法,尤其涉及一种不经过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 (2)
1.一种基于winpcap的高速网络数据传输方法,其特征在于:包括,主机,主机通过winpcap接口但不经TCP/IP协议栈发送数据,主机通过winpcap接口但不经TCP/IP协议栈接收数据;
所述主机由处理器,网卡和包含输入数据buffer、参数数据buffer和输出数据buffer的存储器构成,所述输入数据buffer用于存放加速计算所需的输入数据,所述参数数据buffer用于存放加速计算所需的参数文件,所述输出数据buffer用于存放加速计算的结果数据;
所述主机通过winpcap接口但不经TCP/IP协议栈发送数据时,主机需要判断是否更新发送到嵌入式设备端的参数文件,所述嵌入式设备包含加速计算模块,所述参数文件包含的是加速计算所需的参数文件,不是对嵌入式设备硬件进行控制的控制信息;
所述主机通过winpcap接口但不经TCP/IP协议栈发送数据时,主机需要对要发送的参数数据和输入数据按照相应的格式进行组包,根据主机端和嵌入式设备端的MAC地址、数据包标志信息和数据进行组包得到参数数据包和输入数据包,不需要TCP/IP协议包头信息;
所述主机通过winpcap接口但不经TCP/IP协议栈接收数据时,主机需要准备好内存中存放接收数据的buffer地址,对接收到的应答包和结果数据包进行拆包,接收到的应答包和结果数据包不包含TCP/IP协议的包头信息,在拆包时,只需要拆掉主机端和嵌入式设备端的MAC地址信息、标志信息即可得到应答信息和结果数据;
所述主机通过winpcap接口但不经TCP/IP协议栈发送和接收数据时,需要对发送数据或者接收数据的最后一个不满数据长度的尾包进行处理,计算出来尾包的数据长度,且组包时仅需要主机和嵌入式设备端的MAC地址、标志信息和尾包数据,不需要TCP/IP协议栈的包头,拆包时也只需要拆出主机和嵌入式设备端MAC地址和标志信息,无需拆TCP/IP协议包头;
所述主机通过winpcap接口但不经TCP/IP协议栈接收数据时,需要根据嵌入式设备端加速计算的情况实时动态地接收计算结果数据和接收来自嵌入式设备的应答包。
2.根据权利要求1所述的方法,其特征在于:所述主机对接收到的结果数据包和应答包进行拆包,所述结果数据包是嵌入式设备端加速计算的结果数据,结果数据包和应答包在拆包时,只需要拆掉主机端和嵌入式设备端的MAC地址信息和标志信息,无需拆TCP/IP协议栈包头。
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 CN109756517A (zh) | 2019-05-14 |
CN109756517B true 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716831B (zh) * | 2019-09-20 | 2022-08-02 | 厦门亿联网络技术股份有限公司 | 一种终端、usb设备的调试系统及usb设备的调试方法 |
Family Cites Families (7)
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的嵌入式网络协议栈开发方法 |
CN104883335B (zh) * | 2014-02-27 | 2017-12-01 | 王磊 | 一种全硬件tcp协议栈实现系统 |
CN104320378B (zh) * | 2014-09-30 | 2018-05-04 | 百度在线网络技术(北京)有限公司 | 拦截网页数据的方法及系统 |
CN109120628B (zh) * | 2018-08-30 | 2021-07-27 | 深圳市汉森软件有限公司 | 打印系统千兆网通信方法、终端及系统 |
-
2019
- 2019-03-05 CN CN201910162334.1A patent/CN109756517B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109756517A (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111656336B (zh) | 一种pcie发送、接收方法及装置、设备和系统 | |
CN106257434B (zh) | 一种基于增强型外设互连协议总线的数据传输方法及装置 | |
EP2312807A1 (en) | Method and system for enabling zero-copy transmission of streaming media data | |
CN102075389B (zh) | 一种调试方法和设备 | |
CN104385787A (zh) | 一种激光打标机的控制方法及激光打标机 | |
CN110087140B (zh) | 一种传输流媒体数据的方法、装置、介质及设备 | |
CN112039722B (zh) | 一种mqtt协议仿真方法及仿真设备 | |
CN110177087A (zh) | 一种基于TOE网卡的Target端协议硬件解析方法 | |
CN109756517B (zh) | 一种基于winpcap的高速网络数据传输方法 | |
CN111277600A (zh) | 数据传输方法及装置 | |
CN104052676A (zh) | 一种发送通路及发送通路的数据处理方法 | |
CN113676386B (zh) | 一种fc-ae-1553总线协议报文通讯系统 | |
CN111782579B (zh) | 一种基于fpga的以太网协议硬件逻辑处理结构 | |
CN101777037B (zh) | 一种查找引擎实时系统内数据传输的方法和系统 | |
CN111769999B (zh) | 一种usb设备软件的调试方法 | |
US8996737B1 (en) | Method for emulating communication standards of transceiver modules for native host devices | |
CN108521416B (zh) | 一种ecn板卡 | |
CN110174864A (zh) | 激光打标的控制方法、计算机可读存储介质及激光打标机 | |
CN114125032B (zh) | 一种边缘协议数据处理方法和系统 | |
CN114205115B (zh) | 一种数据包处理优化方法、装置、设备及介质 | |
CN109862023B (zh) | 一种嵌入式设备实现加速计算和高速网络数据传输方法 | |
CN114338798B (zh) | 一种数据传输方法、装置、系统、设备及存储介质 | |
CN111836024A (zh) | 一种基于视频传输的混合网络系统设计 | |
CN109831395B (zh) | 一种嵌入式设备与主机间底层网络数据传输系统及方法 | |
CN118093292B (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 |