划分子网例题详解

划分子网例题详解(网络基础考试题目)

1
,假设取得网络地址200.200.200.0 ,子网掩码为255.255.255.0。现在一个子网有100台主机,另外4个子网有20台主机,请问如何划分子网,才能满足要求。请写出五个子网的子网掩码、网络地址、第一个主机地址、最后一个主机地址、广播地址。(子网号可以全0和全1)请直接写出最后答案

 

还没做题之前先要明确IP地址的命名方式、划分子网的实质、以及子网掩码的作用。

                IP地址的格式是(32bit =  net-id   + host-id

当外界要和我的电脑通信时,他首先找到和我的net-id一样的路由器,然后通过路由器再找到我的host-id。

IP地址一般分为三类:A类: IP(32bit) = net-id(8bit)  +  host-id(24bit)

                           通式是:IP= X. 0 . 0 . 0     后面的0是主机号

                     B类:IP(32bit)= net-id(16bit)  +  host-id(16bit)

                           通式:IP= X. X. 0 .0        后面的0是主机号

                     C类:IP(32bit)= net-id(24bit)  +  host-id(8bit)

                           通式:IP= X. X. X .0        后面的0是主机号

 

明白了IP地址的格式,接下来我们就可以了解子网划分的实质了。

子网划分是为了解决网络IP不够用的情况,它的实质其实就是,在A,B,或者C类中把原先分配给它的主机号位数拿出若干个位来作网络号.这样就可以缓解网络IP不够用的情况了.

比如我们拿一个B类IP来划分:X.X.0.0    里面host-id位数有16位,这时可以根据具体需要(具体需要几位后面会讲)拿出若干位来作net-id,剩下的作host-id.  (这时你可能会问,把 主机号位数拿去分了,那可以连的主机数不是少了?确实是这样,划分子网就是以牺牲主机数来增加网络数。事实也如此,很多企业单位本来没有那么多主机,但他就是要了个大的网络ID,IP地址不够用也是这种原因引起的)

好了,知道划分子网的实质就是把host-id分出若干位数来作net-id,这时外界是怎样和划分好了的子网内的主机联系的呢?

在没有子网掩码的情况下,外界要和子网内的主机联系必须通过先前没划分的总的网络路由器,然后由路由器查找网内的各主机,这样效率就很低下。可不可以让各个子网独自通过自己的路由和外界通信呢?掩码正是为了解决这个问题。

各个子网要和外界独自通信,必须让外界知道你是划分了的子网,你的具体网络ID。但路由表并没有划分子网的具体信息,所以外界也无法通过你的路由器和你联系。掩码就是在你划分了的子网IP地址中,net-id相对应的地方标上1, host-id相对应的地方标上0.再在路由表中添加掩码这一项,这样外界就很容易知道你的具体网络ID了。这就是掩码的作用。

 

 

接下来我们来看例题。200.200.200.0是一个C类地址。要求划分一个子网100主机,另外四个子网20主机,我们可以先把该网络划分成两个子网。一个给100主机的子网,一个给另外20主机的四子网。

C类地址有8bit的主机号,划分子网就是把主机号拿出若干位来作网络ID。

具体要拿出多少位这里有一个公式:子网内主机数=2x次方-2x是主机号的位数)

现在主机数是100,我们取2的x次方-2略大于100。即x=7。

也就是说主机号位数是7位,这个子网才能够连100台主机。本来有8位的,剩下的一位拿去当网络号。(也实在是巧,这一位刚好可以标识两个子网(0或者1)下面的红色部分!)

NET ID  200.200.200.00000000

NETMASK 255.255.255.00000000

子网1:

NET ID  200.200.200.00000000               

NETMASK 255.255.255.10000000  (掩码就是用1标识网络ID,看蓝色部分)

子网2:

NET ID  200.200.200.10000000               

NETMASK 255.255.255.10000000

 

接下来划分四个子网,用上面任何一个子网划分都行。这里用子网2吧。

由上面的公式,子网内主机数=2的x次方-2

取2的x次方-2略大于20,也即x=5.

也就是主机号位数是5位,刚才是7位,剩下2位作网络ID,

子网2.1:

NET ID  200.200.200.10000000               

NETMASK 255.255.255.11100000

子网2.2:

NET ID  200.200.200.10100000               

NETMASK 255.255.255.11100000

子网2.3:

NET ID  200.200.200.11000000               

NETMASK 255.255.255.11100000

子网2.4:

NET ID  200.200.200.11100000               

NETMASK 255.255.255.11100000

这样,子网划分就完成了。

接下来写出五个子网的子网掩码、网络地址、第一个主机地址、最后一个主机地址、广播地址就比较简单了。

记住这一条:

主机号全0是网络地址,网络地址+1是第1个主机地址,主机号全1是广播地址.广播地址-1是最后的主机地址.

子网一主机号全是0的:NET ID  200.200.200.00000000   后面八个0是二进制,换成十进制就是它的网络地址了,然后+1是主机地址;广播地址要注意,那个红色0已是网络ID,主机号是后面七个0,把7个0全置为1就是他的广播地址。

接下来以此类推。

子网掩码

网络地址

第一个主机地址

最后的主机地址

广播地址

255.255.255.128

200.200.200.0

200.200.200.1

200.200.200.126

200.200.200.127

255.255.255.224

200.200.200.128

200.200.200.129

200.200.200.158

200.200.200.159

255.255.255.224

200.200.200.160

200.200.200.161

200.200.200.190

200.200.200.191

255.255.255.224

200.200.200.192

200.200.200.193

200.200.200.222

200.200.200.223

255.255.255.224

200.200.200.224

200.200.200.225

200.200.200.254

200.200.200.255

  • 56
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
巡回置换问题是指在一个完全图中,每个顶点之间都有一条边,求一条经过每个顶点一次且仅一次的回路,使得回路的总长度最小。这个问题是一个NP难问题,因此通常使用启发式算法来解决。其中一种启发式算法是遗传算法。 遗传算法是一种模拟自然进化过程的优化算法。在巡回置换问题中,可以将每个可能的回路看作一个个体,通过交叉、变异等操作来产生新的个体,并通过适应度函数来评估每个个体的优劣程度。经过多代进化,最终得到一个较优的回路。 以下是巡回置换问题的遗传算法的Python实现: ```python import random # 生成初始种群 def generate_population(city_num, pop_size): population = [] for i in range(pop_size): chromosome = list(range(city_num)) random.shuffle(chromosome) population.append(chromosome) return population # 计算路径长度 def get_distance(city1, city2): return ((city1[0] - city2[0]) ** 2 + (city1[1] - city2[1]) ** 2) ** 0.5 def get_path_length(path, cities): length = 0 for i in range(len(path) - 1): length += get_distance(cities[path[i]], cities[path[i+1]]) length += get_distance(cities[path[-1]], cities[path[0]]) return length # 选择操作 def selection(population, cities): fitness_list = [1 / get_path_length(chromosome, cities) for chromosome in population] total_fitness = sum(fitness_list) probability_list = [fitness / total_fitness for fitness in fitness_list] selected_population = [] for i in range(len(population)): selected_population.append(random.choices(population, probability_list)[0]) return selected_population # 交叉操作 def crossover(parent1, parent2): child = [-1] * len(parent1) start = random.randint(0, len(parent1) - 1) end = random.randint(0, len(parent1) - 1) if start > end: start, end = end, start for i in range(start, end+1): child[i] = parent1[i] j = 0 for i in range(len(parent2)): if child[j] == -1: if parent2[i] not in child: child[j] = parent2[i] j += 1 else: j += 1 return child # 变异操作 def mutation(chromosome): index1 = random.randint(0, len(chromosome) - 1) index2 = random.randint(0, len(chromosome) - 1) chromosome[index1], chromosome[index2] = chromosome[index2], chromosome[index1] return chromosome # 遗传算法主函数 def genetic_algorithm(city_list, pop_size, generation_num, crossover_rate, mutation_rate): population = generate_population(len(city_list), pop_size) for i in range(generation_num): population = selection(population, city_list) new_population = [] for j in range(pop_size): parent1 = random.choice(population) if random.random() < crossover_rate: parent2 = random.choice(population) child = crossover(parent1, parent2) else: child = parent1 if random.random() < mutation_rate: child = mutation(child) new_population.append(child) population = new_population best_path = min(population, key=lambda x: get_path_length(x, city_list)) best_length = get_path_length(best_path, city_list) return best_path, best_length # 测试 if __name__ == '__main__': city_list = [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)] best_path, best_length = genetic_algorithm(city_list, 100, 1000, 0.8, 0.1) print('最优路径:', best_path) print('最短路径长度:', best_length) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值