信息获取方法、客户端设备和服务端设备与流程

文档序号:12622316阅读:432来源:国知局
信息获取方法、客户端设备和服务端设备与流程

本发明涉及通信领域,尤指一种信息获取方法、客户端设备和服务端设备。



背景技术:

互联网时代下,家庭网关依然已成为家庭内计算机和各种移动终端联系的纽带,然而,家庭网关设备是一个非常复杂的系统,主要由底层操作系统和上层应用协议组成。系统的复杂性必然带来故障诊断的复杂性。

在网关设备的开发过程中,如果网关设备的调试运行出现故障,开发人员通常通过shell命令方式对设备故障进行诊断,shell命令方式是指通过操作系统的命令行工具输入指令的方式。

具体地,开发人员从网关设备的串口以shell命令的方式输入诊断命令,网关设备对诊断命令进行处理和响应,并根据开发人员的需要,将当前设备的上下文情况作为响应信息通过串口进行输出,因此,开发人员可以通过串口了解当前网关设备运行的上下文情况,从而进行故障诊断。

然而,网关设备可能会出现串口卡死的情况,在这种情况下,开发人员无法通过shell命令方式了解当前设备运行的上下文情况,给故障诊断带来了困难。

此外,有些网关设备没有设置串口,例如,普通家庭使用的网关设备普遍没有设置串口,如果这些网关设备出现故障,维修人员也无法通过串口了解当前设备运行的上下文情况,从而难以完成网关设备故障诊断。



技术实现要素:

为了解决上述问题,本发明提出了一种信息获取方法、客户端设备和服 务端设备,能够实现串口卡死或无法使用串口的情况下的网关故障诊断中用户输入命令对应的响应信息的获取,从而保证网关故障诊断的顺利进行。

为了达到上述目的,本发明提出了一种信息获取方法,所述方法包括:

构造ICMP Echo报文,将用户输入命令设置在ICMP Echo报文的数据区;

将ICMP Echo报文发送给服务端;

接收服务端发送的与所述ICMP Echo报文对应的ICMP Reply报文;

解析ICMP Reply报文的数据区携带的针对用户输入命令的响应信息。

优选地,在所述解析ICMP Reply报文的数据区携带的针对用户输入命令的响应信息之后,所述信息获取方法还包括:

将所述针对用户输入命令的响应信息展示给用户。

优选地,所述ICMP Echo报文和ICMP Reply报文均为ICMP报文;ICMP报文包括报文头部和数据区,其中,报文头部包括报文类型标识和代码字段;数据区包括:Magic字段、长度字段和信息承载字段;

所述构造ICMP Echo报文,将用户输入命令设置到ICMP Echo报文的数据区具体包括:

设置ICMP Echo报文的报文类型标识和代码字段;

填充ICMP Echo报文的Magic字段;

计算用户输入命令的长度,将计算得到的长度填充到ICMP Echo报文的长度字段,

将用户输入命令填充到ICMP Echo报文的信息承载字段。

优选地,所述解析ICMP Reply报文的数据区携带的针对用户输入命令的响应信息包括:

检测ICMP Echo报文的Magic字段与ICMP Reply报文中的Magic字段是否匹配;

当检测结果为匹配时,根据ICMP Reply报文的长度字段,读取ICMP Reply报文的信息承载字段中携带的响应信息。

优选地,所述将ICMP Echo报文发送给服务端具体包括:

通过网络连接端口将ICMP Echo报文发送给服务端。

为了达到上述目的,本发明还提出了一种信息获取方法,所述方法包括:

接收客户端发送的ICMP Echo报文;

解析ICMP Echo报文中携带的用户输入命令;

对用户输入命令进行处理,并生成针对用户输入命令的响应信息;

构造ICMP Reply报文,将针对用户输入命令的响应信息设置在ICMP报文的数据区;

将ICMP Reply报文发送给客户端。

优选地,所述解析ICMP Echo报文中携带的用户输入命令具体包括:

检测ICMP Echo报文的Magic字段是否为指定的Magic字段;

当测ICMP Echo报文的Magic字段是指定的Magic字段时,根据ICMP Echo报文的长度字段,读取ICMP Echo报文的信息承载字段中携带的用户输入命令;

所述构造ICMP Reply报文,将针对用户输入命令的响应信息设置在ICMP报文的数据区具体包括:

设置ICMP Reply报文的报文类型标识和代码字段;

填充ICMP Reply报文的Magic字段;

计算响应信息的长度,将计算得到的长度填充到ICMP Reply报文的长度字段,

将响应信息填充到ICMP Reply报文的信息承载字段。

为了达到上述目的,本发明还提出了一种客户端设备,设置在终端上,其特征在于,所述客户端设备包括:

第一构造单元,用于构造ICMP Echo报文,将用户输入命令设置在ICMP Echo报文的数据区;

第一发送单元,用于将ICMP Echo报文发送给服务端;

第一接收单元,用于接收服务端发送的与所述ICMP Echo报文对应的ICMP Reply报文;

第一解析单元,用于解析ICMP Reply报文的数据区携带的针对用户输入命令的响应信息。

优选地,还包括:

展示单元,用于将所述针对用户输入命令的响应信息展示给用户。

优选地,所述ICMP Echo报文和ICMP Reply报文均为ICMP报文;ICMP报文包括报文头部和数据区,其中,报文头部包括报文类型标识和代码字段;数据区包括:Magic字段、长度字段和信息承载字段;

所述第一构造单元具体用于:

设置ICMP Echo报文的报文类型标识和代码字段;

填充ICMP Echo报文的Magic字段;

计算用户输入命令的长度,将计算得到的长度填充到ICMP Echo报文的长度字段,

将用户输入命令填充到ICMP Echo报文的信息承载字段。

优选地,所述第一解析单元具体包括:

第一检测模块,用于检测ICMP Echo报文的Magic字段与ICMP Reply报文中的Magic字段是否匹配;

第一读取模块,用于当检测结果为匹配时,根据ICMP Reply报文的长度字段,读取ICMP Reply报文的信息承载字段中携带的响应信息。

优选地,所述第一发送单元具体用于:通过网络连接端口将ICMP Echo报文发送给服务端。

为了达到上述目的,本发明还提出了一种服务端设备,设置在网关设备 上,其特征在于,所述服务端设备包括:

第二接收单元,用于接收客户端发送的ICMP Echo报文;

第二解析单元,用于解析ICMP Echo报文中携带的用户输入命令;

处理单元,用于对用户输入命令进行处理,并生成针对用户输入命令的响应信息;

第二构造单元,用于构造ICMP Reply报文,将针对用户输入命令的响应信息设置在ICMP报文的数据区;

第二发送单元,用于将ICMP Reply报文发送给客户端。

优选地,所述第二解析单元具体包括:

第二检测模块,用于检测ICMP Echo报文的Magic字段是否为指定的Magic字段;

第二读取模块,用于当测ICMP Echo报文的Magic字段是指定的Magic字段时,根据ICMP Echo报文的长度字段,读取ICMP Echo报文的信息承载字段中携带的用户输入命令;

所述第二构造单元具体用于:

设置ICMP Reply报文的报文类型标识和代码字段;

填充ICMP Reply报文的Magic字段;

计算响应信息的长度,将计算得到的长度填充到ICMP Reply报文的长度字段,

将响应信息填充到ICMP Reply报文的信息承载字段。

与现有技术相比,本发明提供的技术方案包括:构造ICMP Echo报文,将用户输入命令设置在ICMP Echo报文的数据区;将ICMP Echo报文发送给服务端;接收服务端发送的与所述ICMP Echo报文对应的ICMP Reply报文;解析ICMP Reply报文的数据区携带的针对用户输入命令的响应信息。通过本发明的方案,根据ICMP协议,通信网络中的设备在收到ICMP Echo报文时,将对应回复ICMP Reply报文,本发明方案中,基于ICMP协议的Reply 和Echo报文的交互方式,将用户输入命令承载到ICMP Echo报文的数据区中,在网关的服务器解析完诊断命令后,将用户输入命令的响应信息承载到ICMP Reply报文的数据区,从而利用通过网络传输的ICMP报文实现用户输入命令对应的响应信息的传输,从而能够通过响应信息完成网关故障诊断,通过上述技术方案,提供了一种串口卡死或无法使用串口的情况下的网关故障诊断中用户输入命令对应的响应信息的获取方法,从而保证网关故障诊断的顺利进行。

附图说明

下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。

图1为现有技术中ICMP报文格式定义示意图;

图2为本发明提出了一种信息获取方法的流程示意图;

图3为本发明提出的另一种信息获取方法的流程示意图;

图4A为应用实例中根据ICMP Echo报文据构造的IP报文的结构示意图;

图4B为应用实例中根据ICMP Reply报文据构造的IP报文的结构示意图;

图5为本发明实施例提出的客户端设备的结构示意图;

图6为本发明实施例提出的服务端设备的结构示意图。

具体实施方式

为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的各种方式可以相互组合。

在介绍本发明实施例提出的信息获取方法之前,首先对ICMP(Internet Control Message Protocol,Internet控制报文协议)报文进行简单介绍。ICMP协议是TCP/IP协议族的一个子协议,用于在IP(Internet Protocol,网络互联协议)主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,这些控制消息并不传输用户数据。根据ICMP协议,通信网络中的设备在收到ICMP Echo报文时,将对应回复ICMP Reply报文,其中一个典型应用就是Ping诊断,通过Ping命令可以查看网络的是否联通,具体地,为了判断设备A和设备B之间的网络联通性,设备A向设备B发送ICMP Echo报文之后,如果设备A能够收到设备B发送的ICMP Reply报文,则说明判断设备A和设备B之间的网络联通。。ICMP Echo报文和ICMP Reply报文都是ICMP报文中的一种,和其他类型的ICMP报文不同的是,ICMP Echo报文和ICMP Reply报文的数据区为随机数据。

参见图1A,为现有技术中ICMP报文格式定义示意图。如图1所示,ICMP报文包括报文头部和数据区(ICMP数据),其中,报文头部包括报文类型标识(8位类型)、代码字段(8位代码),以及16位的校验和。当ICMP报文的报文头部的报文类型标识和代码字段均设置为0时,ICMP报文为ICMP Echo报文或ICMP Reply报文。当ICMP报文为ICMP Echo报文或ICMP Reply报文时,其数据区为随机数据,不包含有效信息。

参见图2,本发明提出了一种信息获取方法,包括:

步骤110,构造ICMP Echo报文,将用户输入命令设置在ICMP Echo报文的数据区;

其中,ICMP Echo报文为ICMP报文的一种;参见图1B,为本发明实施例提供的ICMP报文格式定义示意图。如图1所示,本发明实施例提供的ICMP报文包括报文头部和数据区(ICMP数据),ICMP报文包括报文头部和数据区,其中,报文头部包括报文类型标识和代码字段,还包括16位的校验和;数据区包括:Magic字段、长度字段和信息承载字段。在图1B中示例性的,报文类型标识为8位类型,代码字段为8位代码,对于用于诊断命令请求的ICMP Echo报文,信息承载字段中携带相应的诊断命令。ICMP报文前加上IP首部构成IP报文。

步骤110中,构造ICMP Echo报文,将用户输入命令设置到ICMP Echo报文的数据区具体包括:

设置ICMP Echo报文的报文类型标识和代码字段;

填充ICMP Echo报文的Magic字段;

计算用户输入命令的长度,将计算得到的长度填充到ICMP Echo报文的长度字段,

将用户输入命令填充到ICMP Echo报文的信息承载字段。

其中,设置ICMP Echo报文的报文类型标识和代码字段具体为将报文类型标识和代码字段均设置为0。

通过步骤110上述过程,实现了将用户输入命令设置到ICMP Echo报文的数据区中,通过Magic字段,使得服务端能够获知该ICMP Echo报文携带有用户输入指令,通过长度字段,使得服务端能够正确地解析ICMP Echo报文携带的用户输入指令。

其中,在执行网关故障诊断之前,客户端可以和服务端事先约定一个指定的Magic字段,在客户端构造ICMP Echo报文时,将指定的Magic字段设置在ICMP Echo报文的Magic字段位置,在服务端接收到ICMP Echo报文时,通过判断ICMP Echo报文的Magic字段是否为指定的Magic字段,来判断是否需要解析数据区中的用户输入命令,如果没有Magic字段,则按照普通的ICMP Echo报文进行处理即可。

本实施例中的用户输入命令尤其指用于故障诊断的诊断命令。在步骤110之前,信息获取方法还包括,接收用户输入的用户输入命令。

步骤120,将ICMP Echo报文发送给服务端;

步骤130,接收服务端发送的与ICMP Echo报文对应的ICMP Reply报文;

步骤140,解析ICMP Reply报文的数据区携带的针对用户输入命令的响应信息。

步骤140中,ICMP Reply报文为ICMP报文的一种。解析ICMP Reply报文的数据区携带的针对用户输入命令的响应信息包括:

检测ICMP Echo报文的Magic字段与ICMP Reply报文中的Magic字段是否匹配;

当检测结果为匹配时,根据ICMP Reply报文的长度字段,读取ICMP Reply报文的信息承载字段中携带的响应信息。

当检测结果为不匹配时,将接收的ICMP Reply报文丢弃。

同样地,当用户接收到ICMP Reply报文时,通过ICMP Reply报文中的Magic字段,能够获知该ICMP Reply报文中携带有用户输入指令对应的响应信息,通过长度字段,使得服务端能够正确地解析ICMP Echo报文携带的用户输入指令对应的响应信息。

优选的,在步骤140之后,该信息获取方法还包括:

步骤150,将针对用户输入命令的响应信息展示给用户。

本发明实施例中,上述将ICMP Echo报文发送给服务端具体包括:

通过网络连接端口将ICMP Echo报文发送给服务端。

基于与上述方法实施例相同或相似的构思,本发明实施例还提供一种信息获取方法,参见图3,为本发明提出的信息获取方法的流程示意图,如图3所示,所述信息获取方法包括:

步骤210,接收客户端发送的ICMP Echo报文;

步骤220,解析ICMP Echo报文中携带的用户输入命令;

步骤220中,所述解析ICMP Echo报文中携带的用户输入命令具体包括:

检测ICMP Echo报文的Magic字段是否为指定的Magic字段;

当测ICMP Echo报文的Magic字段是指定的Magic字段时,根据ICMP Echo报文的长度字段,读取ICMP Echo报文的信息承载字段中携带的用户输入命令。

其中,在执行网关故障诊断之前,客户端可以和服务端事先约定一个指定的Magic字段,在客户端构造ICMP Echo报文时,将指定的Magic字段设置在ICMP Echo报文的Magic字段位置,在服务端接收到ICMP Echo报文时,通过判断ICMP Echo报文的Magic字段是否为指定的Magic字段,来判断是否需要解析数据区中的用户输入命令,如果没有Magic字段,则按照普通的ICMP Echo报文进行处理即可。

步骤230,对用户输入命令进行处理,并生成针对用户输入命令的响应信息;本步骤根据现有技术的处理方法对用户输入命令进行处理。

步骤240,构造ICMP Reply报文,将针对用户输入命令的响应信息设置在ICMP报文的数据区;

步骤240中,所述构造ICMP Reply报文,将针对用户输入命令的响应信息设置在ICMP报文的数据区具体包括:

设置ICMP Reply报文的报文类型标识和代码字段;

填充ICMP Reply报文的Magic字段;

计算响应信息的长度,将计算得到的长度填充到ICMP Reply报文的长度字段,

将响应信息填充到ICMP Reply报文的信息承载字段。

在图1B中,示例性的,对于用于实现诊断命令输出的ICMP Reply报文,信息承载字段中携带有诊断命令对应的响应信息。

其中,设置ICMP Reply报文的报文类型标识和代码字段具体为将报文类型标识和代码字段均设置为0。

步骤250,将ICMP Reply报文发送给客户端。

其中,通过网络连接端口将ICMP Reply报文发送给客户端。

下面,结合一个具体的示例进行说明。

网管设备的场景模拟系统在运行某些业务一段时间后,会出系统重启的情况,推测可能系统内存不足导致,因此开发人员希望了解网关设备中系统 各个进程内存占用情况,可以由客户端通过本发明提供的信息获取方法来了解系统各个进程内存占用情况。诊断命令的约定为,用户输入PS,服务端回应当前系统进程列表以及状态。

参见图4A,为上述应用实例中根据ICMP Echo报文据构造的IP报文的结构示意图。如图4A所示,将ICMP Echo报文的报文类型标识和代码字段均设置为0,将Magic字段填充为33448899共两个字节,将ICMP Echo报文的长度字段设置为2共1个字节,将诊断命令ps填充到数据区的剩余部分,数据区剩余不足的补0,就完成了ICMP Echo报文的构造,然后根据ICMP Echo报文据构造IP报文,具体为将构造的ICMP Echo报文承载到IP报文的数据部分并发送。根据ICMP Echo报文据构造的IP报文的内容如图4A所示。其中,33448899即为指定的Magic字段,该数值为示例性说明,Magic字段也可以是其他的数值。

服务端收到ICMP Echo报文之后,解析并处理ICMP Echo报文,具体地,检查Magic字段是否为指定的Magic字段33448899,如果与指定的Magic字段不一致,则走协议栈正常ICMP流程,否则,对用户输入命令进行提取,根据命令长度字段,提取对应的用户输入命令,本示例中,长度字段为2,根据两个字节提取的用户输入命令为ps,然后,根据查询注册到系统的服务端命令处理函数,如果找到,直接调用命令处理函数(遍历内核进程表,记录每个任务的上下文信息,包含内存占用、进程标识符、名称等)对用户输入命令ps进行处理,将处理结果作为响应信息,然后,服务端构造ICMP Reply报文,其中,将ICMP Reply报文的Magic字段填充为指定的Magic字段33448899,计算命令执行结果长度,本示例中为512,并保存到长度字段,拷贝处理结果到ICMP数据区命令输出部分。构造的ICMP Reply报文内容如图4B所示,同样,将构造的ICMP Reply报文承载到IP报文的数据部分并发送。

客户端接收到服务端发送的ICMP Reply报文之后,检查Magic字段是否33448899,如果不一致,则丢弃,否则,提取ICMP Reply报文的长度字段,根据ICMP Reply报文的长度字段,读取ICMP Reply报文的信息承载字段中携带的响应信息,并格式化显示到命令行工具上供用户查看。用户分析 PS命令输出的进程信息,查看各个进程vmsize,检查是否有异常数据值,即可大致分析出哪个进程执行不太正常。

本发明实施例提供的基于ICMP协议的信息获取方法实现简单,通过对命令的扩展可以更多的了解网关内部系统的运行情况,对于诊断网关设备的运行情况有很好的实用性。

基于与上述方法实施例相同或相似的构思,本发明实施例还提供一种客户端设备,设置在终端上,用于网关故障诊断,参见图5,为本发明实施例提出的客户端设备的结构示意图,如图5所示,该客户端设备包括:

第一构造单元11,用于构造ICMP Echo报文,将用户输入命令设置在ICMP Echo报文的数据区;

第一发送单元12,用于将ICMP Echo报文发送给服务端;

第一接收单元13,用于接收服务端发送的与所述ICMP Echo报文对应的ICMP Reply报文;

第一解析单元14,用于解析ICMP Reply报文的数据区携带的针对用户输入命令的响应信息。

本发明实施例中,所述客户端设备还包括:

展示单元15,用于将所述针对用户输入命令的响应信息展示给用户。

本发明实施例中,所述ICMP Echo报文和ICMP Reply报文均为ICMP报文;ICMP报文包括报文头部和数据区,其中,报文头部包括报文类型标识和代码字段;数据区包括:Magic字段、长度字段和信息承载字段;

第一构造单元11具体用于:

设置ICMP Echo报文的报文类型标识和代码字段;

填充ICMP Echo报文的Magic字段;

计算用户输入命令的长度,将计算得到的长度填充到ICMP Echo报文的长度字段,

将用户输入命令填充到ICMP Echo报文的信息承载字段。

本发明实施例中,所述第一解析单元14具体包括:

第一检测模块141,用于检测ICMP Echo报文的Magic字段与ICMP Reply报文中的Magic字段是否匹配;

第一读取模块142,用于当检测结果为匹配时,根据ICMP Reply报文的长度字段,读取ICMP Reply报文的信息承载字段中携带的响应信息。

本发明实施例中,所述第一发送单元12具体用于:通过网络连接端口将ICMP Echo报文发送给服务端。

基于与上述方法实施例相同或相似的构思,本发明实施例还提供一种服务端设备,设置在网关设备上,用于网关故障诊断,参见图6,为本发明实施例提出的服务端设备的结构示意图,如图6所示,该服务端设备包括:

第二接收单元21,用于接收客户端发送的ICMP Echo报文;

第二解析单元22,用于解析ICMP Echo报文中携带的用户输入命令;

处理单元23,用于对用户输入命令进行处理,并生成针对用户输入命令的响应信息;

第二构造单元24,用于构造ICMP Reply报文,将针对用户输入命令的响应信息设置在ICMP报文的数据区;

第二发送单元25,用于将ICMP Reply报文发送给客户端。

本发明实施例中,所述第二解析单元22具体包括:

第二检测模块221,用于检测ICMP Echo报文的Magic字段是否为指定的Magic字段;

第二读取模块222,用于当测ICMP Echo报文的Magic字段是指定的Magic字段时,根据ICMP Echo报文的长度字段,读取ICMP Echo报文的信息承载字段中携带的用户输入命令;

所述第二构造单元24具体用于:

设置ICMP Reply报文的报文类型标识和代码字段;

填充ICMP Reply报文的Magic字段;

计算响应信息的长度,将计算得到的长度填充到ICMP Reply报文的长度字段,

将响应信息填充到ICMP Reply报文的信息承载字段。

其中,第二发送单元25具体用于通过网络连接端口将ICMP Reply报文发送给客户端。

需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1