IP地址的查询比较?(50分)

  • 主题发起人 主题发起人 AKuan
  • 开始时间 开始时间
A

AKuan

Unregistered / Unconfirmed
GUEST, unregistred user!
比如有一个IP地址(字符型),另外还有一系列IP地址的表,表中包含两个字段,
一个是IP地址(字符型),另外一个是IP子网掩码(字符型)。现在的问题是,
确定给出的IP地址是否在这个表中的范围里?
我想找个效率最高的方法。不知大家有什么好的方法?
 
建立索引,然后用seek方法查找!
 
to hhzh426:
你可能理解错了。比如,有一个IP地址为:210.110.1.2,
数据表中有这样一行记录:210.110.1.0 子网掩码为:255.255.255.0,
通过什么方法查出210.110.1.2是在这个表中?
当然,我现在有办法实现,不过我想找个效率比较高的算法。
 
我想这样的库结构的话,效率不会很高,
不如这样:ip网路号和子网号,起始主机号,结束主机号。
比如你说的210.110.1.0,255.255.255.0;
就可以存为:210.110.1,0,255;
这样查询起来因该很快的。
 
嘻嘻,这要是真的较真,还挺难的(特别是用硬件来实现)
这其实就是firewall的核心:ip匹配过程,
我当时做的时候,首先是象顾国飞说的那样,把地址按升序
排列,然后判断目前的地址是落在那个区域段,
判断的方法比较常见的是2分查找,速度还可以(软件实现)
如果考虑用硬件,我当时是用了一次hash,这样可以缩短几次判断,硬件电路也方便
目前国际上比较先进的DNS等大型的设备,已经开始使用2次hash算法进行判别
的确速度很快,当然硬件设备也完全是并行运行的
你要想看,我这儿有一点资料(是E文的,只是演讲稿,不过对于2次hash到是说的比较透彻)
 
接受答案了.
 
接受谁的答案了?奇怪,怎么是空白的?
 
一个可以省分的bug,快改吧!
 
to g622
什么意思?
 
对不起,写错地方了 :)
 
后退
顶部