CN115941127A - 一种基于哈希表的报文协议超时重发管理方法 - Google Patents
一种基于哈希表的报文协议超时重发管理方法 Download PDFInfo
- Publication number
- CN115941127A CN115941127A CN202211387220.5A CN202211387220A CN115941127A CN 115941127 A CN115941127 A CN 115941127A CN 202211387220 A CN202211387220 A CN 202211387220A CN 115941127 A CN115941127 A CN 115941127A
- Authority
- CN
- China
- Prior art keywords
- retransmission
- frame
- message
- hash table
- variable
- 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
Links
- 238000007726 management method Methods 0.000 title claims abstract description 41
- 230000004044 response Effects 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 12
- 230000005540 biological transmission Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 7
- 238000012790 confirmation Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 101150055297 SET1 gene Proteins 0.000 claims description 2
- 102000001327 Chemokine CCL5 Human genes 0.000 claims 1
- 108010055166 Chemokine CCL5 Proteins 0.000 claims 1
- 230000002596 correlated effect Effects 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000012966 insertion method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Communication Control (AREA)
Abstract
本发明属于计算机控制技术领域,公开了一种基于哈希表的报文协议超时重发管理方法,基于哈希表数据结构,通过一种新型管理结构,将报文重发的过程信息全部记录到哈希表中,对于超时重发的管理仅需在定时器中不断查询关联容器中的报文应答状态,即可高效地完成超时应答管理。
Description
技术领域
本发明属于计算机控制技术领域,涉及一种基于哈希表的报文协议超时重发管理方法。
背景技术
哈希表是根据关键码值而直接进行访问的数据结构。把关键码值映射到表中的一个位置进行记录,增加查找的速度。哈希表通过关键值计算直接获取目标位置,对于海量数据的精确查找有着明显的数据提升,随着数据量增大,哈希表可以保持O(1)的查找速度,而普通列表只能保持O(n)的查找速度。
消息重发机制是保证总线数据交互中出现数据错帧、乱帧、丢帧后数据可达的机制。
传统的系统间报文超时重发管理通常采用数组标记的方式进行管理,对于不同的报文类型,报文发送后在数组中标记是否需要应答,对于不断增加需要应答的报文数量,数组的长度需要不断增加,造成了系统运行负载的增大,计算机控制系统中需要打开定时器进行计数,此定时器用来判断不同定时报文的超时应答。当报文重发的时候,需要找到发送的总线信息,内容,长度等信息,一般为全局共有变量,从第一次发送到超时未应答后发送中间变量以及数据的值都可能被程序的其其它部分篡改,导致两次发送数据内容并非完全一致。
发明内容
(一)发明目的
本发明的目的是:提供一种基于哈希表的报文协议超时重发管理方法,解决现有技术中超时应答数据不一致的问题。
(二)技术方案
为了解决上述技术问题,本发明提供一种基于哈希表的报文协议超时重发管理方法,其包括以下步骤:
S1:报文需要进行超时重发时,设计系统间报文协议以及在报文发送出去后目的节点接收到报文后需要回复的接收确认帧,即应答帧;
S2:定义总线载体BusInfo,
S3:定义重发管理结构体MainReSend,
S4:定义一个哈希表类Hash型变量gSndQ,此哈希表用来存储帧发送出去的信息,
S5:在发送报文端,报文内容填充完成并发送;
S6:报文接收线程中,接收应答帧,并在哈希表中标记处理;
S7:设置重发处理定时器,启动定时器,遍历重发管理结构体,判断是否重发,重发则转S8;
S8:重发管理结构体变量中计数器进行加一操作,对报文进行重发。
(三)有益效果
上述技术方案所提供的基于哈希表的报文协议超时重发管理方法,基于哈希表数据结构,通过一种新型管理结构,将报文重发的过程信息全部记录到哈希表中,对于超时重发的管理仅需在定时器中不断查询关联容器中的报文应答状态,即可高效地完成超时应答管理。
附图说明
图1为本发明实施例基于哈希表的报文协议超时重发管理方法的流程图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
如图1所示,本实施例基于哈希表的报文协议超时重发管理方法包括以下步骤:
S1:在报文需要进行超时重发时,所设计的协议中需要带有应答特性,在报文发送出去后目的节点接收到报文后需要回复接收确认帧。
S1_1设计系统间报文协议,协议定为变长协议,包括两个字节的协议帧头FrmHead(具有可标识性,如0xFF和0xEE),包括四个字节的帧序号FrmNum,使用帧序号进行ID标记,帧序号是对应应答帧的唯一标识ID,一个字节的此标识ID重发次数ReCnt,两个字节的帧长度FrmLen(包括从帧头到帧尾的所有字节数),两个字节的帧类型FrmType,四个字节的目的地址FrmDst、四个字节的源地址FrmSrc(目的地址和源地址写入IP地址值),两个字节的应答标识FrmACKFlag,此标识用来表示该帧是否需要应答(如果这两个字节为0xFF00则表示此帧需要应答,如果为0x00FF则表示此帧不需要应答),两个字节的功能码FrmCode(功能码表示帧的具有内容),字节数不定的负载内容FrmContent,两个字节的校验FrmChk(采用奇偶校验方式),两个字节的帧结尾FrmTail(如0xCC和0xDD)。
S1_2设置应答帧ACK的帧头部分和帧尾部分与上述报文一致,内容为四个字节的帧序号的帧序号,两个字节的功能码。发送帧与应答帧帧协议相互关联时以帧序号进行关联的,这样设计能清晰追溯帧地应答状态。
S2:定义总线载体BusInfo,共包含两个元素,分别为①总线类型,此类型为枚举型,0表示以太网发送,1表示串口发送,2表示CAN总线发送②需要发送数据的目的地址,类型为整型,根据总线类型确定为目的IP地址,串口端口号,以及CAN总线端口号。
S3:定义重发管理结构体MainReSend,结构体内容为,①S2中定义的总线载体BusInfo②要发送数据的内存地址Addr,类型为无符号指针型。③是否重发标志IsReSnd,设置为无符号字符型,值为1时表示需要重发,为0时表示不需要重发④已发送次数计数HaSnCnt,设置为无符号整型,表示此数据已经发送的次数⑤需要重发的次数NeSnCnt(如果设置为0则表示不需要重发),此变量设置为无符号短整型。
S4:定义一个哈希表类Hash型变量gSndQ,此哈希表用来存储帧发送出去的信息,其中键(key)的类型设置为整型(int型),这个值为发送帧的帧序号,值(value)设置为结构体类型,此结构体为S3中定义的重发管理结构体MainReSend。
S5:在发送报文端,报文内容填充完成并发送时,判断应答标识FrmACKFlag是否为0xFF00,如果判断失败,表示此报文不需要根据应答重发。如果判断成功,则定义一个重发管理结构体变量gMReSend,以及SeqNum变量记录报文序号。
根据选择的物理端口类型(为以太网、串口、CAN总线之一)以及端口地址信息(端口号获取IP地址)填充变量gMReSend中总线载体内容,将要发送的数据的首地址gDataAddr赋值给结构体中Addr内容,将结构体变量中的是否重发标志设置为TURE(值设置为1,表示需要重发),结构体中已重发的次数HaSnCnt设置为0,将结构体变量中的需要重发的次数NeSnCnt设置为TIMES_SET,使用中哈希表Hsh中插入方法insert()将报文序号SeqNum以及重发管理结构体变量gMReSend,等待后面遍历查询,此时报文已经发送出去。
S6:在报文接收线程中,接收应答帧,当接收到应答报文的时候,将协议中的帧序号提取出来,使用哈希表Hash中的遍历查询方法查询该帧序号键值,是否在哈希表存储空间中,如果查找成功,则将将结构体变量中的是否重发标志设置为FALSE,等待遍历过程中该键值对从哈希表中移除。
S7:设置重发处理定时器,启动定时器,定时器设置周期时间为RATES,在定时器回调函数中,通过匹配帧序号遍历重发管理结构体变量的键(使用遍历操作),对于遍历到的每一个帧序号,通过gSndQ下标索引方式判断其中gMReSend中是否重发标志是否FALSE,若为FALSE则使用哈希表Hash中的移除remove方法,将该序号对应内容全部从队列中移除。如果为TRUE,则转到S8。
S8:重发管理结构体变量中gMReSend计数器进行加一操作,重发管理结构体变量中的计数器对TIMES_SET进行取余操作,当这个值为TIMES_SET-1的时候,需要对报文进行重发,将要发送的数据以及发送的总线信息,传入到系统底层的发送函数中进行发送。同时将重发结构体变量中的发送次数进行加一操作。在定时器触发的过程中,周期性进行S8的操作,每次重发结构体发送次数进行加一操作,如果重发过程中查询到帧序号匹配,则重发结束,将该键值对从gSndQ中移除。否则移植进行重发操作,当重发次数达到预设次数TIMES_SEND时,将该键值对从gSndQ中移除,表示重发已经达到最大次数,对超时未应答进行提示。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种基于哈希表的报文协议超时重发管理方法,其特征在于,包括以下步骤:
S1:报文需要进行超时重发时,设计系统间报文协议以及在报文发送出去后目的节点接收到报文后需要回复的接收确认帧,即应答帧;
S2:定义总线载体BusInfo,
S3:定义重发管理结构体MainReSend,
S4:定义一个哈希表类Hash型变量gSndQ,此哈希表用来存储帧发送出去的信息,
S5:在发送报文端,报文内容填充完成并发送;
S6:报文接收线程中,接收应答帧,并在哈希表中标记处理;
S7:设置重发处理定时器,启动定时器,遍历重发管理结构体,判断是否重发,重发则转S8;
S8:重发管理结构体变量中计数器进行加一操作,对报文进行重发。
2.如权利要求1所述的基于哈希表的报文协议超时重发管理方法,其特征在于,步骤S1中,系统间报文协议定为变长协议,包括:两个字节的协议帧头FrmHead,四个字节的帧序号FrmNum,使用帧序号进行ID标记,帧序号是对应应答帧的唯一标识ID,一个字节的此标识ID重发次数ReCnt,两个字节的帧长度FrmLen,两个字节的帧类型FrmType,四个字节的目的地址FrmDst、四个字节的源地址FrmSrc,两个字节的应答标识FrmACKFlag,此标识用来表示该帧是否需要应答,两个字节的功能码FrmCode,字节数不定的负载内容FrmContent,两个字节的校验FrmChk,以及两个字节的帧结尾FrmTail。
3.如权利要求2所述的基于哈希表的报文协议超时重发管理方法,其特征在于,步骤S1中,应答帧ACK的帧头部分和帧尾部分与上述报文一致,内容为四个字节的帧序号的帧序号,两个字节的功能码;发送帧与应答帧帧协议相互关联时以帧序号进行关联。
4.如权利要求3所述的基于哈希表的报文协议超时重发管理方法,其特征在于,步骤S2中,总线载体BusInfo包含两个元素,分别为:①总线类型,此类型为枚举型,0表示以太网发送,1表示串口发送,2表示CAN总线发送;②需要发送数据的目的地址,类型为整型,根据总线类型确定为目的IP地址,串口端口号,以及CAN总线端口号。
5.如权利要求4所述的基于哈希表的报文协议超时重发管理方法,其特征在于,步骤S3中,重发管理结构体MainReSend内容:①S2中定义的总线载体BusInfo,②要发送数据的内存地址Addr,类型为无符号指针型,③是否重发标志IsReSnd,设置为无符号字符型,值为1时表示需要重发,为0时表示不需要重发,④已发送次数计数HaSnCnt,设置为无符号整型,表示此数据已经发送的次数,⑤需要重发的次数NeSnCnt,此变量设置为无符号短整型。
6.如权利要求5所述的基于哈希表的报文协议超时重发管理方法,其特征在于,步骤S4中,哈希表类Hash型变量gSndQ中,键key的类型设置为整型int型,这个值为发送帧的帧序号;值value设置为结构体类型,此结构体为S3中定义的重发管理结构体MainReSend。
7.如权利要求6所述的基于哈希表的报文协议超时重发管理方法,其特征在于,步骤S5中,报文内容填充完成并发送时,判断应答标识FrmACKFlag是否为0xFF00,如果判断失败,表示此报文不需要根据应答重发;如果判断成功,则定义一个重发管理结构体变量gMReSend,以及SeqNum变量记录报文序号;
根据选择的物理端口类型以及端口地址信息填充变量gMReSend中总线载体内容,将要发送的数据的首地址gDataAddr赋值给结构体中Addr内容,将结构体变量中的是否重发标志设置为TURE,结构体中已重发的次数HaSnCnt设置为0,将结构体变量中的需要重发的次数NeSnCnt设置为TIMES_SET,使用中哈希表Hsh中插入方法insert()将报文序号SeqNum以及重发管理结构体变量gMReSend,等待后面遍历查询,此时报文已经发送出去。
8.如权利要求7所述的基于哈希表的报文协议超时重发管理方法,其特征在于,步骤S6中,当接收到应答报文的时候,将协议中的帧序号提取出来,使用哈希表Hash中的遍历查询方法查询该帧序号键值,是否在哈希表存储空间中,如果查找成功,则将结构体变量中的是否重发标志设置为FALSE,等待遍历过程中该键值对从哈希表中移除。
9.如权利要求8所述的基于哈希表的报文协议超时重发管理方法,其特征在于,步骤S7中,定时器设置周期时间为RATES,在定时器回调函数中,通过匹配帧序号遍历重发管理结构体变量的键,对于遍历到的每一个帧序号,通过gSndQ下标索引方式判断其中gMReSend中是否重发标志是否为FALSE,若为FALSE则使用哈希表Hash中的移除remove方法,将该序号对应内容全部从队列中移除;如果为TRUE,则转到S8。
10.如权利要求9所述的基于哈希表的报文协议超时重发管理方法,其特征在于,步骤S8中,重发管理结构体变量中gMReSend计数器进行加一操作,重发管理结构体变量中的计数器对TIMES_SET进行取余操作,当这个值为TIMES_SET-1的时候,对报文进行重发,将要发送的数据以及发送的总线信息,传入到系统底层的发送函数中进行发送,同时将重发结构体变量中的发送次数进行加一操作;在定时器触发的过程中,周期性进行S8的操作,每次重发结构体发送次数进行加一操作,如果重发过程中查询到帧序号匹配,则重发结束,将该键值对从gSndQ中移除;否则移植进行重发操作,当重发次数达到预设次数TIMES_SEND时,将该键值对从gSndQ中移除,表示重发已经达到最大次数,对超时未应答进行提示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211387220.5A CN115941127B (zh) | 2022-11-07 | 2022-11-07 | 一种基于哈希表的报文协议超时重发管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211387220.5A CN115941127B (zh) | 2022-11-07 | 2022-11-07 | 一种基于哈希表的报文协议超时重发管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115941127A true CN115941127A (zh) | 2023-04-07 |
CN115941127B CN115941127B (zh) | 2024-05-14 |
Family
ID=86653115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211387220.5A Active CN115941127B (zh) | 2022-11-07 | 2022-11-07 | 一种基于哈希表的报文协议超时重发管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115941127B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115941128A (zh) * | 2022-11-07 | 2023-04-07 | 天津津航计算技术研究所 | 一种基于QCache的报文协议超时重发管理方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1909507A (zh) * | 2006-07-04 | 2007-02-07 | 华为技术有限公司 | 一种报文转发方法和系统 |
CN102307217A (zh) * | 2011-03-15 | 2012-01-04 | 陈建国 | 多媒体电话节目排播下载方法及系统 |
CN105227482A (zh) * | 2015-09-07 | 2016-01-06 | 北京百度网讯科技有限公司 | 基于tcp连接的限速方法和装置 |
CN106911590A (zh) * | 2017-03-15 | 2017-06-30 | 迈普通信技术股份有限公司 | 报文处理方法、装置及分布式设备 |
CN113301000A (zh) * | 2020-02-24 | 2021-08-24 | 贵州白山云科技股份有限公司 | 数据传输方法、装置、介质及设备 |
CN113609518A (zh) * | 2021-06-18 | 2021-11-05 | 天津津航计算技术研究所 | 一种基于关联容器map的报文协议超时重发方法及系统 |
CN115190090A (zh) * | 2022-07-12 | 2022-10-14 | 国泰君安证券股份有限公司 | 基于哈希表和队列结构的tcp流重组行情监控处理方法、系统、装置、处理器及存储介质 |
-
2022
- 2022-11-07 CN CN202211387220.5A patent/CN115941127B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1909507A (zh) * | 2006-07-04 | 2007-02-07 | 华为技术有限公司 | 一种报文转发方法和系统 |
CN102307217A (zh) * | 2011-03-15 | 2012-01-04 | 陈建国 | 多媒体电话节目排播下载方法及系统 |
CN105227482A (zh) * | 2015-09-07 | 2016-01-06 | 北京百度网讯科技有限公司 | 基于tcp连接的限速方法和装置 |
CN106911590A (zh) * | 2017-03-15 | 2017-06-30 | 迈普通信技术股份有限公司 | 报文处理方法、装置及分布式设备 |
CN113301000A (zh) * | 2020-02-24 | 2021-08-24 | 贵州白山云科技股份有限公司 | 数据传输方法、装置、介质及设备 |
CN113609518A (zh) * | 2021-06-18 | 2021-11-05 | 天津津航计算技术研究所 | 一种基于关联容器map的报文协议超时重发方法及系统 |
CN115190090A (zh) * | 2022-07-12 | 2022-10-14 | 国泰君安证券股份有限公司 | 基于哈希表和队列结构的tcp流重组行情监控处理方法、系统、装置、处理器及存储介质 |
Non-Patent Citations (4)
Title |
---|
AYMAN MOHAMMED MUZZZMAIL ALBASHEAR: "the effect of initial retransmission timeout upon the dictionary attack delay", IEEE, 1 November 2018 (2018-11-01) * |
刘欢: "以太网交换机纵向管理系统设计与实现", 中国优秀硕士学位论文全文数据库信息科技辑, 15 July 2016 (2016-07-15) * |
安玉艳;赵煜辉;杨德国;高远;: "基于遗传算法的P2P流媒体多播模型", 计算机工程, no. 12, 20 June 2007 (2007-06-20) * |
张德栋;: "基于超时重发机制的SYN Flood攻击防御方法", 电子科学技术, no. 04, 10 July 2017 (2017-07-10) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115941128A (zh) * | 2022-11-07 | 2023-04-07 | 天津津航计算技术研究所 | 一种基于QCache的报文协议超时重发管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115941127B (zh) | 2024-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8495257B2 (en) | Network direct memory access | |
CN109787722B (zh) | 数据传输方法、装置和服务器 | |
JPH10510403A (ja) | 多プロセッサ環境 | |
CN101582756B (zh) | 一种实现无线局域网立即块应答机制的方法 | |
US20130138771A1 (en) | Apparatus and method for transmitting data | |
CN115941127A (zh) | 一种基于哈希表的报文协议超时重发管理方法 | |
CN113609518B (zh) | 一种基于关联容器map的报文协议超时重发方法及系统 | |
CN101026441A (zh) | 一种自动重发出错数据包的方法及重发缓冲器 | |
CN111211990B (zh) | 一种数据包处理方法和装置 | |
CN112769939A (zh) | 一种用于实时通讯的大数据可靠传输方法 | |
US8320251B2 (en) | Method and device for transmitting data packets | |
CN113238856B (zh) | 一种基于rdma的内存管理方法及装置 | |
CN1953418A (zh) | 处理信息分组的方法和使用该方法的电信设备 | |
CN104486247A (zh) | 一种基于串口服务器的数据传输方法及装置 | |
US7653070B2 (en) | Method and system for supporting efficient and cache-friendly TCP session lookup operations based on canonicalization tags | |
JP2019205149A (ja) | データ収集方法、データ送信方法、データ取得デバイスおよびネットワーク機器 | |
CN113852445A (zh) | 一种提高数据传输可靠性的方法、系统、设备和存储介质 | |
CN203574673U (zh) | 一种消息处理系统 | |
CN103856435A (zh) | 一种地址解析协议缓存及其缓存方法 | |
CN113645008B (zh) | 一种基于链表的报文协议超时重发方法及系统 | |
CN107786472B (zh) | 一种高效的tcp会话重组装置 | |
CN115941128A (zh) | 一种基于QCache的报文协议超时重发管理方法 | |
CN113067825B (zh) | 基于srv6网络协议进行多端点数据备份的方法 | |
CN101989896B (zh) | 一种arq连接的反馈方法及装置 | |
CN102916977B (zh) | Tcp请求的处理方法及装置 |
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 |