子网划分,如何通过三个字节网络号求出子网,求解!

设某网络中心申请了1个C类网络号:198.55.39,要把网络划分为5个子网,请为该实训中心规划IP地址。求:
1子网地址的位数?
2各子网的地址?
3子网掩码?

子网地址的位数可以通过计算主机数量所需的二进制位数得出。由于C类网络号的默认子网掩码为255.255.255.0,因此该网络共有2^8-2个主机地址可用(减去全0和全1)。需要将其划分为5个子网,则每个子网最少需要保留3个主机位(2^3 = 8),因此剩余5个主机位可以用于子网标识。因此,子网地址的位数为3+5=8。

将网络号198.55.39.0划分为5个子网后,各子网的地址范围如下:

子网1:198.55.39.0 - 198.55.39.31
子网2:198.55.39.32 - 198.55.39.63
子网3:198.55.39.64 - 198.55.39.95
子网4:198.55.39.96 - 198.55.39.127
子网5:198.55.39.128 - 198.55.39.159
子网掩码可以通过将网络号和子网地址部分合并得到。在本例中,子网地址的位数为8,因此子网掩码的前24位与网络号的默认子网掩码相同,即255.255.255.0(或者用/24表示)。子网掩码的后8位全部为1,即11111111,因为这些位用于标识子网地址。因此,子网掩码为255.255.255.224

  • 这篇文章讲的很详细,请看:计算机网络之——非常恶心但友善ip地址、子网掩码、网络地址、构造超网、最小地址和最大地址(理解篇)
  • 除此之外, 这篇博客: 判断两个IP时候属于同一个子网(华为机试)中的 核心思想2(目前来说,我觉得这是思路比较清晰的): 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    1. 对一个字符串型的ip怎么分割?详见C我的另一篇博客:C++中的字符串分割函数-----strtok
    2. 对应数字也不需要转换为二进制进行相与运算,直接用位与运算符即可。eg: 1&2 等价00000001&00000010,结果就是十进制的0
  • 以下回答由chatgpt基于相关博客总结生成:
    1. 子网地址的位数是多少?

    根据需要的子网数量,求出需要的子网位数,公式为: 子网位数 = Ceil(log2(n)), 其中n为子网数量,Ceil为向上取整函数。 在本例中,需要划分5个子网,Ceil(log2(5)) = 3,需要3位二进制来表示子网号,因此子网地址的位数为3位。

    1. 各子网的地址是什么?

    根据需要的子网位数,在原网络地址中为子网号留下对应的位数。在本例中,3位子网号的二进制表示为000、001、010、011、100。将它们转换为字符串,再与网络地址198.55.39.0拼接起来就得到了各子网的地址: - 子网1: 198.55.39.0 - 子网2: 198.55.39.32 - 子网3: 198.55.39.64 - 子网4: 198.55.39.96 - 子网5: 198.55.39.128

    1. 子网掩码应该设置为什么?

    根据C类地址的默认子网掩码为255.255.255.0可知,原网络地址在24位时已经使用掉了所有的网络位,剩余的8位为主机位。因为现在需要使用3位作为子网号,因此需要从主机位中借3位作为子网号,剩余的5位为主机位。而要表示子网号,需要将子网号的位全部设为1,因此子网掩码为11111111.11111111.11111111.11100000,转换为十进制为255.255.255.224。