一种数据包的处理方法、装置及服务器的制造方法

文档序号:9869877阅读:286来源:国知局
一种数据包的处理方法、装置及服务器的制造方法
【技术领域】
[0001]本发明涉及通信技术领域,尤其涉及一种数据包的处理方法、装置及服务器。
【背景技术】
[0002]XMPP (Extensible Messaging and Presence Protocol)是一种以可扩展标记语言(XML)为基础的开放式即时通讯协议,是经互联网工程工作小组(IETF)通过的互联网标准。XMPP规定了近实时的、可扩展的即时消息(Instant Messaging)传输标准,凭借其巨大的灵活性和开放性在即时通讯市场上占有了很大的份额。许多互联网和计算机行业巨头均采用XMPP协议实现其即时消息通讯服务。
[0003]目前在全世界范围,许多正在运转的大规模即时消息(頂)系统,都是按XMPP协议或按XMPP协议框架进行改造和扩展类似的协议。
[0004]由于XMPP协议是从早期的jabber协议发展而来,主要针对的环境是互联网和个人电脑(PC)环境。因此在移动互联网和移动终端的环境里面会存在以下问题:
[0005]1.采用XML描述消息,消息体比较大,空间浪费严重,不适合需要省流量省电的移动互联网环境。
[0006]2.直接采用XML流方式解析,在数据包比较大或通信环境比较恶劣的情况下,出现通信故障时,需要重新解析,效率低下,并且没有严格的消息确认和重发机制,有可能会出现包丢失或重复。
[0007]3.XMPP协议扩展麻烦,需要严格定义,不适合业务快速变化。

【发明内容】

[0008]为了解决上述技术问题,本发明公开了一种数据包的处理方法、装置及服务器,解决了现有技术中消息体较大,解析效率低下,没有严格的消息确认和重发机制,容易出现丢包或重复,不适合业务快速化的问题。
[0009]依据本发明的一个方面,提供了一种数据包的处理方法,包括:
[0010]生成待发送的基于可扩展消息与存在协议XMPP消息数据,所述XMPP消息数据包括消息头和消息体;
[0011]将所述消息头进行自定义封装,得到封装后的消息头;
[0012]将所述消息体转换为符合预设协议格式的消息体;
[0013]将所述封装后的消息头和符合预设协议格式的消息体进行封装,得到新的消息包;
[0014]发送所述新的消息包。
[0015]其中,将所述消息头进行自定义封装,得到封装后的消息头的步骤包括:
[0016]将所述消息按照自定义协议头格式封装,所述自定义协议头包括:消息长度、消息序号、消息类型标志、消息通信质量标志以及压缩标志。
[0017]其中,所述消息长度为消息长度字段与消息序号字段、消息包类型字段、消息通信质量控制字段、消息压缩标志以及XMPP消息体的UTF-8字节流的长度之和;
[0018]所述消息序号,用于消息配对使用,对发送的消息包必须经过序号应答回复;
[0019]所述消息包类型主要包括请求包和响应包,所述请求包和所述响应包之间的所述消息序号必须配对;
[0020]所述压缩标志用于区分所述消息体是否采用了压缩方式;
[0021]所述消息通信质量标志,用于区别消息发送的不同响应级别;其中所述不同响应级别包括:允许收不到或丢失、确认收到以及支持消息回执。
[0022]其中,将所述消息体转换为符合预设协议格式的消息体的步骤包括:
[0023]将所述消息体转换为符合UTF-8协议格式的消息体。
[0024]其中,所述发送所述新的消息包的步骤为:
[0025]获取所述新的消息包的响应级别;
[0026]依据所述响应级别发送所述新的消息包。
[0027]其中,所述新的消息包的响应级别为确认收到的类型时,所述方法还包括:
[0028]检测预设时间内是否接收到第一客户端的确认包;
[0029]若未收到所述确认包,则再次发送所述新的消息包。
[0030]其中,所述新的消息包的响应级别为支持消息回执的类型时,所述方法还包括:
[0031]向第一客户端发送确认包;
[0032]转发所述消息包至第二客户端;
[0033]检测是否接收到第二客户端的确认包;
[0034]若接收到第二客户端的确认包,则向第一客户端发送回执消息;
[0035]若未接收到第二客户端的确认包,则向第二客户端再次发送所述新的消息包。
[0036]依据本发明的另一个方面,提供了一种数据包的处理装置,包括:
[0037]生成模块,用于生成待发送的基于可扩展消息与存在协议XMPP消息数据,所述XMPP消息数据包括消息头和消息体;
[0038]第一封装模块,用于将所述消息头进行自定义封装,得到封装后的消息头;
[0039]转换模块,用于将所述消息体转换为符合预设协议格式的消息体;
[0040]第二封装模块,用于将所述封装后的消息头和符合预设协议格式的消息体进行封装,得到新的消息包;
[0041]第一发送模块,用于发送所述新的消息包。
[0042]其中,所述第一封装模块具体用于将所述消息按照自定义协议头格式封装,所述自定义协议头包括:消息长度、消息序号、消息类型标志、消息通信质量标志以及压缩标志。
[0043]其中,所述消息长度为消息长度字段与消息序号字段、消息包类型字段、消息通信质量控制字段、消息压缩标志以及XMPP消息体的UTF-8字节流的长度之和;
[0044]所述消息序号,用于消息配对使用,对发送的消息包必须经过序号应答回复;
[0045]所述消息包类型的主要包括请求包和响应包,所述请求包和所述响应包之间的所述消息序号必须配对;
[0046]所述压缩标志用于区分所述消息体没有采用压缩方和所述消息体采用了 zip压缩方式;
[0047]所述消息通信质量标志,用于区别消息发送的不同响应级别;
[0048]其中,所述不同响应级别包括:允许收不到或丢失、确认收到以及支持消息回执。
[0049]其中,所述转换模块具体用于将所述消息体转换为符合UTF-8协议格式的消息体。
[0050]其中,所述第一发送模块还包括:
[0051]第一获取单元,用于获取所述消息包的响应级别;
[0052]第一发送单元,用于依据所述响应级别发送所述新的消息包。
[0053]其中,所述消息包的响应级别为确认收到的类型时,所述第一发送模块,还包括:
[0054]第一检测单元,用于检测预设时间内是否接收到第一客户端的确认包;
[0055]若未收到来自客户端的确认包,则第一发送单元再次发送所述新的消息包。
[0056]其中,所述消息包的响应级别为支持消息回执的类型时,所述第一发送模块,还包括:
[0057]第二发送单元,用于向第一客户端发送确认包;
[0058]第三发送单元,用于转发消息包至第二客户端;
[0059]第二检测单元,用于检测是否接收到第二客户端的确认包;
[0060]第四发送单元,用于若接收到第二客户端的确认包,则向第一客户端发送回执信息;
[0061]未接收到第二客户端的确认包,则第三发送单元再次向所述第二客户端转发所述新的消息包。
[0062]依据本发明的另一个方面,提供了一种服务器,包括以上所述的数据包的处理装置。
[0063]本发明的有益效果是:
[0064]本发明的技术方案,采用数据协议包的通信方式,用协议头封装XMPP数据包,通过协议头长度字段保障数据的完整性,并且定义了不同类型数据包的通信质量,保障了不同类型数据包的通信质量模式,并且将原始包体转换为更加有利于采用压缩算法进行压缩的格式。
【附图说明】
[0065]图
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1