一种移动终端协议栈的消息处理方法转让专利

申请号 : CN201510251577.4

文献号 : CN104980433B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 鲍峰刘剑锋王玮张健吴祖民

申请人 : 熊猫电子集团有限公司南京熊猫汉达科技有限公司

摘要 :

本发明公开了一种移动终端协议栈的消息处理方法,包括为消息申请内存空间并初始化标记、对消息进行编码、对消息进行解码和传递消息四个步骤;通过定义一种消息结构,并将消息编码、解码、传递过程中的相关操作封装起来,向使用者提供若干个接口(PUT,PUSH,PULL,GET_LENGTH),从而实现在协议栈中所需要的对于消息的各种处理操作。本发明降低了消息编解码的复杂度,同时也丰富了消息的处理方式,使得消息在处理和传递过程中更见可靠、便利、灵活。

权利要求 :

1.一种移动终端协议栈的消息处理方法,其特征在于:包括为消息申请内存空间并初始化标记、对消息进行编码、对消息进行解码和传递消息;

所述的为消息申请内存空间并初始化标记中,若要发送一条消息,首先应为它申请一块内存空间,所述消息包含消息结构体、消息类型和信令三个区域,所述消息结构体包含标记1、标记2和标记3,其中标记1指向消息类型的真实位置,标志2指向消息承载的信令的结束位置,标记3始终指向消息类型和信令的分界位置,申请内存空间之后,初始化标记,将三个标记同时指向消息类型和信令的分界位置;

所述的对消息进行编码中,将消息类型和信令放入消息内,如果只需要消息类型不需要信令,则不编码信令;其编码过程如下:首先,将消息类型放入消息中的消息类型区域,再将标记1向前移动相应消息类型的大小,同时该操作返回标记1移动之后的位置;

然后,将承载的信令放入消息中的信令区域,再将标记2后移写入信令长度的大小,标记2的位置也就是信令的尾部,同时这一操作返回标记2后移之后的位置;

所述的对消息进行编码中,通过标记1找到消息类型,通过消息类型来判断这个消息在通信流程中的功能以及消息中可能包含的信令;

所述的传递消息中,如果接收层是消息中承载的信令的目的层,就可以通过标记3来找到信令;如果接收层不是消息中承载的信令的目的层,则接收层需要将消息类型从消息中取出来,然后将标记1向后移动取出消息类型的长度,再通过编码操作将新的消息类型放进消息中,组成新的消息,再将新的消息发送到下一个接收层,直到到达消息中所承载的信令的目的层为止。

2.根据权利要求1所述的一种移动终端协议栈的消息处理方法,其特征在于:所述的申请内存空间的大小可以容纳最长的消息内容,消息类型和消息结构体的总和。

3.根据权利要求1所述的一种移动终端协议栈的消息处理方法,其特征在于:所述的编码过程中,将消息类型编码操作封装起来,称为PUSH操作,并向用户提供一个接口。

4.根据权利要求3所述的一种移动终端协议栈的消息处理方法,其特征在于:所述PUSH操作可操作多个消息类型在消息中。

5.根据权利要求1所述的一种移动终端协议栈的消息处理方法,其特征在于:所述的编码过程中,将信令编码操作封装起来,称为PUT操作,并向用户提供一个接口。

6.根据权利要求1所述的一种移动终端协议栈的消息处理方法,其特征在于:所述的编码过程结束后,标记1和标记2之间就是实际使用的消息长度,将求取长度的操作封装为GET_LENGTH操作,并向用户提供一个接口。

7.根据权利要求1所述的一种移动终端协议栈的消息处理方法,其特征在于:在所述的传递消息过程中,将接收层的传递操作封装起来,称为PULL操作,并向用户提供一个接口。

说明书 :

一种移动终端协议栈的消息处理方法

技术领域

[0001] 本发明属于移动通信领域,具体涉及一种移动终端协议栈的消息处理方法。

背景技术

[0002] 蜂窝移动通信系统主要是由交换网路子系统(NSS),无线基站子系统(BSS)和移动台(MS)三大部分组成。移动终端,算是一种移动台。移动终端或者叫移动通信终端是指可以在移动中使用的计算机设备,广义的讲包括手机、笔记本、平板电脑、POS机甚至包括车载电脑。但是大部分情况下是指手机或者具有多种应用功能的智能手机以及平板电脑。
[0003] 协议栈:指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是因特网协议栈。
[0004] 终端协议栈:在终端移动台运行的协议栈。终端协议栈根据功能可以分为接入层和非接入层。非接入层又由物理层、媒体接入层、无线资源控制层等构成。因此,终端协议栈也是由许多上下级关系的层次构成。
[0005] 对等层:网络和终端一样,也具有协议分层结构。在这两个不同实体中的相同层被称为对等层。
[0006] 消息:在同一实体的协议栈中,上下层之间经常需要信息的交互。消息常常作为层层之间信息以及对等层信令交互的载体。
[0007] 信令:终端和网络的对等层之间交互的信息。承载在同一实体中的上下层相应类型的消息中,并逐层传递到另一实体的对等层(两实体在层一进行物理连接)。同一类型的消息可以承载多种信令,但一次只能承载一条信令或者不承载信令。
[0008] 图1中展示了网络之间的层三信令传递的示意图。一个实体的层三信令承载在层三与层二的消息中发送到层二,然后经过层二处理承载在层二与层一的消息中发送到层一,接着通过物理连接发送到另一实体的层一;另一实体的层一经过处理将层三信令承载在层一与层二的消息中发送到层二,然后,经过层二处理承载在层二与层三的消息中发送到层三,最后,经过层三(对等层)处理提取出信令。
[0009] 综上所述,在消息的传递过程中,需要对消息进行编码解码处理,发送和接收等操作。由于消息的处理将涉及到很多操作,因此,消息的处理常常作为协议栈设计的一大重点和难点。能否合理高效地对消息进行处理,将关系着整个协议栈的性能好坏。现有的处理协议栈消息的方法很多,但是没有通用性,实现复杂,容易出错,效率低,往往依赖于某种传输方式。

发明内容

[0010] 本发明的目的是提供一种移动终端协议栈的消息处理方法,通过对消息的结构进行精心的设计以及对消息编解码操作进行封装,为承载信令提供丰富的接口(消息内容编码、解码),从而实现在协议栈中所需要的对于消息的各种处理操作,使得消息的处理简单、灵活、可靠、清晰。在消息传递过程中,不必考虑使用何种方式进行传输,使得消息在层与层之间的传递更加方便、灵活。
[0011] 本发明采取的技术方案是:一种移动终端协议栈的消息处理方法,包括为消息申请内存空间并初始化标记、对消息进行编码、对消息进行解码和传递消息。
[0012] 所述的为消息申请内存空间并初始化标记中,若要发送一条消息,首先应为它申请一块内存空间,所述消息包含消息结构体、消息类型和信令三个区域,所述消息结构体包含标记1、标记2和标记3,其中标记1指向消息类型的真实位置,标志2指向消息承载的信令的结束位置,标记3始终指向消息类型和信令的分界位置,申请内存空间之后,初始化标记,将三个标记同时指向消息类型和信令的分界位置。
[0013] 所述的对消息进行编码中,将消息类型和信令放入消息内,如果只需要消息类型不需要信令,则不编码信令;其编码过程如下:
[0014] 首先,将消息类型放入消息中的消息类型区域,再将标记1向前移动相应消息类型的大小,同时该操作返回标记1移动之后的位置;
[0015] 然后,将承载的信令放入消息中的信令区域,再将标记2后移写入信令长度的大小,标记2的位置也就是信令的尾部,同时这一操作返回标记2后移之后的位置;
[0016] 所述的对消息进行编码中,通过标记1找到消息类型,通过消息类型来判断这个消息在通信流程中的功能以及消息中可能包含的信令。
[0017] 所述的传递消息中,如果接收层是消息中承载的信令的目的层,就可以通过标记3来找到信令;如果接收层不是消息中承载的信令的目的层,则接收层需要将消息类型从消息中取出来,然后将标记1向后移动取出消息类型的长度,再通过编码操作将新的消息类型放进消息中,组成新的消息,再将新的消息发送到下一个接收层,直到到达消息中所承载的信令的目的层为止。
[0018] 进一步的,所述的申请内存空间的大小可以容纳最长的消息内容,消息类型和消息结构体的总和,即,所申请的消息总长度不小于消息类型,信令的长度和消息结构体大小总和。
[0019] 进一步的,所述的编码过程中,将消息类型编码操作封装起来,称为PUSH操作,并向用户提供一个接口。所述PUSH操作可操作多个消息类型在消息中。
[0020] 进一步的,所述的编码过程中,将信令编码操作封装起来,称为PUT操作,并向用户提供一个接口。
[0021] 进一步的,所述的编码过程结束后,标记1和标记2之间就是实际使用的消息长度,将求取长度的操作封装为GET_LENGTH操作,并向用户提供一个接口。
[0022] 进一步的,在所述的传递消息过程中,将接收层的传递操作封装起来,称为PULL操作,并向用户提供一个接口。
[0023] 本发明的有益效果是:本方案能够应用在任何需要进行内部消息处理的系统中。消息类型和承载的信令分离,以及消息编解码操作的接口封装,降低了消息编解码的复杂度,同时也丰富了消息的处理方式,使得消息在处理和传递过程中更见可靠、便利、灵活。

附图说明

[0024] 图1是信令传输示意图。
[0025] 图2是消息处理示意图。
[0026] 图3是消息初始化示意图。
[0027] 图4是消息编码示意图。
[0028] 图5是消息解码示意图。
[0029] 图6是多类型消息编码示意图。

具体实施方式

[0030] 下面结合附图对本发明作进一步说明。
[0031] 本发明提出了一种终端协议栈处理消息的方法和装置,通过对消息的结构进行精心的设计以及对消息编解码操作进行封装,为承载信令提供丰富的接口(消息内容编码,解码),从而实现在协议栈中所需要的对于消息处理的操作。图2给出了消息结构和消息处理的示意图,具体处理过程如下:
[0032] 一、为消息申请内存空间并初始化相关的标记
[0033] 若要发送一条消息,首先应为它申请一块内存空间。消息包含消息结构体、消息类型和信令三个区域。申请空间的大小应可以容纳最长的消息内容,消息类型和消息结构体的总和,即,所申请的消息总长度不小于消息类型,信令的长度和消息结构体大小总和。
[0034] 消息结构体包含3个标记,其中标记1指向消息类型的真实位置,标志2指向消息承载的信令的结束位置,标记3始终指向消息类型和信令的分界位置。
[0035] 如图3所示,申请空间之后,应初始化相应的标记。将三个标记同时指向消息类型和信令的分界位置,即,标记3的固定位置。
[0036] 二、对消息进行编码
[0037] 如图4所示,将消息类型和信令放入消息内。如果只需要消息类型不需要信令,则不编码信令。
[0038] 首先,将消息类型放入消息中的消息类型区域,再将标记1向前移动相应消息类型的大小。同时该操作返回标记1移动之后的位置,这样就可以把对应的消息类型拷贝到从标记1开始的空间内。我们将这些操作封装起来,称为PUSH操作,向用户提供一个接口。
[0039] 然后,将承载的信令放入消息中的信令区域,再将标记2后移写入信令长度的大小,标记2的位置也就是信令的尾部,同时这一操作返回标记2后移之后的位置,这样就可以将要写入的信令拷贝到起始地址为标记2移动之前指向的空间。我们将这些操作封装起来,称为PUT操作,向用户提供一个接口。
[0040] 这时,标记1和标记2之间就是实际使用的消息长度,为方便使用者计算实际使用的消息长度,我们将求取长度的操作封装为GET_LENGTH操作,向用户提供一个接口。
[0041] 对消息进行编码结束后就可以将消息发送出去。
[0042] 三、对消息进行解码
[0043] 接收层收到消息后,需要对消息进行解码。通过标记1可以找到消息类型,通过消息类型来判断这个消息在通信流程中的功能以及消息中可能包含的信令。
[0044] 四、传递消息
[0045] 如图5所示,如果接收层是消息中承载的信令的目的层,就可以通过标记3来找到信令。如果接收层不是消息中承载的信令的目的层,则接收层需要将消息类型从消息中取出来,然后将标记1向后移动取出消息类型的长度。我们将这些操作封装起来,称为PULL操作。然后,再通过PUSH操作将新的消息类型放进消息中,组成新的消息,再将新的消息发送到下一个接收层。直到到达消息中所承载的信令的目的层为止。
[0046] 如图6所示,根据通信协议,消息中有时可能被PUSH操作多个消息类型在消息中。
[0047] 综上所述,我们定义了一种消息结构,并将消息编码、解码、传递过程中的相关操作封装起来,向使用者提供若干个接口(PUT,PUSH,PULL,GET_LENGTH)。使用这种方法来处理消息,使得使用者可以简单、灵活的对消息进行处理。在消息传递过程中,对消息的处理更加可靠、方便。更重要的是,这种方法能够应用在任何需要进行内部消息处理的系统中。
[0048] 本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。