一种ip地址查找方法及其设备的制作方法

文档序号:7936663阅读:113来源:国知局
专利名称:一种ip地址查找方法及其设备的制作方法
技术领域
本发明涉及网络设备通信技术,尤其涉及一种IP地址查找方法及其设备。
背景技术
因特网上的每台主机都有一个唯一的IP地址。IP协议就是使用这个地址在主机之间传递信息,这是因特网能够运行的基础。IP地址的长度为32位,分为4段,每段8位, 用十进制数字表示,每段数字范围为0 255,段与段之间用句点隔开。例如192. 168. 1. 1。 为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机 ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址包括五种类型,即A类、B类、 C类、D类和E类,以适合不同容量的网络。网络设备,例如路由器,在网络应用中需要配置IP地址,或者IP段地址信息,对于每一个进入路由器的数据包,都必须通过该数据包的目的IP地址在其配置的IP地址信息表中依次搜寻以决定送往哪一次落点。然而,现有技术中的IP地址查找方法往往效率低下。

发明内容
本发明要解决的技术问题是,用高效、快捷的方式快速判断一个IP地址是否属于某一项IP配制,IP的配置可以是单个IP地址或IP段地址。解决上述问题,本发明一方面提供了一种IP地址查找方法,该方法包括以下步骤获取数据包中的IP地址;根据IP地址的网络地址部份查找对应的哈希表;根据IP地址的主机地址部份计算哈希值;根据哈希值从上述哈希表中查找IP地址对应的IP配制。本发明第二方面提供了一种IP地址查找设备。该设备包括获取模块,用于获取数据包中的IP地址;分类模块,根据IP地址的网络地址部份查找对应的哈希表;计算模块, 根据IP地址的主机地址部份计算哈希值;查找模块,根据哈希值从哈希表中查找IP地址对应的IP配制。本发明通过对IP地址的主机地址部份做哈希运算获取哈希值,并通过所获取的哈希值查找相应的IP配制,能够快速的判断一个IP地址是否属于一项iP配制。


本发明的示例性实施例将从下文中给出的详细说明和本发明不同实施例的附图中被更完全地理解,然而这不应该被视为将本发明限制于具体的实施例,而应该只是为了解释和理解。图1为本发明IP地址查找方法的应用场景图;图2为本发明实施例的IP地址查找方法流程图;图3为本发明实施例的IP地址查找设备结构图4为根据A类IP地址构建的A类哈希表示意图;图5为根据B类IP地址构建的B类哈希表示意图;图6为去掉主机地址末尾一个比特位构建的A类哈希表示意图;图7为去掉主机地址末尾两个比特位构建的A类哈希表示意图。
具体实施例方式本领域的普通技术人员将意识到,所述示例性实施例的下述详细说明仅仅是说明性的,并且不是意在以任何方式加以限制。图1为本发明IP地址查找方法的应用场景图。在图1中,主机All和主机B12通过路由器21和路由器22进行数据传送和接收。当主机All向主机A12进行数据传送时, 路由器21接收来自主机All的数据包,并从该数据包中提取目的IP地址,通过将目的IP 地址与路由器21预先配制的IP地址信息表中进行查找,以获取决定送往下一次的落点,即主机A12的IP地址,然后将数据包转发给主机B12。图2为本发明实施例的IP地址查找方法流程图。如图2所示,该方法步骤包括 201-204。在步骤201,获取数据包中的IP地址。在一个例子中,网络设备,例如路由器从每一个进入的数据包中获取目的IP地址。在步骤202,根据IP地址的网络地址部份查找对应的哈希表。具体地,通过在步骤201中获取的IP地址,根据该IP地址的网络地址部份查找该 IP地址所属的哈希表类型,上述哈希表类型是根据IP地址的五种类型分别构建的五类哈希表,即A类哈希表、B类哈希表、C类哈希表、D类哈希表和E类哈希表,其中每一类哈希表对应一类网络地址。在一个例子中,如图4所示,以A类IP地址为例来描述A类哈希表的构建过程。一个A类IP地址由8位网络地址和M位主机地址组成,网络地址的最高位是“0”, 即第一段数字范围为1 127。一个A类IP地址可连接2的M次方等于16777216台主机。在构建A类IP地址哈希表时,根据A类IP地址的网络地址部份来标识A类哈希表,根据A类IP主机地址部份,获取2m个地址,每个地址分配一个哈希槽,每个哈希槽可存储一个iP地址或多个IP地址。在另一个例子中,如图5所示,以B类IP地址为例来描述B类哈希表的构建过程。一个B类IP地址由16位网络地址和16位主机地址组成,网络地址的最高位是 “10”,即第一段数字范围为1 191。一个B类地址可连接2的16次方等于65536台主机。在构建B类IP地址哈希表时,根据B类IP的网络地址部份来标识B类哈希表,根据B 类IP主机地址部份,获取216个地址,每个地址分配一个哈希槽,每个哈希槽存储一个IP地址或多个IP地址。为了避免哈希表的内存空间分配太大,可以选择去掉IP地址的主机地址部份一个或多个比特位,而让一个哈希槽可以存储多个IP数据。例如,去掉主机地址的最后一个比特位,那么一个哈希槽就对应2个IP配制,同样,去掉主机地址的后两个比特位,那么一个哈希槽就对应4个IP配制,以此类推。在根据上述方法构建哈希表的过程中避免不了会产生冲突,处理冲突的的方法较多,本发明实施例通过采用链地址法方法来处理冲突,即将具有相同哈希地址的IP地址用一个线性链表链接在一起,当一个IP地址需要插入哈希表时,如果该IP已经存在,就不能简单的替换,而需要将新的iP地址加入到已有的IP地址链的后边。图6为去掉主机地址末尾一个比特位构建的A类哈希表示意图。如图所示,当A 类IP地址的M位主机地址部分“0000 0000 0000 0000 0000 0000”的末尾最后一位被去掉后,哈希地址由原来的224位变成了 223位。因此,一个哈希槽可以存储两个IP地址,例如 IP 地址 0. 0. 0. 0-0. 0. 0. 1。图7为去掉主机地址末尾两个比特位构建的A类哈希表示意图。如图所示,当A 类IP地址的M位主机地址部分“0000 0000 0000 0000 0000 0000”的末尾最后两位被去掉后,哈希地址由原来的沪位变成了 f位。因此,一个哈希槽可以存储四个IP地址,例如一个哈希槽存储IP地址0. 0. 0. 0-0. 0. 0. 3。当哈希表的每个哈希槽只存储一个IP地址时,IP段地址所覆盖的哈希槽都要标识,并做一个命中标记;当哈希表的哈希槽存储多个IP地址,例如一个哈希槽存储两个IP 地址时,IP段地址所覆盖的哈希槽需要被标识,针对完全覆盖的哈希槽做一个命中标记,针对部分覆盖的哈希槽需要做一个冲突链,连接相连两个哈希槽。在一个例子中,有两个IP 段地址,第一个IP段地址是1. 0. 0. 1-1. 0. 0. 3,第二个IP段地址是1. 0. 0. 4-1. 0. 0. 5。A类哈希表的一个哈希槽存储两个IP地址,例如哈希槽1存储的IP地址是1. 0. 0. 1和1. 0. 0.2, 哈希槽2存储的IP地址是1.0. 0.3和1.0. 0.4,哈希槽3存储的IP地址是1.0. 0. 4和 1. 0. 0. 5。此时第一个IP段地址1. 0. 0. 1-1. 0. 0. 3完全覆盖哈希槽1存储的IP地址,因此哈希槽ι需要做上第一个IP段地址的命中标记。由于第一个IP段地址1. 0. 0. 1-1. 0. 0. 3 部分覆盖哈希槽2存储的IP地址1. 0. 0. 3和1. 0. 0. 4,因此哈希槽2需要加一个冲突链。 由于第二个IP段地址1. 0. 0. 4-1. 0. 0. 5完全覆盖哈希槽3存储的IP地址,因此哈希槽3 需要做上第二个IP段地址的命中标记。以上针对IP地址存储的哈希表的构建进行了描述,根据在步骤201中获取的目的 IP地址,通过该IP地址的网络地址部份可以查找到相应的哈希表,例如获取的目的IP地址是1. 0. 0. 1,根据上述IP地址的网络地址部份查找到与其对应的A类哈希表。在步骤203,根据IP地址的主机地址部份计算哈希值。在根据主机地址部份计算哈希值时,有以下两种计算方法第一种,未去掉比特位的哈希值计算方法针对第一种情况,通过对获取的目的 IP地址的主机地址部份做哈希计算,获取哈希值。例如,针对A类IP地址的M位主机地址部分做哈希计算,用以获取哈希值。第二种,去掉比特位的哈希值计算方法针对第二种情况,根据哈希表构建时去掉的主机地址比特位的位数,根据剩余的主机地址比特位数做哈希计算,用以获取哈希值。在步骤204,根据哈希值从哈希表中查找IP地址对应的IP配制。根据在步骤203计算获取的哈希值从相应的哈希表中查找目的IP地址所对应的 IP地址或者IP段地址。现以查找目的IP地址1. 0. 0. 3是否属于存储在哈希表中的某一个IP段地址为例进行阐述。在上一个例子中,哈希表的哈希槽1-3中分别存储IP段地址1. 0. 0. 1-1. 0. 0. 3和IP段地址1. 0. 0. 4-1. 0. 0. 5,其中哈希槽1存储的IP地址是1. 0. 0. 1和1. 0. 0. 2,哈希槽2存储的IP地址是1. 0. 0. 3和1. 0. 0. 4,哈希槽3存储的IP地址是1. 0. 0. 4和1. 0. 0. 5。 根据目的IP地址1. 0. 0. 3的主机地址部分做哈希运算后查找到哈希表的哈希槽2,并获得 IP段1. 0. 0. 1-1. 0. 0. 3的冲突链,根据冲突链再判断目的IP地址1. 0. 0. 3是否所属哈希槽 2和哈希槽3中。如果命中,说明目的IP地址1. 0. 0. 3属于IP段地址1. 0. 0. 1-1. 0. 0. 3。图3为本发明实施例的IP地址查找设备结构图。如图所示,该设备包括获取模块 31、分类模块32、计算模块33和查找模块34。获取模块31用于获取数据包中的IP地址;分类模块32用于根据IP地址的网络地址部份查找对应的哈希表;计算模块32用于根据IP地址的主机地址部份计算哈希值; 查找模块32用于根据哈希值从哈希表中查找IP地址对应的IP配制。本发明实施例IP地址查找设备的获取模块31、分类模块32、计算模块33和查找模块34分别为了实现图2中各个方法的相应流程,在此不再赘述。需要说明的是,上述IP地址查找设备可以是一个独立的网络设备,也可以是以一个模块形式存储在于网关、上网行为管理等网络设备中。尽管已经示出并描述了本发明的特殊实施例,然而在不背离本发明的示例性实施例及其更宽广方面的前提下,本领域技术人员显然可以基于此处的教学做出变化和修改。 因此,所附的权利要求意在将所有这类不背离本发明的示例性实施例的真实精神和范围的变化和更改包含在其范围之内。
权利要求
1.一种IP地址查找方法,其特征在于所述方法包括以下步骤获取数据包中的IP地址;根据所述IP地址的网络地址部份查找对应的哈希表;根据所述IP地址的主机地址部份计算哈希值;根据所述哈希值从所述哈希表中查找所述IP地址对应的IP配制。
2.根据权利要求1所述的方法,其特征在于所述根据所述IP地址的网络地址部份查找对应的哈希表步骤中的哈希表由多个哈希槽组成,所述哈希槽存储一个或多个IP地址。
3.根据权利要求1所述的方法,其特征在于所述根据所述IP地址的网络地址部份查找对应的哈希表步骤中的哈希表是根据IP地址的五种类型分别构建的哈希表。
4.根据权利要求1所述的方法,其特征在于所述根据所述IP地址的主机地址部份计算哈希值包括根据所述IP地址的主机地址部分去掉末尾一个比特位或多个比特位后进行哈希值计算。
5.根据权利要求1所述的方法,其特征在于所述根据所述哈希值从所述哈希表中查找所述IP地址对应的IP配制包括从所述哈希表中查找所述IP地址对应的IP段地址。
6.一种IP地址查找设备,其特征在于所述设备包括获取模块,用于获取数据包中的IP地址;分类模块,根据IP地址的网络地址部份查找对应的哈希表;计算模块,根据IP地址的主机地址部份计算哈希值;查找模块,根据哈希值从哈希表中查找IP地址对应的IP配制。
7.根据权利要求6所述的设备,其特征在于所述哈希表由多个哈希槽组成,所述哈希槽存储一个或多个IP地址。
8.根据权利要求6所述的设备,其特征在于所述哈希表是根据IP地址的五种类型分别构建的哈希表。
9.根据权利要求6所述的设备,其特征在于所述计算模块根据所述IP地址的主机地址部分去掉末尾一个比特位或多个比特位后进行哈希计算。
10.根据权利要求6所述的设备,其特征在于所述查找模块从所述哈希表中查找所述 IP地址所属的IP段地址。
全文摘要
本发明公开了一种IP地址查找方法和设备,所述方法包括以下步骤获取数据包中的IP地址;根据IP地址的网络地址部份查找对应的哈希表;根据IP地址的主机地址部份计算哈希值;根据哈希值从上述哈希表中查找IP地址对应的IP配制。所述设备包括获取模块、分类模块、计算模块和查找模块。本发明IP地址查找效率高,可作为网络设备功能实现。
文档编号H04L12/56GK102307250SQ20111030816
公开日2012年1月4日 申请日期2011年10月12日 优先权日2011年10月12日
发明者刘卫, 胡和杰 申请人:北京网康科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1