CN102469073B - 通信方法和装置 - Google Patents
通信方法和装置 Download PDFInfo
- Publication number
- CN102469073B CN102469073B CN201010535066.2A CN201010535066A CN102469073B CN 102469073 B CN102469073 B CN 102469073B CN 201010535066 A CN201010535066 A CN 201010535066A CN 102469073 B CN102469073 B CN 102469073B
- Authority
- CN
- China
- Prior art keywords
- type
- variable
- information
- length field
- length
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种通信方法和装置,属于网络技术领域。该方法包括:接收包含变长字段的数据包,所述变长字段包括类型和所述类型对应的具体信息;查询所述变长字段中与本地预设配置相应的类型;提取所述类型对应的具体信息。该装置包括:接收模块,查询模块和提取模块。本发明通过在通信过程中利用变长字段传递信息,并根据本地预设配置查询变长字段中的信息,增大了通信协议中的数据携带量,且,通过先确定字段中的类型信息,再进一步读取字段内容,提高通信效率,简化数据扩展过程。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种通信方法和装置。
背景技术
在网络通信中,为了保证后续协议功能的升级,可以方便的增加信息,在协议体中,通常要预留一定存储空间,用来后续扩展。因此,在协议设计初期,设计人员需要充分了解系统的数据需求,也要充分预估未来可能需要使用到的字段,提前准备好字段空余预留。当得到大量数据字段的需求后,需要对数据字段进行排重和优化后,以一定顺序前后放在协议包定义文档中。
在对现有技术进行分析后,发明人发现现有技术至少具有如下缺点:
现有技术通过大量预留空余字段进行数据字段的通信,如果新需求需要比较大的数据字段(比如一段含有较多数据元素的大结构体),或者预留空余字段经过几次扩展使用,已经逐步填满,这时就没有扩展余地了,数据扩展不方便,通信效率低,且当前的预留空余字段在多个处理流中不能兼容使用。
发明内容
为了提高通信效率,简化数据扩展过程,本发明实施例提供了一种通信方法和装置。所述技术方案如下:
一种通信方法包括:
接收数据包,判断所述数据包中是否有变长字段,所述变长字段包括类型和所述类型对应的具体信息;
当所述数据包中有变长字段时,查询所述变长字段中与本地预设配置相应的类型;
提取所述类型对应的具体信息。
查询所述变长字段中与本地预设配置相应的类型,具体包括:
按照预设顺序查询所述变长字段中的类型;
判断所述类型是否为所述本地预设配置的类型,如果是,则所述类型是与所述本地预设配置相应的类型,如果否,则查询预设顺序中下一个类型。
所述查询的顺序为从第一个类型开始读取,或由预设的中间某个类型开始查询。
提取所述类型对应的具体信息,具体包括:
从所述本地预设配置中提取所述类型对应的长度信息,并从所述长度信息指示的字段中提取所述类型对应的具体信息。
或,当所述变长字段中还包括所述具体信息的长度信息,相应地,所述提取该类型对应的具体信息,具体包括:从所述长度信息指示的字段中提取该类型对应的具体信息。
所述变长字段中还包括所述具体信息的长度信息,相应地,提取所述类型对应的具体信息,具体包括:从所述长度信息指示的字段中提取所述类型对应的具体信息。
接收包含变长字段的数据包,之后包括:
当需要为所述数据包添加信息时,将所述信息的类型和具体信息写入所述变长字段,并保存所述具体信息的类型。
一种通信装置,包括:
接收模块,用于接收包含变长字段的数据包,所述变长字段包括类型和所述类型对应的具体信息;
查询模块,用于查询所述变长字段中与本地预设配置相应的类型;
提取模块,用于提取所述类型对应的具体信息。
所述查询模块包括:
查询单元,用于按照预设顺序查询所述变长字段中的类型;
判断单元,用于判断所述类型是否为所述本地预设配置的类型,如果是,则所述类型是与所述本地预设配置相应的类型,如果否,则触发所述查询单元查询预设顺序中下一个类型。
所述提取模块具体用于从所述本地预设配置中提取所述类型对应的长度信息,并从所述长度信息指示的字段中提取所述类型对应的具体信息。
所述变长字段中还包括所述具体信息的长度信息,相应地,所述提取模块具体用于从所述长度信息指示的字段中提取所述类型对应的具体信息。
所述装置还包括:
添加模块,用于当需要为所述数据包添加信息时,将所述信息的类型和具体信息写入所述变长字段,并保存所述具体信息的类型。
本发明实施例提供的技术方案的有益效果是:
通过在通信过程中利用变长字段传递信息,并根据本地预设配置查询变长字段中的信息,增大了通信协议中的数据携带量,且,通过先确定字段中的类型信息,再进一步读取字段内容,提高通信效率,简化数据扩展过程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种通信方法的流程图;
图2是本发明实施例提供的一种通信方法的流程图;
图3是本发明实施例提供的一种通信装置的结构示意图;
图4是本发明实施例提供的一种通信装置的结构示意图;
图5是本发明实施例提供的又一种通信装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在介绍本发明提供的通信方法之前,首先对本发明的基础知识进行简要的介绍:
协议:用来在client端和serVer端进行通信的数据格式定义。
TLV:type-length-value三个数据元组合的缩写,是该协议结构设计的核心。
节点:一个系统逻辑处理的多个环节中的一个。比如一条数据,在一个系统里,会经历网络接入、逻辑处理、数据沉淀、旁路分析几个环节,每个环节就是协议经历的一个节点。
买施例1
为了提高通信效率,简化数据扩展过程,本发明实施例提供了一种通信方法,参见图1,该方法包括:
101:接收包含变长字段的数据包,该变长字段包括类型和该类型对应的具体信息;
102:查询该变长字段中与本地预设配置相应的类型;
103:提取该类型对应的具体信息。
查询该变长字段中与本地预设配置相应的类型,具体包括:
按照预设顺序查询该变长字段中的类型;
判断该类型是否为该本地预设配置的类型,如果是,则该类型是与该本地预设配置相应的类型,如果否,则查询预设顺序中下一个类型。
提取该类型对应的具体信息,具体包括:
从该本地预设配置中提取该类型对应的长度信息,并从该长度信息指示的字段中提取该类型对应的具体信息。
该变长字段中还包括该具体信息的长度信息,相应地,提取该类型对应的具体信息,具体包括:从该长度信息指示的字段中提取该类型对应的具体信息。
接收包含变长字段的数据包,之后包括:
当需要为该数据包添加信息时,将该信息的类型和具体信息写入该变长字段,并保存该具体信息的类型。
通过在通信过程中利用变长字段传递信息,并根据本地预设配置查询变长字段中的信息,增大了通信协议中的数据携带量,且,通过先确定字段中的类型信息,再进一步读取字段内容,提高通信效率,简化数据扩展过程。
实施例2
为了提高通信效率,简化数据扩展过程,本发明实施例提供了一种通信方法,参见图2,该方法包括:
201:接收数据包;
本领域技术人员可以获知,在协议中传输的数据包有统一的格式,通常都是包括包头、数据部分和包尾。
202:判断数据包中是否有变长字段,如果是,则执行步骤204;如果否,则执行步骤203;
本领域技术人员可以获知,变长字段包括类型和类型对应的具体信息;优选地,变长字段可以包括类型、该具体信息的长度信息和该类型对应的具体信息;
203:对该数据包进行相应的处理,结束;
本领域技术人员可以获知,当该数据包不包含变长字段时,节点会按照预设的处理方法处理该数据包,例如,丢弃当前数据包或保存当前数据包或将数据包发送向预设节点等。
204:按照预设顺序查询该变长字段中的类型;
需要说明的是,该查询的顺序可根据系统设置变化,可以是从第一个类型开始读取,也可以是由预设的中间某个类型开始查询,本发明实施例对此不做具体限定。
205:判断该类型是否是本地预设配置的信息类型,如果是,则该类型是与该本地的预设配置相应的类型,执行步骤208;如果否,则执行步骤206;
在本发明实施例中,一条协议要从多个节点经过,传递不同的数据,则各个节点只按照一定顺序对类型(也即是type值)进行读取,当遇到与本地预设配置不相符的类型时,直接读取下一个类型,并进行步骤205中的判断。
需要说明的是,每个节点在节点的本地都有一本地预设配置,该配置包括:本地所需的信息类型,优选地,该配置为本地关注的类型、信息的类型和该变长字段中类型的对应关系等。本领域技术人员可以获知,该配置可以为表格形式,也可以为映射关系形式,本发明实施例对此不做具体限定。
206:判断本地预设配置中是否还有其他需求,如果是,则执行步骤207,如果否,则结束;
在本发明实施例中,本地预设设置中可能有多个本地关注的类型,所以,需按照预设的顺序逐个读取类型,并逐个与本地关注的类型比较,以免遗漏。
207:查询预设顺序中的下一个类型,并执行步骤205;
需要说明的是,在变长字段的字段头处,包含一表示TLV个数的单元,节点可根据该单元中所示的个数安排读取,如,个数为10,则节点只需读到第10个类型即可停止读取。
208:提取该类型对应的具体信息,执行步骤206。
在本发明实施例中,当遇到与本地预设配置相符的类型时,则提取与该类型对应的具体信息,在TLV格式中,也即是当遇到节点所关注的type时,提取该type对应的tlv单元中的value,在该tlv单元中,还有一表示该value的长度的Length,该Length的作用在于标注value的长度以免漏读。且,在读取具体信息时,需查询本地保存的type和value的对应关系,得到与type相应的读取方法,并应用该读取方法解读具体信息。该本地保存的type和value的对应关系优选以表格形式存储。
具体地,本步骤208有两种实现方式:
方式一、当变长字段中没有长度信息,该长度信息是保存在本地预设配置中时,从该本地预设配置中提取该类型对应的长度信息,并从该长度信息指示的字段中提取该类型对应的具体信息。例如,变长字段中的“00”’对应的类型为“IP地址”,则,根据“00”,从本地预设配置中查询该类型信息的长度,该长度为6,则读取“00”’后6个字节的数据,得到具体信息“10.2.1”。
方式二、当该变长字段中还包括该具体信息的长度信息,相应地,提取该类型对应的具体信息,具体包括:从该长度信息指示的字段中提取该类型对应的具体信息。例如,变长字段中有类型“00”’,长度信息“6”,则根据长度信息提取长度信息以后6个字节内的数据,得到具体信息“10.2.1”。
需要说明的是,TLV单元中的type和length的类型可以是unsigned short,也可以是(unsigned)char/short/int/long long等任何类型,本发明实施例对此不做具体限定。
进一步地,当需要为数据包添加信息时,将信息的类型和具体信息写入变长字段,并保存具体信息的类型。具体地,将类型、长度和具体信息写入一个tlv单元,并将该单元添加到变长字段中已有的tlv单元之后,并将该变长字段头部的tlv单元数加一。
需要说明的是,为了使系统达到无缝兼容的目的,保存新建的信息的类型和该变长字段中类型的对应关系,并将该关系上传或发送给各个节点。举例说明,新建的类型为姓名,该“姓名”在变长字段里面用“10”表示,则保存“姓名”和“10”的对应关系,以便以后查询所用。
具体地,在系统上线运营后,如果出现新需求,该需要新的字段来支持。在根据该需要为数据包添加信息时,首先,整理目前系统需要的字段,按照预设逻辑关系或读写时操作方便考虑,对字段归类汇总,把相关字段整合到一个TLV中的Value的结构体里统一管理;比如描述一个用户信息交互的协议,可以把号码、帐号、昵称、年龄、生肖放在一个TLV里,方便显示用户基本资料时,只用一个TLV;把标志位、操作权限列表等放另一个TLV,方便进行操作粒度控制;把家乡、个人简介等放在第在个TLV,方便进入详细资料时再提取该信息。把上述的字段分类,每类整理成一个大结构,为每个结构分配一个全局唯一的type的id,最后将上述type的id及对应结构描述,整理成表格,记录在文档中,形成协议的基本核心字段字典表。其次,按照系统需要,设计协议交互中的其它细节问题;其中包括数据部分,就是TLV单元的个数,每增加一个tlv单元,该个数就加1,在该数据部分的后面是一个接一个的TLV单元,每个单元由一个unsigned short的type(即前面字典表中分配的一个数值id)标识该TLV中V的对应结构、unsigned short的length指示该TLV中V对应的字节长度数,V的部分则指示具体数据,协议的使用者可以到字典表中按照type值得到具体value解读方法,从而读取value以得到需要的数据。当读取的TLV单元个数等于协议中TLV单元个数,或者关心的字段已经提取完,即结束协议解析。
该通信方法,在协议格式不变的情况下,只扩充本地保存的type和value的对应关系即字典表中的type字义,就可以无缝兼容新老系统间的数据传递,不用任何新的开发工作,确保代价最小化。由此一来,所有系统中涉及该协议的,格式仍然保持不变,并且如果不关心新的增字段,则完全不用做任何代码和配置的变更。只在需要新字段的系统节点里,增加对新type值的识别及对其中对应value的结构的解析提取,应用到系统中完成需求。
通过在通信过程中利用变长字段传递信息,并根据本地预设配置查询变长字段中的信息,增大了通信协议中的数据携带量,且,通过先确定字段中的类型信息,再进一步读取字段内容,提高通信效率,简化数据扩展过程。
实施例3
为了提高通信效率,简化数据扩展过程,本发明实施例提供了一种通信装置,参见图3,该装置包括:
接收模块301,用于接收包含变长字段的数据包,该变长字段包括类型和该类型对应的具体信息;
查询模块302,用于查询该变长字段中与本地预设配置相应的类型;
提取模块303,用于提取该类型对应的具体信息。
该查询模块302包括:
查询单元302a,用于按照预设顺序查询该变长字段中的类型;
判断单元302b,用于判断该类型是否为该本地预设配置的类型,如果是,则该类型是与该本地预设配置相应的类型,如果否,则触发该查询单元302a查询预设顺序中下一个类型。
该提取模块303具体用于从该本地预设配置中提取该类型对应的长度信息,并从该长度信息指示的字段中提取该类型对应的具体信息。
该变长字段中还包括该具体信息的长度信息,相应地,该提取模块303具体用于从该长度信息指示的字段中提取该类型对应的具体信息。
该装置还包括:
添加模块304,用于当需要为该数据包添加信息时,将该信息的类型和具体信息写入该变长字段,并保存该具体信息的类型。
本实施例提供的装置,具体可以通信网络中的节点,与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例提供的上述技术方案的全部或部分可以通过程序指令相关的硬件来完成,所述程序可以存储在可读取的存储介质中,该存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种通信方法,其特征在于,包括:
接收数据包,判断所述数据包中是否有变长字段,所述变长字段包括类型和所述类型对应的具体信息;
当所述数据包中有变长字段时,查询所述变长字段中与本地预设配置相应的类型;
提取所述类型对应的具体信息;
提取所述类型对应的具体信息,具体包括:从所述本地预设配置中提取所述类型对应的长度信息,并从所述长度信息指示的字段中提取所述类型对应的具体信息;
或,当所述变长字段中还包括所述具体信息的长度信息,相应地,所述提取该类型对应的具体信息,具体包括:从所述长度信息指示的字段中提取该类型对应的具体信息。
2.根据权利要求1所述的方法,其特征在于,查询所述变长字段中与本地预设配置相应的类型,具体包括:
按照预设顺序查询所述变长字段中的类型;
判断所述类型是否为所述本地预设配置的类型,如果是,则所述类型是与所述本地预设配置相应的类型,如果否,则查询预设顺序中下一个类型。
3.根据权利要求2所述的方法,其特征在于,所述查询的顺序为从第一个类型开始读取,或由预设的中间某个类型开始查询。
4.根据权利要求1所述的方法,其特征在于,接收包含变长字段的数据包,之后包括:
当需要为所述数据包添加信息时,将所述信息的类型和具体信息写入所述变长字段,并保存所述具体信息的类型。
5.一种通信装置,其特征在于,包括:
接收模块,用于接收包含变长字段的数据包,所述变长字段包括类型和所述类型对应的具体信息;
查询模块,用于查询所述变长字段中与本地预设配置相应的类型;
提取模块,用于提取所述类型对应的具体信息;
所述提取模块具体用于从所述本地预设配置中提取所述类型对应的长度信息,并从所述长度信息指示的字段中提取所述类型对应的具体信息;
所述变长字段中还包括所述具体信息的长度信息,相应地,所述提取模块具体用于从所述长度信息指示的字段中提取所述类型对应的具体信息。
6.根据权利要求5所述的装置,其特征在于,所述查询模块包括:
查询单元,用于按照预设顺序查询所述变长字段中的类型;
判断单元,用于判断所述类型是否为所述本地预设配置的类型,如果是,则所述类型是与所述本地预设配置相应的类型,如果否,则触发所述查询单元查询预设顺序中下一个类型。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:
添加模块,用于当需要为所述数据包添加信息时,将所述信息的类型和具体信息写入所述变长字段,并保存所述具体信息的类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010535066.2A CN102469073B (zh) | 2010-11-04 | 2010-11-04 | 通信方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010535066.2A CN102469073B (zh) | 2010-11-04 | 2010-11-04 | 通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102469073A CN102469073A (zh) | 2012-05-23 |
CN102469073B true CN102469073B (zh) | 2015-05-06 |
Family
ID=46072249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010535066.2A Active CN102469073B (zh) | 2010-11-04 | 2010-11-04 | 通信方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102469073B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105812344B (zh) * | 2014-12-31 | 2019-09-17 | 航天信息股份有限公司 | 一种密码服务通信包的组织方法、装置及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286891A (zh) * | 2008-05-30 | 2008-10-15 | 杭州华三通信技术有限公司 | 系统日志解析方法及装置 |
CN101594355A (zh) * | 2009-06-17 | 2009-12-02 | 华为技术有限公司 | 一种实现软件跨版本交互的方法及装置 |
CN101764815A (zh) * | 2009-12-23 | 2010-06-30 | 杭州华三通信技术有限公司 | 一种xml报文的获取方法和装置 |
CN101783786A (zh) * | 2009-01-19 | 2010-07-21 | 中兴通讯股份有限公司 | 数据包过滤方法和装置 |
-
2010
- 2010-11-04 CN CN201010535066.2A patent/CN102469073B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286891A (zh) * | 2008-05-30 | 2008-10-15 | 杭州华三通信技术有限公司 | 系统日志解析方法及装置 |
CN101783786A (zh) * | 2009-01-19 | 2010-07-21 | 中兴通讯股份有限公司 | 数据包过滤方法和装置 |
CN101594355A (zh) * | 2009-06-17 | 2009-12-02 | 华为技术有限公司 | 一种实现软件跨版本交互的方法及装置 |
CN101764815A (zh) * | 2009-12-23 | 2010-06-30 | 杭州华三通信技术有限公司 | 一种xml报文的获取方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102469073A (zh) | 2012-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113810791B (zh) | 一种提高智能网卡/dpu网络遥测技术性能的方法 | |
CN111352889B (zh) | 一种基于mctp协议的设备管理方法、设备、装置和介质 | |
CN103118007B (zh) | 一种用户访问行为的获取方法和系统 | |
CN101902485B (zh) | 一种反向Web代理的链接改写方法 | |
CN101651683B (zh) | 一种信令消息解析源代码生成方法 | |
CN103916440A (zh) | 一种远程升级的方法及其装置 | |
CN109756514B (zh) | 一种航天器复杂协议的遥测数据动态处理方法 | |
CN111935081B (zh) | 一种数据包脱敏方法和装置 | |
CN102750249B (zh) | 上位机与下位机通信的方法、装置及系统 | |
WO2014135038A1 (zh) | 基于pcie总线的报文传输方法与装置 | |
CN106656714A (zh) | 一种基于EtherCAT总线的通信协议方法及系统 | |
CN112765175A (zh) | 一种接口数据的处理方法、装置、计算机设备及介质 | |
CN102469073B (zh) | 通信方法和装置 | |
CN101876990A (zh) | 传递树形结构对象的方法 | |
CN110191156B (zh) | 一种基于区块链的数据处理方法及装置 | |
CN113852533B (zh) | 一种多通道数据通信系统、方法及电子设备 | |
CN103646015B (zh) | 发送、接收以及传输xml报文的方法和系统 | |
CN105915518A (zh) | 一种以太网数据帧实时解析方法及装置 | |
CN103366000B (zh) | 一种大体积xml报文的解析方法 | |
CN103067779B (zh) | 机顶盒应用程序的更新方法及系统 | |
CN100578980C (zh) | 一种移动多媒体广播系统的文件接收方法 | |
CN113472878B (zh) | 利用浏览器插件实现vnc中文件拖拽传输的方法及装置 | |
CN104660474A (zh) | 基于智能家居控制系统的网络通讯方法 | |
CN103685449B (zh) | 信息处理装置及控制方法 | |
CN103338229B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200826 Address after: Shenzhen Futian District City, Guangdong province 518000 Zhenxing Road, SEG Science Park 2 East Room 403 Co-patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Address before: 518000 Guangdong city of Shenzhen province Futian District SEG Science Park 2 East Room 403 Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |