CN102307250A - 一种ip地址查找方法及其设备 - Google Patents
一种ip地址查找方法及其设备 Download PDFInfo
- Publication number
- CN102307250A CN102307250A CN201110308161A CN201110308161A CN102307250A CN 102307250 A CN102307250 A CN 102307250A CN 201110308161 A CN201110308161 A CN 201110308161A CN 201110308161 A CN201110308161 A CN 201110308161A CN 102307250 A CN102307250 A CN 102307250A
- Authority
- CN
- China
- Prior art keywords
- address
- hash
- hash table
- search
- host
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种IP地址查找方法和设备,所述方法包括以下步骤:获取数据包中的IP地址;根据IP地址的网络地址部份查找对应的哈希表;根据IP地址的主机地址部份计算哈希值;根据哈希值从上述哈希表中查找IP地址对应的IP配制。所述设备包括获取模块、分类模块、计算模块和查找模块。本发明IP地址查找效率高,可作为网络设备功能实现。
Description
技术领域
本发明涉及网络设备通信技术,尤其涉及一种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中,主机A11和主机B12通过路由器21和路由器22进行数据传送和接收。当主机A11向主机A12进行数据传送时,路由器21接收来自主机A11的数据包,并从该数据包中提取目的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位网络地址和24位主机地址组成,网络地址的最高位是“0”,即第一段数字范围为1~127。一个A类IP地址可连接2的24次方等于16777216台主机。在构建A类IP地址哈希表时,根据A类IP地址的网络地址部份来标识A类哈希表,根据A类IP主机地址部份,获取224个地址,每个地址分配一个哈希槽,每个哈希槽可存储一个iP地址或多个IP地址。
在另一个例子中,如图5所示,以B类IP地址为例来描述B类哈希表的构建过程。
一个B类IP地址由16位网络地址和16位主机地址组成,网络地址的最高位是“10”,即第一段数字范围为128~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地址的24位主机地址部分“0000 0000 0000 0000 0000 0000”的末尾最后一位被去掉后,哈希地址由原来的224位变成了223位。因此,一个哈希槽可以存储两个IP地址,例如IP地址0.0.0.0-0.0.0.1。
图7为去掉主机地址末尾两个比特位构建的A类哈希表示意图。如图所示,当A类IP地址的24位主机地址部分“0000 0000 0000 0000 0000 0000”的末尾最后两位被去掉后,哈希地址由原来的224位变成了222位。因此,一个哈希槽可以存储四个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地址,因此哈希槽1需要做上第一个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地址的24位主机地址部分做哈希计算,用以获取哈希值。
第二种,去掉比特位的哈希值计算方法:针对第二种情况,根据哈希表构建时去掉的主机地址比特位的位数,根据剩余的主机地址比特位数做哈希计算,用以获取哈希值。
在步骤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地址查找设备可以是一个独立的网络设备,也可以是以一个模块形式存储在于网关、上网行为管理等网络设备中。
尽管已经示出并描述了本发明的特殊实施例,然而在不背离本发明的示例性实施例及其更宽广方面的前提下,本领域技术人员显然可以基于此处的教学做出变化和修改。因此,所附的权利要求意在将所有这类不背离本发明的示例性实施例的真实精神和范围的变化和更改包含在其范围之内。
Claims (10)
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段地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110308161A CN102307250A (zh) | 2011-10-12 | 2011-10-12 | 一种ip地址查找方法及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110308161A CN102307250A (zh) | 2011-10-12 | 2011-10-12 | 一种ip地址查找方法及其设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102307250A true CN102307250A (zh) | 2012-01-04 |
Family
ID=45381053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110308161A Pending CN102307250A (zh) | 2011-10-12 | 2011-10-12 | 一种ip地址查找方法及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102307250A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984292A (zh) * | 2012-12-03 | 2013-03-20 | 北京锐安科技有限公司 | 一种ip段地址集中查找ip地址的方法 |
CN103095864A (zh) * | 2013-01-18 | 2013-05-08 | 清华大学 | 基于哈希算法的面向IPv6过渡的IPv4地址及端口段池维护方法 |
CN103685081A (zh) * | 2012-09-07 | 2014-03-26 | 深圳市腾讯计算机系统有限公司 | 转发以太网帧的方法及交换机 |
CN104539538A (zh) * | 2014-12-26 | 2015-04-22 | 成都致云科技有限公司 | 路由器的ip地址匹配方法和路由器的数据包转发方法 |
CN105404679A (zh) * | 2015-11-24 | 2016-03-16 | 华为技术有限公司 | 数据处理方法和装置 |
CN110351397A (zh) * | 2019-05-30 | 2019-10-18 | 湖北微源卓越科技有限公司 | 一种匹配ip网段的方法及装置 |
CN111177719A (zh) * | 2019-08-13 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 地址类别判定方法、装置、计算机可读存储介质及设备 |
CN111245726A (zh) * | 2019-12-27 | 2020-06-05 | 国家计算机网络与信息安全管理中心 | 一种ip网段高效匹配的实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001005116A2 (en) * | 1999-07-13 | 2001-01-18 | Alteon Web Systems, Inc. | Routing method and apparatus |
CN101707619A (zh) * | 2009-12-10 | 2010-05-12 | 福建星网锐捷网络有限公司 | 报文过滤方法、装置及网络设备 |
-
2011
- 2011-10-12 CN CN201110308161A patent/CN102307250A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001005116A2 (en) * | 1999-07-13 | 2001-01-18 | Alteon Web Systems, Inc. | Routing method and apparatus |
CN101707619A (zh) * | 2009-12-10 | 2010-05-12 | 福建星网锐捷网络有限公司 | 报文过滤方法、装置及网络设备 |
Non-Patent Citations (2)
Title |
---|
刘舱强,邓昌盛,余谅: "基于哈希表的最长前缀匹配算法改进", 《微计算机信息》 * |
耀晓明,周欣然: "IP地址查找算法的分析", 《计算机工程》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685081A (zh) * | 2012-09-07 | 2014-03-26 | 深圳市腾讯计算机系统有限公司 | 转发以太网帧的方法及交换机 |
CN103685081B (zh) * | 2012-09-07 | 2017-11-28 | 深圳市腾讯计算机系统有限公司 | 转发以太网帧的方法及交换机 |
CN102984292A (zh) * | 2012-12-03 | 2013-03-20 | 北京锐安科技有限公司 | 一种ip段地址集中查找ip地址的方法 |
CN103095864A (zh) * | 2013-01-18 | 2013-05-08 | 清华大学 | 基于哈希算法的面向IPv6过渡的IPv4地址及端口段池维护方法 |
CN103095864B (zh) * | 2013-01-18 | 2015-05-20 | 清华大学 | 基于哈希算法的面向IPv6过渡的IPv4地址及端口段池维护方法 |
CN104539538B (zh) * | 2014-12-26 | 2017-11-28 | 成都致云科技有限公司 | 路由器的ip地址匹配方法和路由器的数据包转发方法 |
CN104539538A (zh) * | 2014-12-26 | 2015-04-22 | 成都致云科技有限公司 | 路由器的ip地址匹配方法和路由器的数据包转发方法 |
CN105404679A (zh) * | 2015-11-24 | 2016-03-16 | 华为技术有限公司 | 数据处理方法和装置 |
CN105404679B (zh) * | 2015-11-24 | 2019-02-01 | 华为技术有限公司 | 数据处理方法和装置 |
CN110351397A (zh) * | 2019-05-30 | 2019-10-18 | 湖北微源卓越科技有限公司 | 一种匹配ip网段的方法及装置 |
CN110351397B (zh) * | 2019-05-30 | 2022-06-14 | 湖北微源卓越科技有限公司 | 一种匹配ip网段的方法及装置 |
CN111177719A (zh) * | 2019-08-13 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 地址类别判定方法、装置、计算机可读存储介质及设备 |
CN111245726A (zh) * | 2019-12-27 | 2020-06-05 | 国家计算机网络与信息安全管理中心 | 一种ip网段高效匹配的实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102307250A (zh) | 一种ip地址查找方法及其设备 | |
CN101621414B (zh) | 一种网络资源及拓扑的发现方法及装置 | |
CN104283806A (zh) | 业务链处理方法和设备 | |
CN108259347B (zh) | 一种报文传输方法和装置 | |
CN104580027A (zh) | 一种OpenFlow报文转发方法及设备 | |
CN103379039A (zh) | 一种用于流统计的方法、装置及系统 | |
CN104486161A (zh) | 一种网络流量的识别方法及装置 | |
CN103220219B (zh) | 一种报文转发方法和设备 | |
EP3496346A1 (en) | Data message forwarding method and apparatus | |
RU2013114830A (ru) | Устройство управления, система связи, способ связи и носитель записи с записанной на нем программой связи | |
CN102333039A (zh) | 一种转发报文的方法、生成表项的方法及装置 | |
CN108206788B (zh) | 一种流量的业务识别方法及相关设备 | |
CN102325077B (zh) | 分支机构间的通信方法及分支机构的出口路由器 | |
CN103685058A (zh) | 控制流数据的服务质量的方法和OpenFlow控制器 | |
CN103825824A (zh) | 一种报文处理方法及装置 | |
CN104579979A (zh) | 一种基于mac信息的网络拓扑发现方法 | |
CN105357334A (zh) | 一种基于ipv6地址划分的ipv6地址存储及快速查询方法 | |
CN104253754A (zh) | 一种acl快速匹配的方法和设备 | |
CN104205745A (zh) | 报文处理的方法与设备 | |
CN107005464B (zh) | 一种业务流数据包的处理方法及装置 | |
CN103746768A (zh) | 一种数据包的识别方法及设备 | |
CN104252504A (zh) | 数据查询方法、设备和系统 | |
CN105515995A (zh) | 报文处理方法、流表生成方法及装置 | |
CN102904804B (zh) | 路由转发信息添加方法、报文转发方法及装置、网络设备 | |
CN103517260A (zh) | 通信参数与通信协议的配置方法、网络节点设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120104 |