2015-02-06 49 views
2

我有CIDR表示法中的IPv4块。这些块城市的基础上,分我想将它们合并一个级别了,我的意思是,直到区域级 以其国家/地区为基础合并多个IPv4地址块

12.17.230.48|12.178.230.63|US|Texas|Temple 
12.178.230.64|12.178.230.95|US|Texas|Abilene 
12.178.230.96|12.178.230.111|US|Texas|Jayton 
12.178.230.112|12.178.230.119|US|Texas|Wichita Falls 
12.178.230.120|12.178.230.127|US|Texas|Mansfield 
12.178.230.128|12.178.230.159|US|Texas|Waco (Bellmead) 
12.178.230.160|12.178.230.167|US|Texas|Irving 
12.178.230.168|12.178.230.175|US|Texas|Fort Worth 
12.178.230.176|12.178.230.183|US|Texas|Alvarado 
12.178.230.184|12.178.230.191|US|Texas|Weatherford 
12.178.230.192|12.178.230.199|US|Texas|Haltom City 
12.178.230.200|12.178.230.207|US|Texas|Fort Worth (Diamond Hill - Jarvis) 
12.178.230.208|12.178.230.223|US|Texas|Fort Worth 
12.178.230.224|12.178.230.231|US|Texas|Coppell 
12.178.230.232|12.178.230.239|US|Texas|Lubbock 

这里所有的得州,所以我想合并到一个像所有那些块这

start_ip_of_first_range|end_ip_of_last_range_of_same_region|US|Texas 

虽然我想这一点,但看起来像我,甚至违反IPv4地址基本规则

请提出的公式?

回答

1

那么它迟到写在这里,但我找到了一个简单和冗长的方式来实现这一目标。

1. First convert all the ranges in the form of network_address|subnet_mask 
2. sort whole the file in descending IP address 
3. Now check if two lines fulfill following conditions 
    a. Same subnet mast && 
    b. Re-Check network IP if the position of first set bit from right is greater than host bit length && 
    c. Network IP of the line = network ip of next line + 2^(number of host bit) +1 && 
    d. First set bit from right in first line should be equal and less than the first set bit in next line's IP. && 
    e. Both line should have same location && 
4. In that case remove the next line and decrease the subnet mask length by one. 
5. Now the resultant range will serve exactly same IP addresses as much the initial two ranges were serving neither more or less . 
6. To make more merging keep repeating step 2 to 5 

我使用C程序和bash实用程序完成了此操作。虽然我不在这里粘贴程序如果有人需要它,我会尝试把这个确切的解决方案。著名的问题

这可能是解决方案http://www.perlmonks.org/?node_id=118346

2

所有你需要的是确定'supernet'的最低和最高的IP子网。

12.178.230.48|12.178.230.63|US|Texas|Temple 
12.178.230.232|12.178.230.239|US|Texas|Lubbock 

因此,要将它们分组,您需要找到包含这些范围的子网掩码。您可以使用的唯一子网掩码是/24。 A /25只会为您提供“超网”,范围从12.178.230.0-12.178.230.12712.178.230.128-12.178.230.255

一个/24子网掩码为您提供以下范围:12.178.230.0-12.178.230.255

附加:超网可能不是正确的命名约定,但它给你一个大致的了解,这是全球IP范围为您所有的 结果。

+0

加1分享关于超网知识 – Akaks 2015-02-06 08:24:00

相关问题