怎样根据需求来划分子网

作者:华清远见讲师

怎样根据需求来划分子网

题目:假设取得网络地址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。

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

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

也就是说主机号位数是7位,这个子网才能够连100台主机。本来有8位的,剩下的一位拿去当网络号。

NET ID 200.200.200.00000000

NETMASK 255.255.255.00000000

子网1:

NET ID 200.200.200.00000000

NETMASK 255.255.255.10000000

子网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是最后的主机地址.

接下来以此类推。

子网掩码网络地址第一个主机地址最后的主机地址广播地址

255.255.255.128200.200.200.0200.200.200.1200.200.200.126200.200.200.127

255.255.255.224200.200.200.128200.200.200.129200.200.200.158200.200.200.159

255.255.255.224200.200.200.160200.200.200.161200.200.200.190200.200.200.191

255.255.255.224200.200.200.192200.200.200.193200.200.200.222200.200.200.223

255.255.255.224200.200.200.224200.200.200.225200.200.200.254200.200.200.255

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
需求划分子网的过程可以分为以下几个步骤: 1. 确定需要划分的网络地址和子网掩码。这些信息通常由网络管理员提供。 2. 计算网络地址和子网掩码的二进制形式,以便后续计算。 3. 确定需要划分的子网数量,以及每个子网所需的主机数量。这些信息也由网络管理员提供。 4. 计算每个子网的子网掩码。子网掩码的作用是将网络地址的一部分用于标识网络,另一部分用于标识主机。不同子网的子网掩码可能不同。 5. 计算每个子网的起始地址和结束地址。这些地址用于分配给每个子网使用。 以下是一个使用C++实现按需求划分子网的示例程序: ```cpp #include <iostream> #include <cmath> #include <bitset> #include <string> using namespace std; int main() { // 确定需要划分的网络地址和子网掩码 string networkAddress = "192.168.0.0"; string subnetMask = "255.255.255.0"; // 将网络地址和子网掩码转换为二进制形式 bitset<32> networkAddressBinary(stoul(networkAddress, nullptr, 0)); bitset<32> subnetMaskBinary(stoul(subnetMask, nullptr, 0)); // 确定需要划分的子网数量和每个子网所需的主机数量 int numberOfSubnets = 4; int numberOfHostsPerSubnet = 64; // 计算每个子网的子网掩码 int numberOfBitsForSubnet = log2(numberOfSubnets); bitset<32> subnetMaskForSubnet = (1 << (32 - numberOfBitsForSubnet)) - 1; subnetMaskForSubnet <<= (32 - numberOfBitsForSubnet); // 计算每个子网的起始地址和结束地址 for (int i = 0; i < numberOfSubnets; i++) { bitset<32> subnetAddress = networkAddressBinary; subnetAddress |= (i << (32 - numberOfBitsForSubnet)); bitset<32> subnetEndAddress = subnetAddress; subnetEndAddress |= (numberOfHostsPerSubnet - 1); cout << "Subnet " << i << " address range: " << subnetAddress.to_ulong() << " - " << subnetEndAddress.to_ulong() << endl; } return 0; } ``` 这个程序首先将网络地址和子网掩码转换为二进制形式,然后确定需要划分的子网数量和每个子网所需的主机数量。接下来,程序计算每个子网的子网掩码,并根据子网数量和主机数量计算每个子网的起始地址和结束地址。最后,程序输出每个子网的地址范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值