CN102761543B - 一种实现sip协议通用编解码的方法和装置 - Google Patents

一种实现sip协议通用编解码的方法和装置 Download PDF

Info

Publication number
CN102761543B
CN102761543B CN201210217648.5A CN201210217648A CN102761543B CN 102761543 B CN102761543 B CN 102761543B CN 201210217648 A CN201210217648 A CN 201210217648A CN 102761543 B CN102761543 B CN 102761543B
Authority
CN
China
Prior art keywords
decoding
message
protocol
module
encoding
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.)
Expired - Fee Related
Application number
CN201210217648.5A
Other languages
English (en)
Other versions
CN102761543A (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.)
Beijing Zhongchuang Telecom Test Co Ltd
Original Assignee
Beijing Zhongchuang Telecom Test Co Ltd
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 Beijing Zhongchuang Telecom Test Co Ltd filed Critical Beijing Zhongchuang Telecom Test Co Ltd
Priority to CN201210217648.5A priority Critical patent/CN102761543B/zh
Publication of CN102761543A publication Critical patent/CN102761543A/zh
Application granted granted Critical
Publication of CN102761543B publication Critical patent/CN102761543B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

本发明提出了一种实现SIP协议通用编解码的方法,其中该方法包括:一种实现SIP协议通用编解码的方法,该方法包括采用正则表达式来描述单个协议规则;将所述协议规则编写成配置文件;通过读取所述配置文件中的信息,获取编解码规则,当协议扩展的时候,仅修改所述配置文件;在消息的编码和解码过程中,通过所述配置文件来描述当前应用中需要编解码的字段信息,而不是对整个消息进行编解码。此外,本发明还公开了一种实现SIP协议通用编解码的装置。通过本发明提出的方法和装置,能够在不修改程序的基础上,通过扩展协议配置文件,实现对协议的支持,从而提高了编解码的效率。

Description

一种实现SIP协议通用编解码的方法和装置
技术领域
本发明属于通信领域,特别涉及电信网络中有着广泛的应用的SIP协议。
背景技术
SIP协议即会话发起协议,是NGN网络和3G网络及Lte网络中的核心协议,目前在电信网络中有着广泛的应用。SIP协议的编解码器是任何一个SIP系统不可或缺的组件。
SIP协议具有很强的包容性,它既可以用于建立(如音频、视频、多方通话等)各种会话,也可以被用来传送即时消息和文件,这得益于它对HTTP等协议的吸收借鉴。这使运营商能够通过统一的业务平台提供综合的业务,实现网络融合。
SIP消息以文本方式编码,编解码过程本质上就是对字符串的操作。现有的编解码方案,首先会对SIP消息定义为结构体,例如:
在编解码的过程中,对整个消息中信息进行解析,对结构体中定义的字段逐个填充。以下面的消息为例,说明现有的编解码方案。
消息解码方法,逐行的读入消息内容,将消息内容逐个解析,填入结构体对应的字段中。解析流程首先读取第一行内容,按照协议规范确定消息类型,将解码后的结果存入MSGTYPE中。MSGTYPE也是一个结构体,定义如下:
将“INVITEsip:160192.168.5.26:52164;rinstance=1a20786d0e090015SIP/2.0”消息中的“INVITE”赋值给m_strMethod字段,m_uChoice自定义字段与m_strMethod字段含义相同,类型为short便于程序操作,CSIP_SIP_URI也是一个结构体,存放“sip:160192.168.5.26:52164;rinstance=1a20786d0e090015”中的信息,m_fSip_Version存放“SIP/2.0”信息,结构体“SIP_MSG”中其它字段的赋值方式和这个字段相似,就不作过多说明。
消息编码方案,需要将结构体中的字段信息逐个赋值,赋值完成之后,程序会按照协议规范将这些消息输出成SIP消息。
现有的编解码方案,必需竟可能大地定义静态数组以满足所有可能的情况,这样整个SIP_MSG结构就非常大,再加上SIP协议基于文本的方式,使各种协议扩充工作变得十分简单,协议的扩充主要在消息上做文章,SIP消息的三个基本部分:消息类型、消息头、消息体而这三部分在协议规范中都可以被不断扩充,当消息扩展的时候,就需要去修改SIP_MSG结构,导致程序不断的修改更新。并且在实际的应用中,可能只关注SIP消息中的某几个信息,并不是对所有的信息都关注,如果对所有SIP消息中的字段全部编解码的话,增加了系统开销,同时还降低了系统编解码的效率。
发明内容
为了解决现有技术问题,一种通用的编解码方案,适应协议扩展,采用可配置编解码方案,提高编解码效率。
具体而言,本发明提出了一种实现SIP协议通用编解码的方法,该方法包括:步骤1.采用正则表达式来描述单个协议规则;步骤2.将所述协议规则编写成配置文件;步骤3.通过读取所述配置文件中的信息,获取编解码规则,当协议扩展的时候,只需要修改配置文件即可;步骤4.在消息的编码和解码过程中,通过配置文件来描述当前应用中需要编解码的字段信息,而不是对整个消息进行编解码。
此外,本发明还提出一种实现SIP协议通用编解码的装置,其中该装置包括:协议编解码模块,消息编码模块和消息解码模块,其中,协议编解码模块,用于完成对消息的编解码功能;消息编码模块,用于实现与底层和上层模块之间的通信,同时调用协议编解码模块实现对消息的编码;消息解码模块,用于实现与底层和上层模块之间的通信,同时调用协议编解码模块实现对消息的解码;其中采用正则表达式对协议规则进行描述,并通过xml配置文件描述SIP协议及协议类型。
其中,所述协议编解码模块进一步包括:协议文件描述解析单元,用于实现对所述配置文件的解析处理,将文件描述的信息,转化为程序中用到的对象,供协议编解码处理单元使用;协议编解码处理单元,用于提供对外调用的接口,供消息编码模块和消息解码模块使用,实现对消息的编解码;其中,编码返回的结果,是一个可供发送的完整消息;解码返回的结果,是解码后得到的解码信息,存放在程序自定义的结构体中。
其中,所述消息编码模块会根据编码配置文件来进行选择编码而不是对所有的信息进行编码。
其中,所述消息编码模块进一步包括:消息编码与上层通信单元,用于实现与上层模块的通信,接收上层下发的编码信息;消息编码单元,用于调用协议编解码模块实现对消息编码;消息编码与底层通信单元,用于实现将编码完成的消息,传递给底层部分实现消息发送。
其中,消息解码模块根据解码配置文件来进行选择解码而不是对所有的信息进行解码。
其中,消息解码模块进一步包括:消息解码与上层通信单元,用于与上层模块的通信,将解码后的结果交给上层处理模块;消息解码和消息解码与底层通信单元,用于从底层接收消息;消息解码单元实现对消息解码。
其中,消息解码单元会根据解码配置文件来进行,选择解码而不是对所有的信息进行解码,配置文件格式与编码模块相同。
本发明提出的技术方案主要解决了SIP协议的扩展性问题,能够在不修改程序的基础上,通过扩展协议配置文件,实现对协议的支持。同时通过编解码配置文件,实现对消息中部分信息的编解码,提高了编解码的效率。
附图说明
图1为在本发明提出的实现SIP协议通用编解码的方法的方框图;
图2为实现SIP协议通用编解码的装置的结构示意图。
具体实施方式
下面结合附图,对本发明作详细的阐述。
参见图1,其是本发明提出的实现SIP协议通用编解码的方法的方框图。其主要包括以下4个步骤:
S101.采用正则表达式来描述单个协议规则;
S102.将所述协议规则编写成配置文件;
S103.通过读取所述配置文件中的信息,获取编解码规则,当协议扩展的时候,只需要修改配置文件即可;
S104.在消息的编码和解码过程中,通过配置文件来描述当前应用中需要编解码的字段信息,而不是对整个消息进行编解码。
在实际应用中,首先实现协议编解码器,由于SIP协议是一个文本协议,所以采用正则表达式来描述单个协议规则,最后将这些规则编写成配置文件,协议编码器通过读取配置文件信息,获取编解码规则,当协议扩展的时候,只需要修改配置文件即可;其次,实现消息编码和解码模块,在这两个模块中通过配置文件来描述当前应用中需要编解码的字段信息,而不是对整个消息进行编解码,从而提高了编解码效率。
此外,本发明还可以通过一种实现SIP协议通用编解码的装置来完成,具体参见图2,其为实现SIP协议通用编解码的装置的结构示意图。在图2中,该装置用通用编解码模块表示。
由图2可以看出,通用编解码模块由三个子模块组成,分别为协议编解码模块,消息编码模块和消息解码模块。协议编解码模块,完成对消息的编解码功能;消息编码模块,实现与底层和上层模块之前的通信,同时会调用协议编解码模块实现对消息的编码;消息解码模块,实现与底层和上层模块之前的通信,同时会调用协议编解码模块实现对消息的解码。
协议编解码模块
协议编解码模块是核心部分,协议编解码模块由两部分构成协议文件描述解析单元和协议编解码处理单元。
a)协议文件描述解析单元
由于SIP协议是基于文本方式,采用正则表达式对协议信息进行描述,通过xml配置文件描述SIP协议,描述协议类型,格式如下:
通过header部分的描述,编解码SIP消息中的类型信息,当类型信息符合“message”列表中给出的其中某项时,表示编解码成功,通过采用这种方法,可以适应SIP消息类型的扩展,当协议类型扩展以后,只需要在“message”列表中增加相应的描述即可,不需要修改程序内部逻辑。
描述消息头部分字段信息的格式如下:
上面给出的三条规则中,都是在描述SIP消息中的“from”字段,但是每条规则中所关心的内容却是不一样的,第一条″from″关心from字段的全部信息,第二条″from-name″关心from用户的名字信息,第三条″from-addr″关心from用户的地址信息,这些规则是可以根据需求扩充的,可以根据实际场景的需求编写适合当前场景的规则,从而能够适应协议头部的扩展。
协议文件描述解析单元实现对上面文件的解析处理,将文件描述的信息,转化为程序中用到的对象,供协议编解码处理单元使用。
b)协议编解码处理单元
主要提供对外调用的接口,供消息编码模块和消息解码模块使用,实现对消息的编解码,编码返回的结果,是一个可供发送的完整消息,解码返回的结果,是解码后得到的解码信息,存放在程序自定义的结构体中,通过“fielddef”中“name”描述的信息找到对应的解码信息。
消息编码模块
消息编码模块,由三个单元组成,消息编码与上层通信单元,消息编码单元和消息编码与底层通信单元,消息编码与上层通信单元实现与上层模块的通信,接收上层下发的编码信息;消息编码单元调用协议编解码模块实现对消息编码;消息编码与底层通信单元,实现将编码完成的消息,传递给底层部分实现消息发送。
在消息编码模块中,会根据编码配置文件来进行,选择编码而不是对所有的信息进行编码。配置文件格式如下:
通过上面标下划线的语句中,程序中定义了一组描述编码动作的名词,“restore-from-external”含义是通过读取外部文件中的字段信息,根据“entity”部分中描述的对应上面协议字典中编解码规则,对“message”中消息内容进行相应的编码。
消息解码模块
消息解码模块,由三个单元组成,消息解码与上层通信单元,消息解码和消息解码与底层通信单元,消息解码与底层通信单元实现从底层接收消息;消息解码单元实现对消息解码;消息解码与上层通信单元实现与上层模块的通信,将解码后的结果交给上层处理模块。
在消息解码模块中,会根据解码配置文件来进行,选择解码而不是对所有的信息进行解码。配置文件格式与编码模块相同,只是对应描述动作的名词不同。
本发明主要解决了SIP协议的扩展性问题,能够在不修改程序的基础上,通过扩展协议配置文件,实现对协议的支持。同时通过编解码配置文件,实现对消息中部分信息的编解码,提高了编解码的效率。
综上所述,虽然本发明已以优选实施例披露如上,然而其并非用以限定本发明。本发明所属技术领域的普通技术人员,在不脱离本发明的精神和范围内,可作各种变动与修饰。因此,本发明的保护范围当视所附的权利要求所界定的范围为准。

Claims (4)

1.一种实现SIP协议通用编解码的方法,该方法包括:
步骤1.采用正则表达式来描述单个协议规则,并通过xml配置文件描述SIP协议及协议类型,其中,采用正则表达式对SIP消息中同一字段进行分类描述;
步骤2.将所述协议规则编写成配置文件;
步骤3.通过读取所述配置文件中的信息,获取编解码规则,当协议扩展的时候,仅修改所述配置文件;
步骤4.在消息的编码和解码过程中,配置文件格式与编码模块相同,通过所述配置文件来描述当前应用中需要编解码的字段信息,而不是对整个消息进行编解码。
2.一种实现SIP协议通用编解码的装置,其中该装置包括:协议编解码模块,消息编码模块和消息解码模块,其中
协议编解码模块,用于完成对消息的编解码功能,包括:协议文件描述解析单元,采用正则表达式来描述单个协议规则,并通过xml配置文件描述SIP协议及协议类型,其中,采用正则表达式对SIP消息中同一字段进行分类描述,实现对所述配置文件的解析处理,将文件描述的信息,转化为程序中用到的对象,供协议编解码处理单元使用;协议编解码处理单元,用于提供对外调用的接口,供消息编码模块和消息解码模块使用,实现对消息的编解码;其中,编码返回的结果,是一个可供发送的完整消息;解码返回的结果,是解码后得到的解码信息,存放在程序自定义的结构体中;
消息编码模块,用于实现与底层和上层模块之间的通信,同时调用协议编解码模块实现对消息的编码,其中所述消息编码模块会根据编码配置文件来进行选择编码而不是对所有的信息进行编码;
消息解码模块,用于实现与底层和上层模块之间的通信,同时调用协议编解码模块实现对消息的解码,其中消息解码模块根据解码配置文件来进行选择解码而不是对所有的信息进行解码。
3.如权利要求2所述的装置,其中所述消息编码模块进一步包括:
消息编码与上层通信单元,用于实现与上层模块的通信,接收上层下发的编码信息;
消息编码单元,用于调用协议编解码模块实现对消息编码;
消息编码与底层通信单元,用于实现将编码完成的消息,传递给底层部分实现消息发送。
4.如权利要求2所述的装置,其中消息解码模块进一步包括:
消息解码与上层通信单元,用于与上层模块的通信,将解码后的结果交给上层处理模块;
消息解码和消息解码与底层通信单元,用于从底层接收消息;
消息解码单元实现对消息解码;
其中,消息解码单元会根据解码配置文件来进行,选择解码而不是对所有的信息进行解码,配置文件格式与编码模块相同。
CN201210217648.5A 2012-06-27 2012-06-27 一种实现sip协议通用编解码的方法和装置 Expired - Fee Related CN102761543B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210217648.5A CN102761543B (zh) 2012-06-27 2012-06-27 一种实现sip协议通用编解码的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210217648.5A CN102761543B (zh) 2012-06-27 2012-06-27 一种实现sip协议通用编解码的方法和装置

Publications (2)

Publication Number Publication Date
CN102761543A CN102761543A (zh) 2012-10-31
CN102761543B true CN102761543B (zh) 2016-03-16

Family

ID=47055864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210217648.5A Expired - Fee Related CN102761543B (zh) 2012-06-27 2012-06-27 一种实现sip协议通用编解码的方法和装置

Country Status (1)

Country Link
CN (1) CN102761543B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077414B (zh) * 2014-07-16 2017-07-25 武汉虹信通信技术有限责任公司 一种应用于lte网络信号的解码装置及其解码方法
CN108011687B (zh) * 2016-11-01 2019-11-26 腾讯科技(深圳)有限公司 数据处理方法及装置
CN108076094B (zh) * 2016-11-15 2020-10-09 烟台蓝洋电子科技有限责任公司 字典协议终端设备
CN106790133B (zh) * 2016-12-28 2019-09-20 北京天融信网络安全技术有限公司 一种应用层协议解析方法及装置
CN110290123B (zh) * 2019-06-14 2021-11-12 吉旗(成都)科技有限公司 一种快速扩展和编解码jt/t809协议的方法
CN110557377B (zh) * 2019-08-01 2021-08-27 福建星云电子股份有限公司 动力电池配对修复设备兼容多种通信协议的方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101631126A (zh) * 2009-08-06 2010-01-20 中兴通讯股份有限公司 一种自适应编码/解码方法和装置
CN102143148A (zh) * 2010-11-29 2011-08-03 华为技术有限公司 用于通用协议解析的参数获取和通用协议解析方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1219383C (zh) * 2002-07-22 2005-09-14 华为技术有限公司 一种实现用户业务远程验证拨号协议的编码和解码方法
CN102413141B (zh) * 2011-11-30 2014-10-08 华为技术有限公司 网络消息解析方法及通信设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101631126A (zh) * 2009-08-06 2010-01-20 中兴通讯股份有限公司 一种自适应编码/解码方法和装置
CN102143148A (zh) * 2010-11-29 2011-08-03 华为技术有限公司 用于通用协议解析的参数获取和通用协议解析方法及装置

Also Published As

Publication number Publication date
CN102761543A (zh) 2012-10-31

Similar Documents

Publication Publication Date Title
CN102761543B (zh) 一种实现sip协议通用编解码的方法和装置
CN101222476B (zh) 一种可扩展标记语言文件编辑器、文件传输方法及系统
CN103686210B (zh) 实时音视频转码方法和系统
CN101795407B (zh) 用于对比特序列进行编码的方法和设备
CN103179133B (zh) 基于实体类的客户端与服务器通信的方法
JP2002016500A (ja) 複数のマッピングテーブルを用いた可変長符号化及び復号化方法、並びにその装置
US20060008009A1 (en) Method and system for entropy coding for scalable video codec
CN101610268A (zh) 一种关键字过滤的实现方法和设备
CN101116342A (zh) 带有硬件加速器的多标准变长解码器
EP2219117A1 (en) A processing module, a device, and a method for processing of XML data
CN105103192A (zh) 用于顶点误差校正的方法和装置
CN112188211A (zh) 一种转码实现方法和装置
CN103731154B (zh) 一种基于语义分析的数据压缩算法
CN103701470B (zh) 一种流智能预测差异压缩算法及相应的控制装置
CN109871520A (zh) 一种适用于http内容内嵌的二进制数据编解码方法
WO2023179800A1 (zh) 通信接收方法及其装置
CN101087276A (zh) 媒体网关及媒体网关中报文的转换方法
CN102131161B (zh) 一种短消息的编码方法、装置及系统
Riedel et al. A model driven internet of things
CN102651795B (zh) 游长缩减的二元序列压缩编码方法
CN104281632B (zh) 基于对象协议映射的编码解码方法及系统
CN104113394B (zh) 通信调制信号的压缩及解压方法
CN105183750B (zh) 紧凑式xml解析系统
CN112055223A (zh) 一种图像编解码方法及编解码器
CN103929447A (zh) 一种解析HTTP chunked编码数据的方法

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160316

Termination date: 20180627