CN107547505A - 一种报文处理方法及装置 - Google Patents
一种报文处理方法及装置 Download PDFInfo
- Publication number
- CN107547505A CN107547505A CN201710474293.0A CN201710474293A CN107547505A CN 107547505 A CN107547505 A CN 107547505A CN 201710474293 A CN201710474293 A CN 201710474293A CN 107547505 A CN107547505 A CN 107547505A
- Authority
- CN
- China
- Prior art keywords
- icmp
- rawip
- socket
- icmp echo
- agreements
- 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.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本发明提供一种报文处理方法及装置,所述方法包括:NQA进程通过原始套接字向RAWIP协议发送ICMP回显请求报文;所述RAWIP协议在所述ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有所述预设标识符字段的ICMP回显请求报文;当所述RAWIP协议接收到ICMP回显应答报文时,判断所述ICMP回显应答报文的ICMP头中是否携带有所述预设标识符字段;若是,则所述RAWIP协议将所述ICMP回显应答报文缓存至socket接收缓冲区队列;否则,所述RAWIP协议丢弃所述ICMP回显应答报文。应用本发明实施例可以避免ICMP回显应答攻击报文对目的端设备回复的ICMP回显应答报文的正常处理的影响,提高网络连通状态检测的准确性。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种报文转发方法及装置。
背景技术
Ping是Windows、Unix和Linux系统下的一个命令,其主要功能是检测网络是否能够连通,从而可以用于帮助用户分析判断网络故障。
Ping命令检测网络是否能够连通的主要流程如下:
发起方设备构造ICMP(Internet Control Message Protocol,互联网控制报文协议)echo(回显)request(请求)报文,并发送给目的端设备;
目的端设备接收到ICMP echo request报文时,回复ICMP echo reply(应答);
若发起方设备在预设时间内接收到目的端设备发送的ICMP echo reply报文,则确定网络能够连通(即目的端设备可达);否则,确定网络不能够连通(即目的端不可达);
其中,发起方设备接收到ICMP echo reply报文时,会先将接收到的ICMP echoreply报文缓存到接收缓冲区队列中,并依次处理接收缓冲区队列中的各ICMP echo reply报文。
然而实践发现,当存在大量ICMP echo reply攻击报文时,目的端设备发送的ICMPecho reply报文可能会由于接收缓冲区队列被ICMP echo reply攻击报文占满而被丢弃,或者,由于ICMP echo reply攻击报文太多,导致发起方设备未能在预设时间内处理到目的端设备发送的ICMP echo reply报文,进而发生网络连通状态检测错误的情况,即在目的端设备回复了ICMP echo reply报文的情况下,发起方设备检测出网络不能够连通。
发明内容
本发明提供一种报文处理方法及装置,以避免ICMP回显应答攻击报文对目的端设备回复的ICMP回显应答报文的正常处理的影响。
根据本发明实施例的第一方面,提供一种报文处理方法,包括:
NQA进程通过原始套接字向原始互联网协议RAWIP协议发送互联网控制报文协议ICMP回显请求报文;
所述RAWIP协议在所述ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有所述预设标识符字段的ICMP回显请求报文;
当所述RAWIP协议接收到ICMP回显应答报文时,判断所述ICMP回显应答报文的ICMP头中是否携带有所述预设标识符字段;
若是,则所述RAWIP协议将所述ICMP回显应答报文缓存至socket接收缓冲区队列;
否则,所述RAWIP协议丢弃所述ICMP回显应答报文。
根据本发明实施例的第二方面,提供一种报文处理装置,包括:NQA进程模块和原始互联网协议RAWIP协议模块;其中:
所述NQA进程模块,用于通过原始套接字向RAWIP协议模块发送互联网控制报文协议ICMP回显请求报文;
所述RAWIP协议模块,用于在所述ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有所述预设标识符字段的ICMP回显请求报文;
所述RAWIP协议模块,还用于当接收到ICMP回显应答报文时,判断所述ICMP回显应答报文的ICMP头中是否携带有所述预设标识符字段;若是,则将所述ICMP回显应答报文缓存至socket接收缓冲区队列;否则,丢弃所述ICMP回显应答报文。
应用本发明实施例,NQA进程通过原始套接字向RAWIP协议发送ICMP回显请求报文;RAWIP协议在ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有预设标识符字段的ICMP回显请求报文;当RAWIP协议接收到ICMP回显应答报文时,判断ICMP回显应答报文的ICMP头中是否携带有预设标识符字段;若是,则RAWIP协议将ICMP回显应答报文缓存至socket接收缓冲区队列;否则,RAWIP协议丢弃ICMP回显应答报文,避免了ICMP回显应答攻击报文对目的端设备回复的ICMP回显应答报文的正常处理的影响,提高了网络连通状态检测的准确性。
附图说明
图1是本发明实施例提供的一种报文处理方法的流程示意图;
图2是本发明实施例提供的一种报文处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,下面以NQA(Network Quality Analyzer,网络质量分析)Ping实现为例对现有流程中的ICMP回显请求报文的发送以及ICMP回显应答报文的接收的具体流程进行简单说明。
值得说明的是,本发明实施例提供的报文处理方案并不限于用于NQA Ping实现,也可以应用于其它通过Ping命令检测网络是否能够连通的场景,如PPPOE(Point to PointProtocol over Ethernet,基于以太网的点对点通讯协议)Ping(通过Ping命令探测PPPOE用户终端是否在线)、IPOE(Internet Protocol over Ethernet,基于以太网的互联网协议)Ping(通过Ping命令探测IPOE用户终端是否在线)等。
发起方设备发送ICMP回显请求报文的过程:
1、NQA进程调用socket(套接字)库函数socket创建一个使用ICMP协议的RAWsocket(原始套接字),并在内核中创建一个socket控制块;其中,该socket控制块中保存有该原始套接字的ICMP协议号;
2、NQA进程封装ICMP头和载荷数据,其中,ICMP头中的Identifier(标识符)字段填充NQA进程号;其中,ICMP回显请求报文的格式可以如表1所示:
表1
3、NQA进程通过原始套接字调用socket库函数sendto发送ICMP回显请求报文给内核TCP(Transmission Control Protocol传输控制协议)/IP协议栈的传输层RAWIP(原始互联网协议)协议(本文中简称为RAWIP协议),RAWIP协议将该ICMP回显请求报文作为IP报文的数据部分封装完整的IP报文,通过网络层、链路层发送给目的端设备。
目的端设备接收到发起方设备发送的ICMP回显请求报文,上送传输层RAWIP识别ICMP回显请求报文,并回复ICMP应答报文;其中,ICMP回显应答报文的格式与ICMP回显请求报文的格式相同。
发起方设备接收ICMP回显应答报文的过程:
1、发起方设备接收到ICMP回显应答报文,上送RAWIP协议;
2、RAWIP协议根据该ICMP回显应答报文的ICMP协议号查找保存有该ICMP协议号的socket控制块,并将该ICMP回显应答报文缓存至该socket控制块对应的接收缓冲区队列,并向NQA进程发送读数据通知;
3、NQA进程接收到读数据通知时,通过原始套接字调用socket库函数recvmsg从内核的socket接收缓冲区队列中读取ICMP回显应答报文,并检查ICMP回显应答报文的ICMP头中的标识符字段,若该标识符字段与NQA进程号不一致,则忽略该ICMP回显应答报文;否则,认为发起方设备与目的端设备之间的网络能够连通,即目的端设备可达。
为了使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
请参见图1,为本发明实施例提供的一种报文处理方法的流程示意图,其中,该报文处理方法可以应用于发起方设备,如图1所示,该报文处理方法可以包括以下步骤:
步骤101、NQA进程通过原始套接字向RAWIP协议发送ICMP回显请求报文。
本发明实施例中,当发起方设备需要向目的端设备发送ICMP回显请求报文时,发起方设备可以通过NQA进程构造ICMP回显请求报文,并将该ICMP回显请求报文发送给RAWIP协议。
步骤102、RAWIP协议在ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有预设标识符字段的ICMP回显请求报文。
本发明实施例中,为了避免由于存在大量的ICMP回显应答攻击报文而导致目的端设备回复的ICMP回显应答报文无法得到及时处理,甚至被丢弃,发起方设备需要能够正确区分目的端设备回复的ICMP回显应答报文和ICMP回显攻击报文。
相应地,在本发明实施例中,当RAWIP协议接收到NQA进程发送的ICMP回显请求报文时,RAWIP协议在将该ICMP回显请求报文发送给目的端之前,可以在该ICMP回显请求报文的ICMP头中添加预设标识字段,该预设标识字段用于发起方设备识别接收到的ICMP回显应答报文是否为目的端设备回复的ICMP回显应答报文。
步骤103、当RAWIP协议接收到ICMP回显应答报文时,判断ICMP回显应答报文的ICMP头中是否携带有预设标识字段。若是,转至步骤104;否则,转至步骤105。
步骤104、RAWIP协议将ICMP回显应答报文缓存至socket接收缓冲区队列。
步骤105、RAWIP协议丢弃该ICMP回显应答报文。
本发明实施例中,当目的端设备接收到发起方设备发送的ICMP回显请求报文,且确定该ICMP回显请求报文的ICMP头中携带有预设标识字段时,目的端设备可以向发起方设备回复ICMP头中携带有该预设标识字段的ICMP回显应答报文。
当发起方设备接收到ICMP回显应答报文时,上送RAWIP协议。RAWIP协议接收到ICMP回显应答报文时,需要判断该ICMP回显应答报文的ICMP头中是否携带有上述预设标识字段;若是,则RAWIP协议可以确定该ICMP回显应答报文是目的端设备回复的,此时,RAWIP协议可以将该ICMP回显应答报文缓存至接收socket缓冲区队列;否则,即RAWIP协议接收到的ICMP回显应答报文的ICMP头中未携带上述预设标识字段,则RAWIP协议可以确定该ICMP回显应答报文不是目的端设备回复的,属于ICMP回显应答攻击报文,此时,RAWIP协议可以丢弃该ICMP回显应答报文,即不将该ICMP回显应答报文缓存至socket接收缓冲区队列。
进一步地,在本发明实施例中,RAWIP协议将ICMP回显应答报文缓存至socket接收缓冲区队列之后,还可以向NQA进程发送读数据通知;NQA进程接收到读数据通知时,可以通过原始套接字读取socket接收缓冲区队列中的ICMP回显应答报文,并当读取成功时,确定网络能够连通。
可见,在图1所示的方法流程中,通过在ICMP回显请求报文的ICMP头中携带预设标识字段,使发起方设备的RAWIP协议能够根据接收到的ICMP回显应答报文的ICMP头中是否携带有该预设标识字段来识别接收到的ICMP回显应答报文属于目的端设备回复的ICMP回显应答报文或属于ICMP回显应答攻击报文,并将目的端设备回复的ICMP回显应答报文缓存至socket接收缓冲区队列,丢弃ICMP回显应答攻击报文,从而避免了ICMP回显应答攻击报文对目的端设备回复的ICMP回显应答报文的正常处理的影响,提高了网络连通状态检测的准确性。
作为一种可选的实施方式,在本发明实施例中,上述NQA进程通过原始套接字向RAWIP协议发送ICMP回显请求报文之前,还可以包括:
NQA进程创建使用ICMP协议的原始套接字,并在内核中创建一个套接字socket控制块,其中,socket控制块保存有原始套接字的ICMP协议号;
相应地,上述RAWIP协议在ICMP回显请求报文的ICMP头中添加预设标识字段,可以包括:
RAWIP协议生成随机数,并将随机数保存至该socket控制块;
RAWIP协议将随机数填充到ICMP回显请求报文的标识符字段。
在该实施方式中,为了提高预设标识字段的安全性,避免由于预设标识字段泄露而导致ICMP回显应答攻击报文中也携带有相同的预设标识字段的情况发生,发起方设备可以在每次需要发送ICMP回显请求报文时,生成随机数作为预设标识字段。
相应地,在该实施方式中,当RAWIP协议接收到NQA进程发送的ICMP回显请求报文时,RAWIP协议可以生成一个随机数,并将该随机数作为预设标识字段填充到ICMP回显请求报文的标识符字段,并发送携带有该随机数的ICMP回显请求报文。
此外,RAWIP协议还需要将生成的随机数保存至上述socket控制块,以便能够根据该随机数识别接收到的ICMP回显应答报文属于目的端设备回复的ICMP回显应答报文或属于ICMP回显攻击报文。
相应地,上述判断接收到的ICMP回显应答报文的ICMP头中是否携带有预设标识字段,可以包括:
获取ICMP回显应答报文的标识符字段的值;
根据ICMP回显应答报文的ICMP协议号查询保存有ICMP协议号的socket控制块,并获取该socket控制块中保存的随机数;
比较ICMP回显应答报文的标识符字段的值和获取到的的随机数;
若二者一致,则判断该ICMP回显应答报文的ICMP头中携带有预设标识字段;
否则,判断该ICMP回显应答报文的ICMP头中未携带预设标识字段。
具体地,在该实施方式中,当RAWIP协议接收到ICMP回显应答报文时,RAWIP协议一方面可以获取ICMP回显应答报文中携带的随机数;另一方面,可以根据ICMP回显应答报文的ICMP协议号查询保存有ICMP协议号的socket控制块,并获取该控制块中保存的随机数。
进而,RAWIP协议可以比较ICMP回显应答报文的标识符字段和从socket控制块中获取到的随机数;若二者一致,则RAWIP协议可以确定该ICMP回显应答报文的ICMP头中携带有预设标识字段,即该ICMP回显应答报文属于目的端设备回复的ICMP回显应答报文;否则,RAWIP协议可以确定该ICMP回显应答报文的ICMP头中未携带预设标识字段,即该ICMP回显应答报文属于ICMP回显应答攻击报文。
应该认识到,上述实施方式中所描述的以随机数作为预设标识字段,并将随机数填充到ICMP回显请求报文的标识符字段中的实现方式仅仅是本发明实施例提供的技术方案中在ICMP回显请求报文的ICMP头中携带预设标识字段的一种具体示例,而并不是对本发明保护范围的限定,也即在本发明实施例中,并不限于使用随机数作为预设标识字段,且该预设标识字段也并不限于携带于ICMP协议报文的标识符字段中,例如,也可以使用一个定时或周期性更新的数值作为预设标识字段,或者,可以通过对现有ICMP协议进行扩展,在ICMP回显请求报文中新增一个字段来携带预设标识字段,其具体实现在此不做赘述。
进一步地,在本发明实施例中,为了提高本发明实施例提供的技术方案的可控性,可以为发起方设备新增ICMP标识符检测功能选项,当发起方设备使能了ICMP标识符检测功能时,发起方设备可以按照本发明实施例提供的技术方案对接收到的ICMP回显应答报文进行识别区分;当发起方设备未使能ICMP标识符检测功能时,发起方设备可以按照现有流程进行处理。
相应地,在本发明实施例中,上述RAWIP协议生成随机数之前,还可以包括:
RAWIP协议判断是否使能ICMP标识符检测功能;
若是,则确定执行生成随机数的步骤。
在该实施方式中,当RAWIP协议接收到NQA进程发送的ICMP回显请求报文时,RAWIP协议需要先判断身是否使能ICMP标识符检测功能;若是,则生成随机数,并按照上述方法流程中所描述的将该随机数填充到ICMP回显请求报文的标识符字段;否则,RAWIP协议可以按照现有流程中描述的方式进行ICMP回显请求报文的发送。
作为一种可选的实施方式,在本发明实施例中,上述RAWIP协议判断是否使能ICMP标识符字段检测功能,可以包括:
RAWIP协议根据ICMP回显应答报文的ICMP协议号查找保存该ICMP协议号的socket控制块;
RAWIP协议根据该socket控制块中保存的socket控制选项ICMP_ECHO的值判断是否使能ICMP标识字段检测功能。
在该实施方式中,可以增加一个socket控制选项ICMP_ECHO,并将该ICMP_ECHO的值保存到相应的socket控制块中。
其中,该ICMP_ECHO的值可以包括用于标识ICMP_ECHO为开启状态的值以及用于标识ICMP_ECHO为关闭状态的值,且当ICMP_ECHO为开启状态时,表明设备使能ICMP标识符检测功能;当ICMP_ECHO为关闭状态时,表明设备未使能ICMP标识符检测功能。
相应地,在该实施方式中,RAWIP协议接收到ICMP回显应答报文时,可以根据该ICMP回显应答报文的ICMP协议号查找保存有该ICMP协议号的socket控制块,并根据该socket控制块中保存的socket控制选项ICMP_ECHO的值判断是否使能ICMP标识字段检测功能。
值得说明的是,在本发明实施例中,当该socket控制块中未保存有socket控制选项ICMP_ECHO的值时,RAWIP协议可以认为未使能ICMP标识符字段检测功能。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面以NQAPing实现为例对本发明实施例提供的技术方案中的ICMP回显请求报文的发送以及ICMP回显应答报文的接收的具体流程进行说明。
发起方设备中的NQA客户端发送ICMP回显请求报文的过程:
1、NQA进程调用socket库函数socket创建一个使用ICMP协议的原始套接字,并在内核中创建一个socket控制块,该socket控制块中会保存该原始套接字的ICMP协议号,并将socket控制选项ICMP_ECHO的值设置为用于标识ICMP_ECHO为开启状态的值;其中,该socket控制块中会保存该原始套接字的ICMP协议号,以及socket控制选项ICMP_ECHO的值;
其中,当socket控制选项ICMP_ECHO为开启状态时,发起方设备使能ICMP标识符字段检测功能;
2、NQA进程封装ICMP头和载荷数据,保留ICMP头中的标识符字段为0;
3、NQA进程通过原始套接字调用socket库函数sendto发送ICMP回显请求报文给内核协议栈的传输层RAWIP协议;
4、内核协议栈的传输层RAWIP协议根据保存了该ICMP回显请求的ICMP协议号的socket控制模块中保存的socket控制选项ICMP_ECHO的值确定socket控制选项ICMP_ECHO为开启状态,因而,生成一个随机数,由该socket控制块保存该随机数,并将该随机数填充到ICMP回显请求报文的标识符字段,然后更新ICMP回显请求报文的校验和,并将ICMP回显请求报文作为IP报文的数据部分封装完整的IP报文,通过网络层、链路层发送给目的端设备。
目的端设备接收到发起方设备发送的ICMP回显请求报文,上送RAWIP协议识别ICMP回显请求报文,并回复ICMP应答报文;其中,该ICMP回显应答报文的标识符字段为上述随机数。
发起方设备接收ICMP回显应答报文的过程:
1、发起方设备接收到ICMP回显应答报文,上送RAWIP协议;
2、RAWIP协议通过该ICMP回显应答报文的ICMP协议号找到保存有该ICMP协议号的socket控制块,将该socket控制块保存的随机数与ICMP回显应答报文的标识符字段的值进行比较,不一致则丢弃报文,一致则将ICMP回显应答报文缓存到socket接收缓冲区队列,并向NQA发送读数据通知;
3、NQA进程接收到读数据通知,通过原始套接字调用socket库函数recvmsg读取socket缓冲区队列中的报文,读取成功则确定发起方设备与目的端设备之间的网络能够连通,即目的端设备可达。
通过以上描述可以看出,在本发明实施例提供的技术方案中,NQA进程通过原始套接字向RAWIP协议发送ICMP回显请求报文;RAWIP协议在ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有预设标识符字段的ICMP回显请求报文;当RAWIP协议接收到ICMP回显应答报文时,判断ICMP回显应答报文的ICMP头中是否携带有预设标识符字段;若是,则RAWIP协议将ICMP回显应答报文缓存至socket接收缓冲区队列;否则,RAWIP协议丢弃ICMP回显应答报文,避免了ICMP回显应答攻击报文对目的端设备回复的ICMP回显应答报文的正常处理的影响,提高了网络连通状态检测的准确性。
请参见图2,为本发明实施例提供的一种报文处理装置的结构示意图,其中,所述装置可以应用于上述方法实施例中的发起方设备,如图2所示,该报文处理装置可以包括:NQA进程模块210和RAWIP协议模块220;其中:
所述NQA进程模块210,用于通过原始套接字向RAWIP协议模块发送互联网控制报文协议ICMP回显请求报文;
所述RAWIP协议模块220,用于在所述ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有所述预设标识符字段的ICMP回显请求报文;
所述RAWIP协议模块220,还用于当接收到ICMP回显应答报文时,判断所述ICMP回显应答报文的ICMP头中是否携带有所述预设标识符字段;若是,则将所述ICMP回显应答报文缓存至socket接收缓冲区队列;否则,丢弃所述ICMP回显应答报文。
在可选实施例中,所述NQA进程模块210,还用于创建使用ICMP协议的原始套接字,并在内核中创建一个套接字socket控制块,其中,所述socket控制块保存有所述原始套接字的ICMP协议号;
所述RAWIP协议模块220,具体用于生成随机数,并将所述随机数保存至所述socket控制块;将所述随机数填充到ICMP回显请求报文的标识符字段。
在可选实施例中,所述RAWIP协议模块220,具体用于获取所述ICMP回显应答报文的标识符字段的值;根据所述ICMP回显应答报文的ICMP协议号查询保存有所述ICMP协议号的socket控制块,并获取该socket控制块中保存的随机数;比较所述ICMP回显应答报文的标识符字段的值和获取到的随机数;若二者一致,则判断所述ICMP回显应答报文的ICMP头中携带有所述预设标识字段;否则,判断所述ICMP回显应答报文的ICMP头中未携带所述预设标识字段。
在可选实施例中,所述RAWIP协议模块220,还用于判断是否使能ICMP标识符字段检测功能;
所述RAWIP协议模块220,具体用于若使能ICMP标识符字段检测功能,则生成随机数。
在可选实施例中,所述RAWIP协议模块220,具体用于根据所述ICMP回显应答报文的ICMP协议号查找保存有该ICMP协议号的socket控制块;根据该socket控制块中保存的socket控制选项ICMP_ECHO的值判断是否使能ICMP标识字段检测功能。
在可选实施例中,所述RAWIP协议模块220,还用于向所述NQA进程发送读数据通知;
所述NQA进程210,还用于通过所述原始套接字读取所述socket接收缓冲区队列中的ICMP回显应答报文,并当读取成功时,确定网络能够连通。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,NQA进程通过原始套接字向RAWIP协议发送ICMP回显请求报文;RAWIP协议在ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有预设标识符字段的ICMP回显请求报文;当RAWIP协议接收到ICMP回显应答报文时,判断ICMP回显应答报文的ICMP头中是否携带有预设标识符字段;若是,则RAWIP协议将ICMP回显应答报文缓存至socket接收缓冲区队列;否则,RAWIP协议丢弃ICMP回显应答报文,避免了ICMP回显应答攻击报文对目的端设备回复的ICMP回显应答报文的正常处理的影响,提高了网络连通状态检测的准确性。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (12)
1.一种报文处理方法,其特征在于,包括:
网络质量分析NQA进程通过原始套接字向原始互联网协议RAWIP协议发送互联网控制报文协议ICMP回显请求报文;
所述RAWIP协议在所述ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有所述预设标识符字段的ICMP回显请求报文;
当所述RAWIP协议接收到ICMP回显应答报文时,判断所述ICMP回显应答报文的ICMP头中是否携带有所述预设标识符字段;
若是,则所述RAWIP协议将所述ICMP回显应答报文缓存至socket接收缓冲区队列;
否则,所述RAWIP协议丢弃所述ICMP回显应答报文。
2.根据权利要求1所述的方法,其特征在于,所述NQA进程通过原始套接字向RAWIP协议发送ICMP回显请求报文之前,还包括:
所述NQA进程创建使用ICMP协议的原始套接字,并在内核中创建一个套接字socket控制块,其中,所述socket控制块保存有所述原始套接字的ICMP协议号;
所述RAWIP协议在所述ICMP回显请求报文的ICMP头中添加预设标识字段,包括:
所述RAWIP协议生成随机数,并将所述随机数保存至所述socket控制块;
所述RAWIP协议将所述随机数填充到ICMP回显请求报文的标识符字段。
3.根据权利要求2所述的方法,其特征在于,所述判断所述ICMP回显应答报文的ICMP头中是否携带有所述预设标识符字段,包括:
获取所述ICMP回显应答报文的标识符字段的值;
根据所述ICMP回显应答报文的ICMP协议号查询保存有所述ICMP协议号的socket控制块,并获取该socket控制块中保存的随机数;
比较所述ICMP回显应答报文的标识符字段的值和获取到的随机数;
若二者一致,则判断所述ICMP回显应答报文的ICMP头中携带有所述预设标识字段;
否则,判断所述ICMP回显应答报文的ICMP头中未携带所述预设标识字段。
4.根据权利要求2所述的方法,其特征在于,所述RAWIP协议生成随机数之前,还包括:
所述RAWIP协议判断是否使能ICMP标识符字段检测功能;
若是,则确定执行所述生成随机数的步骤。
5.根据权利要求4所述的方法,其特征在于,所述RAWIP协议判断是否使能ICMP标识符字段检测功能,包括:
所述RAWIP协议根据所述ICMP回显应答报文的ICMP协议号查找保存有该ICMP协议号的socket控制块;
所述RAWIP协议根据该socket控制块中保存的socket控制选项ICMP_ECHO的值判断是否使能ICMP标识字段检测功能。
6.根据权利要求1所述的方法,其特征在于,所述RAWIP协议将所述ICMP回显应答报文缓存至socket接收缓冲区队列之后,还包括:
所述RAWIP协议向所述NQA进程发送读数据通知;
所述NQA进程通过所述原始套接字读取所述socket接收缓冲区队列中的ICMP回显应答报文,并当读取成功时,确定网络能够连通。
7.一种报文处理装置,其特征在于,包括:NQA进程模块和原始互联网协议RAWIP协议模块;其中:
所述NQA进程模块,用于通过原始套接字向RAWIP协议模块发送互联网控制报文协议ICMP回显请求报文;
所述RAWIP协议模块,用于在所述ICMP回显请求报文的ICMP头中添加预设标识字段,并发送携带有所述预设标识符字段的ICMP回显请求报文;
所述RAWIP协议模块,还用于当接收到ICMP回显应答报文时,判断所述ICMP回显应答报文的ICMP头中是否携带有所述预设标识符字段;若是,则将所述ICMP回显应答报文缓存至socket接收缓冲区队列;否则,丢弃所述ICMP回显应答报文。
8.根据权利要求7所述的装置,其特征在于,
所述NQA进程模块,还用于创建使用ICMP协议的原始套接字,并在内核中创建一个套接字socket控制块,其中,所述socket控制块保存有所述原始套接字的ICMP协议号;
所述RAWIP协议模块,具体用于生成随机数,并将所述随机数保存至所述socket控制块;将所述随机数填充到ICMP回显请求报文的标识符字段。
9.根据权利要求8所述的装置,其特征在于,
所述RAWIP协议模块,具体用于获取所述ICMP回显应答报文的标识符字段的值;根据所述ICMP回显应答报文的ICMP协议号查询保存有所述ICMP协议号的socket控制块,并获取该socket控制块中保存的随机数;比较所述ICMP回显应答报文的标识符字段的值和获取到的随机数;若二者一致,则判断所述ICMP回显应答报文的ICMP头中携带有所述预设标识字段;否则,判断所述ICMP回显应答报文的ICMP头中未携带所述预设标识字段。
10.根据权利要求8所述的装置,其特征在于,
所述RAWIP协议模块,还用于判断是否使能ICMP标识符字段检测功能;
所述RAWIP协议模块,具体用于若使能ICMP标识符字段检测功能,则生成随机数。
11.根据权利要求10所述的装置,其特征在于,
所述RAWIP协议模块,具体用于根据所述ICMP回显应答报文的ICMP协议号查找保存有该ICMP协议号的socket控制块;根据该socket控制块中保存的socket控制选项ICMP_ECHO的值判断是否使能ICMP标识字段检测功能。
12.根据权利要求7所述的装置,其特征在于,
所述RAWIP协议模块,还用于向所述NQA进程发送读数据通知;
所述NQA进程,还用于通过所述原始套接字读取所述socket接收缓冲区队列中的ICMP回显应答报文,并当读取成功时,确定网络能够连通。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710474293.0A CN107547505B (zh) | 2017-06-21 | 2017-06-21 | 一种报文处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710474293.0A CN107547505B (zh) | 2017-06-21 | 2017-06-21 | 一种报文处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107547505A true CN107547505A (zh) | 2018-01-05 |
CN107547505B CN107547505B (zh) | 2020-04-03 |
Family
ID=60970562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710474293.0A Active CN107547505B (zh) | 2017-06-21 | 2017-06-21 | 一种报文处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107547505B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110061926A (zh) * | 2019-04-26 | 2019-07-26 | 武汉思创易控科技有限公司 | 一种多路复用的ping方法、存储介质、终端和服务器 |
CN111949568A (zh) * | 2020-07-31 | 2020-11-17 | 新华三半导体技术有限公司 | 一种报文处理方法、装置及网络芯片 |
CN112019554A (zh) * | 2020-09-01 | 2020-12-01 | 深信服科技股份有限公司 | 一种内网主机及云内引流方法、装置 |
CN114760231A (zh) * | 2022-04-14 | 2022-07-15 | 和中通信科技有限公司 | 一种快速大规模主机在线识别的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6513122B1 (en) * | 2001-06-29 | 2003-01-28 | Networks Associates Technology, Inc. | Secure gateway for analyzing textual content to identify a harmful impact on computer systems with known vulnerabilities |
US20050027872A1 (en) * | 2000-06-23 | 2005-02-03 | Microsoft Corporation | System and method for enhancing a server's ability to withstand a "SYN flood" denial of service attack |
CN101222443A (zh) * | 2008-01-30 | 2008-07-16 | 杭州华三通信技术有限公司 | 一种处理报文的方法和网络设备 |
CN102291378A (zh) * | 2010-06-18 | 2011-12-21 | 杭州华三通信技术有限公司 | 一种防御DDoS攻击的方法和设备 |
CN103516599A (zh) * | 2012-06-15 | 2014-01-15 | 华为技术有限公司 | 发现主机的方法、网络设备及主机 |
CN105634857A (zh) * | 2014-11-26 | 2016-06-01 | 中兴通讯股份有限公司 | 链路连通性检测方法及装置 |
CN106330483A (zh) * | 2015-06-18 | 2017-01-11 | 中兴通讯股份有限公司 | 信息获取方法、客户端设备和服务端设备 |
-
2017
- 2017-06-21 CN CN201710474293.0A patent/CN107547505B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050027872A1 (en) * | 2000-06-23 | 2005-02-03 | Microsoft Corporation | System and method for enhancing a server's ability to withstand a "SYN flood" denial of service attack |
US6513122B1 (en) * | 2001-06-29 | 2003-01-28 | Networks Associates Technology, Inc. | Secure gateway for analyzing textual content to identify a harmful impact on computer systems with known vulnerabilities |
CN101222443A (zh) * | 2008-01-30 | 2008-07-16 | 杭州华三通信技术有限公司 | 一种处理报文的方法和网络设备 |
CN102291378A (zh) * | 2010-06-18 | 2011-12-21 | 杭州华三通信技术有限公司 | 一种防御DDoS攻击的方法和设备 |
CN103516599A (zh) * | 2012-06-15 | 2014-01-15 | 华为技术有限公司 | 发现主机的方法、网络设备及主机 |
CN105634857A (zh) * | 2014-11-26 | 2016-06-01 | 中兴通讯股份有限公司 | 链路连通性检测方法及装置 |
CN106330483A (zh) * | 2015-06-18 | 2017-01-11 | 中兴通讯股份有限公司 | 信息获取方法、客户端设备和服务端设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110061926A (zh) * | 2019-04-26 | 2019-07-26 | 武汉思创易控科技有限公司 | 一种多路复用的ping方法、存储介质、终端和服务器 |
CN111949568A (zh) * | 2020-07-31 | 2020-11-17 | 新华三半导体技术有限公司 | 一种报文处理方法、装置及网络芯片 |
CN111949568B (zh) * | 2020-07-31 | 2023-07-21 | 新华三半导体技术有限公司 | 一种报文处理方法、装置及网络芯片 |
CN112019554A (zh) * | 2020-09-01 | 2020-12-01 | 深信服科技股份有限公司 | 一种内网主机及云内引流方法、装置 |
CN112019554B (zh) * | 2020-09-01 | 2022-11-22 | 深信服科技股份有限公司 | 一种内网主机及云内引流方法、装置 |
CN114760231A (zh) * | 2022-04-14 | 2022-07-15 | 和中通信科技有限公司 | 一种快速大规模主机在线识别的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107547505B (zh) | 2020-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10547553B2 (en) | Stateful connection tracking | |
CN107547505A (zh) | 一种报文处理方法及装置 | |
US7020716B2 (en) | Method and system for verifying the hardware implementation of TCP/IP | |
CN111130931B (zh) | 一种违规外联设备的检测方法及装置 | |
US7519004B1 (en) | Loopback testing of a network interface device from a user-space software layer | |
US7623450B2 (en) | Methods and apparatus for improving security while transmitting a data packet | |
CN105939297B (zh) | 一种tcp报文重组方法和装置 | |
CN107332726A (zh) | 一种通信链路的检测方法及装置 | |
CN102655509B (zh) | 一种网络攻击识别方法及装置 | |
CN108881425B (zh) | 一种数据包处理方法及系统 | |
CN107147655A (zh) | 一种网络双协议栈并行处理模型及其处理方法 | |
CN112600725B (zh) | 一种icmp报文加速方法 | |
CN104660597B (zh) | 三层认证方法、装置及三层认证交换机 | |
CN104468265A (zh) | 局域网终端在线状态的检测方法和装置 | |
CN109167762A (zh) | 一种iec104报文校验方法及装置 | |
CN106534048A (zh) | 一种防范sdn拒绝服务攻击的方法、交换机和系统 | |
CN106105098A (zh) | 交换机及业务请求报文的处理方法 | |
EP1737172A1 (en) | Relay device, packet filtering method, and packet filtering program | |
CN105991442B (zh) | 报文转发方法及装置 | |
CN107104892A (zh) | 网络加速的方法和装置 | |
GB2592315A (en) | Methods and systems for sending packets through a plurality of tunnels | |
CN106230658B (zh) | 一种监控网络设备的方法和装置 | |
CN106161249B (zh) | PPPoE报文的处理方法及装置 | |
CN108064441A (zh) | 一种加速网络传输优化方法以及系统 | |
CN102223266A (zh) | 一种协议代理检测方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |