某单位申请到一个155.102.103.0/24的网络,需将其划分为不小于20,50,100的三个子网,请问每个子网的网络地址、子网掩码、起始IP地址、结束IP地址分别是什么?

某单位申请到一个155.102.103.0/24的网络,需将其划分为不小于20,50,100的三个子网,请问每个子网的网络地址、子网掩码、起始IP地址、结束IP地址分别是什么?

将155.102.103.0/24网络划分为不小于20、50、100的三个子网:

划分20个子网,每个子网最少可容纳(2^5-2)=30台主机 网络地址:155.102.103.0 子网掩码:255.255.255.224 (前3个8位为1,第4个8位为0) 起始IP地址:155.102.103.1 结束IP地址:155.102.103.30

划分50个子网,每个子网最少可容纳(2^6-2)=62台主机 网络地址:155.102.103.0 子网掩码:255.255.255.192 (前3个8位为1,第4个8位为0) 起始IP地址:155.102.103.1 结束IP地址:155.102.103.62

划分100个子网,每个子网最少可容纳(2^7-2)=126台主机 网络地址:155.102.103.0 子网掩码:255.255.255.128 (前3个8位为1,第4个8位为0) 起始IP地址:155.102.103.1 结束IP地址:155.102.103.126

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7682498
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:知道ip地址和子网掩码后可以算出网络地址、广播地址、地址范围、本网主机数
  • 除此之外, 这篇博客: IP地址、子网掩码、网络号、主机号、网络地址、主机地址运算中的 根据每个网络的主机数量进行子网地址的规划和计算子网掩码。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    假如某子网有10台主机,那么对于这个子网需要的IP地址是: 10(主机ip) + 1(指这个网络连接时所需的网关地址) + 1(网络地址) + 1(广播地址) = 13。

    由于13小于最近的2进制数为16(2^4),所以主机位为4位(即有4位0即可),所以子网掩码为255.255.255.240(256-16),子网掩码二进制为11111111 11111111 11111111 11110000。

    注意:
    如果一个子网有14台主机,不少人常犯的错误是:依然分配具有16个地址空间的子网,而忘记了给网关分配地址。这样就错误了,因为: 14+1+1+1=17 。17大于16,所以我们只能分配具有32个地址(32等于2的5次方)空间的子网。这时子网掩码为:255.255.255.224

  • 您还可以看一下 深博老师的第08章-IP地址--分类编址和无分类编址课程中的 分类编址:IP地址的地址块概念理解及地址块范围划分方法小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    根据参考资料中的知识点,可以得出以下解决方案:

    1.先将155.102.103.0/24转换为二进制,得到:10011011.01100110.01100111.00000000 2.根据子网划分的规则,需要借用原网络地址中的若干位来表示子网的地址,需要找到最小的子网掩码能够划分出不少于20、50、100个子网,同时每个子网中能拥有的IP数最多。经过计算,可以用子网掩码255.255.255.128(即/25)来满足要求,可以将第三个位借给子网地址。 3.划分子网的过程: -对于20个子网,需要将第三个位借给子网地址,留下5位给主机地址,可以得到子网掩码为255.255.255.224。 -对于50个子网,需要将第四个位借给子网地址,留下4位给主机地址,可以得到子网掩码为255.255.255.192。 -对于100个子网,需要将第五个位借给子网地址,留下3位给主机地址,可以得到子网掩码为255.255.255.128。 4.计算每个子网的网络地址、子网掩码、起始IP地址和结束IP地址: -针对第一个子网,网络地址为155.102.103.0,子网掩码为255.255.255.224,起始IP地址为155.102.103.1,结束IP地址为155.102.103.30。 -针对第二个子网,网络地址为155.102.103.32,子网掩码为255.255.255.224,起始IP地址为155.102.103.33,结束IP地址为155.102.103.62。 -可以依次类推计算剩余子网的网络地址、子网掩码、起始IP地址和结束IP地址。

    代码示例:

    import ipaddress
    
    net = ipaddress.IPv4Network('155.102.103.0/24')
    
    # 划分20个子网
    net_1 = net.subnets(prefixlen_diff=3)
    subnet_masks_1 = ["255.255.255.224"] * 20
    subnet_addrs_1 = [str(subnet.network_address) for subnet in net_1]
    start_ips_1 = [str(subnet.network_address + 1) for subnet in net_1]
    end_ips_1 = [str(subnet.broadcast_address - 1) for subnet in net_1]
    
    # 划分50个子网
    net_2 = net.subnets(prefixlen_diff=2)
    subnet_masks_2 = ["255.255.255.192"] * 50
    subnet_addrs_2 = [str(subnet.network_address) for subnet in net_2]
    start_ips_2 = [str(subnet.network_address + 1) for subnet in net_2]
    end_ips_2 = [str(subnet.broadcast_address - 1) for subnet in net_2]
    
    # 划分100个子网
    net_3 = net.subnets(prefixlen_diff=1)
    subnet_masks_3 = ["255.255.255.128"] * 100
    subnet_addrs_3 = [str(subnet.network_address) for subnet in net_3]
    start_ips_3 = [str(subnet.network_address + 1) for subnet in net_3]
    end_ips_3 = [str(subnet.broadcast_address - 1) for subnet in net_3]
    

    其中net表示原网络地址,net_1表示划分成20个子网后的子网列表,subnet_masks_1表示每个子网的子网掩码,subnet_addrs_1表示每个子网的网络地址,start_ips_1表示每个子网的起始IP地址,end_ips_1表示每个子网的结束IP地址。net_2subnet_masks_2subnet_addrs_2start_ips_2end_ips_2net_3subnet_masks_3subnet_addrs_3start_ips_3end_ips_3依次代表划分成50个子网和100个子网后的子网列表和相关信息。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^