一种以太网报文匹配方法、 装置及终端 【技术领域】
本发明属于信息处理领域, 尤其涉及一种以太网报文匹配方法、 装置及终端。背景技术 一个报文通常包含源 ip、 目的 ip 等属性值, 这些属性值由 0.5 字节或者 1 字节或 者 2 字节或者 4 字节等构成, 当然也可能由 1bit 构成。
匹配一个报文就是匹配报文的各个属性值。现有方法采用正掩码或者反掩码匹 配报文的内容, 其中, 正掩码是高位为全 1, 低位为全 0 的二进制值, 而反掩码则反之, 是 高位为全 0, 低位为全 1 的二进制值。例如, 若要匹配 ip 地址为 192.168.10.1 的网段 : 192.168.0.0, 则可采用正掩码 255.255.0.0 跟 192.168.10.1 取与获得, 即将上述十进制的 正掩码 255.255.0.0 以及 ip 地址 192.168.10.1 分别转为二进制后再分别取与, 最后将得 到的二进制值转为十进制值即可得到 192.168.0.0 ; 若要匹配 ip 地址为 192.168.10.1 的 主机段 : 0.0.10.1, 则可采用反掩码 0.0.255.255 跟 192.168.1 0.1 取与获得。
现有的报文匹配方法在匹配报文时不够灵活。 例如采用掩码或反掩码在匹配报文 属性的中间内容时就显得力不从心, 假设要匹配 ip 地址为 192.168.10.1 的 0.0.10.0 这个 主机段, 则不能采用掩码或者反掩码与 192.168.10.1 取与获得。此外, 采用掩码或反掩码 匹配报文需考虑报文的所有属性, 兼容性差, 造成匹配报文的工作量过大。 例如在匹配报文 的源 ip 时, 需要指出源 ip 的值和掩码或者指出 ip 和反掩码, 在匹配目的 ip 时, 需要指出 目的 ip 的值和掩码或者指出目的 ip 和反掩码。
发明内容 本发明实施例提供了一种以太网报文匹配方法, 旨在解决现有的报文匹配方法在 匹配报文时不够灵活以及兼容性差的问题。
本发明实施例是这样实现的, 一种以太网报文匹配方法, 所述方法包括下述步 骤:
预配置属性条件和掩码条件 ;
接收报文并获取所述报文的实际属性条件 ;
根据所述属性条件、 掩码条件以及所述报文的实际属性条件匹配所述报文。
本发明实施例的另一目的在于提供一种以太网报文匹配装置, 所述装置包括 :
条件配置单元, 用于预配置属性条件和掩码条件 ;
实际属性条件获取单元, 用于接收报文并获取所述报文的实际属性条件 ;
报文匹配单元, 用于根据所述属性条件、 掩码条件以及所述报文的实际属性条件 匹配所述报文。
本发明实施例的另一目的在于提供包括上述以太网报文匹配装置的终端。
本发明实施例在预配置报文的属性条件后, 再根据预配置的报文属性条件选择相 对应的掩码, 在网络上传来一个报文时, 获取该报文在链路层、 网络层、 运输层、 应用层中的
多个实际属性值组成的实际属性条件, 最后比较属性条件与掩码条件进行相与运算后所获 得的第一运算结果和实际属性条件与掩码条件进行相与运算后所获得的第二运算结果, 若 两者相等, 则报文匹配成功, 若两者不相等, 则报文匹配不成功。由于可以根据预先配置的 掩码条件和掩码条件匹配报文, 因此能够灵活匹配报文的各个属性值, 具有较强的兼容性。 附图说明
图 1 是本发明第一实施例提供的以太网报文匹配方法流程 ; 图 2 是本发明第二实施例提供的 tcp/ip 协议族的组成 ; 图 3 是本发明第三实施例提供的以太网报文匹配装置结构。具体实施方式
为了使本发明的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对 本发明进行进一步详细说明。 应当理解, 此处所描述的具体实施例仅仅用以解释本发明, 并 不用于限定本发明。
本发明实施例首先预配置报文的属性条件, 再根据该属性条件预配置掩码条件, 在网络上传来一个报文时, 获取该报文的实际属性条件, 最后根据预配置的属性条件、 掩码 条件以及获取的报文实际属性条件匹配该报文。
为了说明本发明所述的技术方案, 下面通过具体实施例来进行说明。
实施例一 :
图 1 示出了本发明第一实施例提供的以太网报文匹配方法, 在本实施例中, 根据 预配置的属性条件、 掩码条件以及获取的报文实际属性条件进行报文匹配, 详述如下 : 在步骤 S11 中, 预配置属性条件和掩码条件。
本实施例中, 预配置的报文属性条件包括该报文在链路层、 网络层、 运输层、 应用 层中的多个属性值, 在预配置了报文的属性条件后再配置该报文在链路层、 网络层、 运输 层、 应用层中的多个掩码。
若指定获取运输层中 192.168.1.X 网段的 udp 报文, 该 X 的值可以为 0 ~ 255 中 的任一个值。首先将网段 192.168.1.X 转为 16 进制后获得的前 3 部分值分别为 : 0xC0、 0XA8、 0x01, 则预配置的属性条件在运输层的前 3 个属性值应为 0xC0、 0xA8、 0x01, 由于 X 可 以为 0 ~ 255 中的任一个值, 因此可以假设预配置的属性条件在运输层的第 4 个属性值 为 0x01, 用二进制表示为 : 11000000、 10101000、 00000001、 00000001。为了匹配中运输层 为 192.168.1.X 网段的 udp 报文以及根据预配置的属性条件预配置掩码条件, 由于 X 可以 为 0 ~ 255 中的任一个值, 则掩码条件在运输层的掩码应为 0xFF、 0xFF、 0xFF 以及 0x00, 用二进制表示为 : 11111111、 11111111、 11111111、 00000000。在配置了运输层的属性值和 掩码后, 再配置网络层的属性值和掩码。将标志报文为 udp 报文的二进制值 00010001 转 为 16 进制后获得的值为 0x11, 则预配置的属性条件在网络层的属性值为 0x11, 与该属性 可配置的掩码为 值对应的网络层的掩码应为 0xFF。若需要得到 0.0.10.0 这个主机段, 1111.1111.1111.1111。
当然, 若对报文在链路层的属性值或者应用层的属性值有特定要求时, 也可以对 相应的属性值进行指定, 并根据需要选择相应的掩码。
在步骤 S12 中, 接收报文并获取该报文的实际属性条件。
本实施例中, 当网络上传来了一个报文, 则获取该报文的实际属性条件。其中, 该 报文的实际属性条件包括报文在链路层、 网络层、 运输层、 应用层中的多个实际属性值。
在步骤 S13 中, 根据该属性条件、 掩码条件以及该报文的实际属性条件匹配该报 文。
本实施例中, 匹配报文有 3 种情况的匹配 : (1) 精确匹配, 精确匹配是指预配置的 掩码条件是全为 1 的二进制数值 ; 网络上传输的报文的实际属性条件等于预配置的属性条 件 (2) 全包含匹配, 全包含匹配是指预配置的掩码条件是全为 0 的二进制数值 ; 网络上传输 的报文的实际属性条件可以为任何值 (3) 局部匹配, 局部匹配是指预配置的掩码条件部分 为 0, 部分为 1 的二进制数值, 该预配置的掩码条件仅在与预配置的属性条件指定的链路层 或网络层或运输层或应用层的一个或多个属性值对应的掩码为全为 1 的二进制数值, 在与 属性条件没有要求的属性值对应的掩码则为全为 0 的二进制数值 ; 网络上传输的报文的实 际属性条件局部等于预配置的属性条件。
当一个报文符合预设的匹配规则时称该报文被匹配中, 该匹配规则为 : f(attr_ pkt, mask_rule) = f(attr_rule, mask_rule), 其中 f 表示相与运算, 即 f(A, B) = A&B, 其 中, attr_pkt 为报文在链路层、 网络层、 运输层、 应用层中的一个或多个实际属性值, mask_ rule 为报文在链路层、 网络层、 运输层、 应用层中的一个或多个掩码, attr_rule 为报文在 链路层、 网络层、 运输层、 应用层中的一个或多个属性值。当网络上来了一个报文, 若该报 文的 attr_pkt 与掩码条件中对应的掩码进行相与运算后所获得的结果等于预配置的掩码 条件中对应的属性值与掩码条件中对应的掩码进行相与运算后所获得的结果, 那么称该 attr_pkt 被匹配中。 如果报文所有的实际属性值都被匹配中, 则称该报文被匹配中, 如果报 文的部分实际属性值被匹配中, 则称该报文被局部匹配中。
本实施例中, 若网络上传来的报文被匹配中, 或局部匹配中, 则存储该报文。当网 络上传来的报文被匹配中时, 说明该报文为查找的报文, 则存储该报文。
在本发明第一实施例中, 首先预配置报文的属性条件, 再根据该属性条件预配置 掩码条件, 在网络上传来一个报文时, 获取该报文的实际属性条件, 最后比较属性条件与掩 码条件进行相与运算后所获得的第一运算结果和实际属性条件与掩码条件进行相与运算 后所获得的第二运算结果, 若两者相等, 则报文匹配成功, 若两者不相等, 则报文匹配不成 功。由于可以根据预先配置的掩码条件和掩码条件匹配报文, 因此能够灵活匹配报文的各 个属性值, 具有较强的兼容性。
为了更清楚地说明匹配以太网报文的方法, 下面以具体应用例进行说明。
实施例二 :
其中, 图 2 示出了 tcp/ip 协议族的组成, 由图 2 可以看出, tcp/ip 协议族由链路 层、 网络层、 运输层、 应用层组成, 每一层都有相应的协议。
1、 假设需要找出 ip 为 192.168.1.X 网段的 udp 报文。
本实施例中, 该 X 可以为 0 ~ 255 之间的任一个值。首先分析该报文有哪些属性 值, (1) 以太网报文, (2)ip 报文, (3) 获取 ip 层的长度, 通常为 20 字节, (4)udp 报文, (5) 源 ip 值为 192.168.1.X(X = 0 ~ 255)。再根据 ip 为 192.168.1.X 网段的 udp 报文所特有 的属性值预配置报文的属性值条件以及选择相应的掩码条件。其中, 预配置的属性条件在链路层的属性值以及预配置的掩码条件在链路层的掩码如表 1 所示。
表1:
其中, 预配置的属性条件在网络层、 运输层的属性值以及预配置的掩码条件在网 络层以及运输层的掩码如表 2 所示 :
表2:
由于只需找出 ip 为 192.168.1.X 网段的 udp 报文, 因此只需预配置网络层的属性 值为 0x11, 该 0x11 为 udp 报文的标识, 配置运输层的前 3 个属性值为 0xC0、 0xA8、 0x01, 其 他的属性值可以为任意值, 比如报文在运输层的第 4 个属性值可以为 0x01。在预配置属性 条件时, 只需保证在特定的链路层、 网络层、 运输层、 应用层中的属性值为所需找出的报文的属性值即可, 其余属性值不作限定。在配置了属性条件后, 再配置掩码条件。根据配置的 掩码条件, 该掩码条件在运输层的掩码分别为 : 0xFF、 0xFF、 0xFF、 0xFF, 在网络层的掩码为 0xFF。所有在链路层、 网络层、 运输层、 应用层中配置的属性值和掩码组合成整个报文的属 性条件和掩码添加。使用 16 进制表示如下 :
属 性 条 件: 000000000000 000000000000 0800 4500 00000000000000 11 0000C0A80100。
掩码条件: 000000000000 000000000000 FFFF FF00 00000000000000 FF0000 FFFFFF00。
当来了一个以太网报文, 若该报文的第 13 个字节为 0x08, 则 f(attr_pkt, 0xFF) = f(0x08, 0xFF) 成立, 同理, 若该报文的第 14 个字节为 0x00、 第 15 个字节为 0x45、 第 24 个字 节为 0x11、 第 27 个字节为 0xC0、 第 28 个字节为 0xA8、 第 29 个字节为 0x01 以及第 30 个字 节为 0x01, 其他字节可以为 0 也可以为 1, 则当前报文的全部实际属性值被匹配中, 即属性 条件与掩码条件进行相与运算后所得结果等于实际属性条件与掩码条件进行相与运算后 所得结果, 整个报文被匹配中。
2、 假设需要找出 ip option 为 0x45XXXX 的 ip 报文。则预配置的属性条件和掩码 条件用 16 进制分别表示如下 : 属性条件 : 000000000000 000000000000 0800 40000000000000000000000000 00000000000000 45。
掩码条件 : 00000000000 0000000000000 FFFF F0000000000000000000000000 00000000000000 FF。
当来了一个以太网报文, 若该以太网报文在链路层、 网络层、 运输层、 应用层中的 实际属性值与对应的掩码进行相与运算后所得的结果等于属性条件中与该实际属性值对 应的属性值与相同的掩码进行相与运算后所得的结果, 即: f(attr_pkt, mask_rule) = f(attr_rule, mask_rule), 则说明该以太网报文的 attr_pkt 被匹配中, 若该以太网报文的 所有 attr_pkt 被匹配中, 则该以太网报文被匹配中。
3、 假设需要找出 ip 为 192.168.1.2 的 syn 报文。
在该应用例中, syn 报文是一个 tcp 报文, 则在链路层配置的属性值以及相应的掩 码如表 1 所示, 在网络层配置的属性值以及相应的掩码如表 3 所示。
表3:
由于查找的是 syn 报文, 而 syn 报文中 syn 标识 bit 位为 1, 其他标识 bit 位为 0, 因此配置标识这个属性的属性值为 0x02, 相应的掩码为 0xFF。除配置属性条件中以上属性 值外, 允许报文的其他属性值为任意值, 即报文的其他属性值可以为 0。
这样, 预配置的属性条件和掩码条件用 16 进制分别表示如下 :
属性条件 : 000000000000 000000000000 0800 450000000000000000000000C0A80 102 00000000 00000000000000000000000000 02
掩码条件 : 000000000000 000000000000 FF00 FF0000000000000000000000FFFFF FFF 00000000 00000000000000000000000000 FF
当来了一个以太网报文, 若该以太网报文在链路层、 网络层、 运输层、 应用层中的 实际属性值与对应的掩码进行相与运算后所得的结果等于属性条件中与该实际属性值对 应的属性值与相同的掩码进行相与运算后所得的结果, 即: f(attr_pkt, mask_rule) = f(attr_rule, mask_rule), 则说明该以太网报文的 attr_pkt 被匹配中, 若该以太网报文的 所有 attr_pkt 被匹配中, 则该以太网报文被匹配中。
4、 假设需要找出 ip 为 192.168.1.2 的 ack 报文, 包括 syn ack, push ack 等其他 ack。
在该例子中, 预配置的属性条件中前几个属性值与找出 ip 为 192.168.1.2 的 syn 报文对应的属性值相同, 唯一不同的是 ack 标识的属性值。由于 tcp 报文的标识由 “保留、 保留、 urg、 ack、 psh、 syn、 fin” 这 8bit 组成, 因此只要保证 ack 标识 bit 位为 1, 就能保证 报文是一个 ack 报文, 即 ack bit 位的属性值 attr_rule 必须配置为 1, 相应的掩码 mask_ rule 必须配置为 1, 故标识这个 8bit 属性值的 attr_rule 为 0x10, mask_rule 为 0x10, 以 使 f(attr_pkt, 0x10) = f(0x10, 0x10) 成立。预配置的属性条件和掩码条件用 16 进制分 别表示如下 :
属性条件 :
00000000000 0000000000000 0800 450000000000000000000000 C0A8010200000000 00000000000000000000000000 10
掩码条件 :
000000000000 000000000000 FF00 FF0000000000000000000000 FFFFFFFF00000000 00000000000000000000000000 10
当来了一个以太网报文, 若该以太网报文在链路层、 网络层、 运输层、 应用层中的 实际属性值与对应的掩码进行相与运算后所得的结果等于属性条件中与该实际属性值对 应的属性值与相同的掩码进行相与运算后所得的结果, 即: f(attr_pkt, mask_rule) = f(attr_rule, mask_rule), 则说明该以太网报文的 attr_pkt 被匹配中, 若该以太网报文的 所有 attr_pkt 被匹配中, 则该以太网报文被匹配中。
实施例三 :
图 3 示出了本发明第三实施例提供的以太网报文匹配装置结构, 为了便于说明, 仅示出了与本发明实施例相关的部分。
该以太网报文匹配装置可以用于通过有线或者无线网络连接服务器的各种信息 处理终端, 例如移动电话、 口袋计算机 (Pocket Personal Computer, PPC)、 掌上电脑、 计算 机、 笔记本电脑、 个人数字助理 (Personal Digital Assistant, PDA) 等, 可以是运行于这些 终端内的软件单元、 硬件单元或者软硬件相结合的单元, 也可以作为独立的挂件集成到这 些终端中或者运行于这些终端的应用系统中, 其中 : 条件配置单元 31, 用于预配置属性条件和掩码条件。
本实施例中, 预配置的报文属性条件包括该报文在链路层、 网络层、 运输层、 应用 层中的多个属性值, 在预配置了报文的属性条件后再根据属性条件配置该报文在链路层、 网络层、 运输层、 应用层中的多个掩码。
实际属性条件获取单元 32, 用于接收报文并获取该报文的实际属性条件。
本实施例中, 该实际属性条件包括报文在链路层、 网络层、 运输层、 应用层中的一 个或多个实际属性值。当网络上传来了一个报文, 则获取组成该报文多个实际属性值。
报文匹配单元 33, 用于根据该属性条件、 掩码条件以及该报文的实际属性条件匹 配该报文
作为本发明的另一个实施例, 该报文匹配单元 33 包括第一运算结果获取模块 331、 第二运算结果获取模块 332、 运算结果判断模块 333 以及报文接收模块 334。
该第一运算结果获取模块 331, 用于将该属性条件与掩码条件进行相与运算, 获得 第一运算结果。
该第二运算结果获取模块 332, 用于将该报文的实际属性条件与掩码条件进行相 与运算, 获得第二运算结果。
该运算结果判断模块 333, 用于判断该第一运算结果与第二运算结果是否相等。
在本发明第二实施例中, 条件配置单元 31 首先配置属性条件, 再根据该属性条件 配置相应的掩码条件, 在网络上传来报文时, 实际属性条件获取单元 32 获取该报文的实际 属性条件, 最后报文匹配单元 33 根据配置的属性条件、 掩码条件以及实际属性条件匹配该 报文。 由于可以预先配置属性条件以及掩码, 并根据配置的属性条件以及掩码匹配报文, 因
此能够灵活匹配报文的各个属性值, 具有较强的兼容性。
本发明实施例在预配置报文的属性条件后, 再根据预配置的报文属性条件选择相 对应的掩码, 在网络上传来一个报文时, 获取该报文在链路层、 网络层、 运输层、 应用层中的 多个实际属性值组成的实际属性条件, 最后比较属性条件与掩码条件进行相与运算后所获 得的第一运算结果和实际属性条件与掩码条件进行相与运算后所获得的第二运算结果, 若 两者相等, 则报文匹配成功, 若两者不相等, 则报文匹配不成功。由于可以根据预先配置的 掩码条件和掩码条件匹配报文, 因此能够灵活匹配报文的各个属性值, 具有较强的兼容性。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内所作的任何修改、 等同替换和改进等, 均应包含在本发明的保护范围之内。