涉及子网掩码等相关知识

将一个121.1.0.0/22的网络,划分成4个相同大小的子网,每个网络中包含多少IP地址,每个网段的网络地址、子网掩码、起始IP地址、结束IP地址分别是什么?

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7682498
  • 你也可以参考下这篇文章:2、已知IP地址,如何计算其子网掩码,默认网关地址,网络地址(Ⅰ)
  • 除此之外, 这篇博客: 如何计算子网掩码,网络号,子网号,广播号(广播地址)中的 202.106.1.0/26 可以产生几个子网?每个子网可以有几个主机IP?每个子网号是什么?每个子网中的第一个地址和最后一个地址是什么? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • IP地址和子网掩码是一一对应关系,可以通过子网掩码数26计算得出子网掩码为255.255.255.192
    IP地址:202.106.1.0
    子网掩码:11111111 11111111 11111111 11000000
    255 255 255 192=2^7+ 2 ^6

  • 您还可以看一下 张先凤老师的《计算机体系结构—网络篇3、4》之IP分类与组成、网络标识、子网掩码、私网组建等课程中的 计算网段所允许分配的ip数量小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    解决方案:

    计算网络地址121.1.0.0/22划分为4个相同大小子网后,每个子网包含多少IP地址:

    根据子网掩码,可以得出子网掩码为255.255.252.0,可以计算出每个子网的主机数为2^10-2 = 1022。

    而四个子网是等大小的,所以每个子网的主机数为1022/4= 255。

    每个子网的网络地址、子网掩码、起始IP地址、结束IP地址:

    首先,计算出新的子网掩码为255.255.252.0,具体计算可以如下:

    将 255.255.255.0 转为二进制是:11111111.11111111.11111111.00000000 根据子网掩码可以计算出网络地址为 121.1.0.0/22 现在需要我们将这个网络地址进行划分,可以通过子网掩码得出子网的大小和范围,并根据子网地址来计算每个子网的地址范围。

    子网划分: 需要4个子网,可以计算出子网掩码为 255.255.255.192,掩码二进制为 11111111.11111111.11111111.11000000

    网络地址:121.1.0.0/22 子网掩码:255.255.255.192/18 (11111111.11111111.11111111.11000000) 每个子网主机数:255

    子网A 替换二进制首位的多余 0 为 1,可得最初掩码为:11111111.11111111.11111100.00000000。 它转换为十进制为:255.255.252.0,它规定了子网内的 IP 信标应当致。 也就是说明了 3216128 个连续的 IP 解析地址为这样的子网。

    子网0:121.1.0.0/22[0-102]

    子网开始地址:121.1.0.0 子网结束地址:121.1.0.102 子网子网掩码:11111111.11111111.11111100.00000000 网络地址:121.1.0.0 广播地址:121.1.3.255

    子网B 子网开始地址:121.1.0.103 子网结束地址:121.1.0.205 子网子网掩码:11111111.11111111.11111100.00000000 网络地址:121.1.0.128 广播地址:121.1.3.255

    子网C 子网开始地址:121.1.0.206 子网结束地址:121.1.0.308 子网子网掩码:11111111.11111111.11111100.00000000 网络地址:121.1.0.256 广播地址:121.1.3.255

    子网D 子网开始地址:121.1.0.309 子网结束地址:121.1.0.411 子网子网掩码:11111111.11111111.11111100.00000000 网络地址:121.1.0.384 广播地址:121.1.3.255

    如何判断一个字符串是否为合法的IP地址:

    可以通过如下代码判断一个字符串是否为合法的IP地址:

    import java.util.Scanner;

    public class MyTest {

    public static void main(String[] args) {
        /*
         * 如何判断一个字符串是否为合法的IP地址。
         */
        Scanner sc=new Scanner(System.in);
        String test=sc.nextLine();
    
        // ip地址最短7位最长15位
        if (test.length() < 7 || test.length() > 15) {
            System.out.println("不合法,长度不对");
        } else {
            String[] TheFigures = test.split("\\.");
            if (TheFigures.length!= 4) {
    
                System.out.println("不合法,不是4个串-------"+TheFigures.length);
            } else {
                //对每个字符串进行判断是否是规定的数字
                boolean flag=true;//定义一个标志位
                long sum=0;
                for(int i=0;i<TheFigures.length;i++) {
    
    
                    char [] cr=TheFigures[i].toCharArray();
                    //遍历每个串里的字符
                    for (char chr:cr) {
                        char ling='0';
                        int ch=chr-ling;
                        if(ch<0 | ch>9) {
                            flag=false;
    
                            System.out.println("不合法,有非数字---ASCII值为"+ch+"字符是"+chr);
                            break;
                        }
                    }
                    sum=sum+Integer.parseInt(TheFigures[i]);
                    if(flag) {
                        int figInt=Integer.parseInt(TheFigures[i]);
                        if(figInt<0  || figInt>255) {
                            flag=false;
                            break;
                        }
                    }
                }
                if(flag && sum!=0 ) {
                    System.out.println("合法啦!");
                }else {
                    System.out.println("不合法!");
                }
    
    
    
    
    
    
            }
        }
    
    }
    

    }

    该代码将输入的字符串按 . 分隔为 4 段,然后对每段进行一一判断。具体判断方式如下:

    首先判断输入的字符串长度是否为 7~15 位,如果是,继续判断下去。

    将输入的字符串按 . 分开,如果分开后的数组元素不为 4,那么该 IP 地址非法。

    依次对每个元素做如下判断:

    判断字符串是否只有数字组成,如果仅由数字组成,继续判断下去。 将字符串转换为整型,并判断整型数值是否是 0~255 之间。

    如果 2、3 步判断通过,说明输入的 IP 地址是一个合法的 IP 地址。

    哪一个是子网172.25.0.64/26中的最后一个可用地址:

    根据该子网的掩码位数为 26,计算出掩码为 255.255.255.192。

    因为子网掩码为 26,所以可以将 IP 地址按位分别分为三段:第一段 172.25.0 ,第二段 64,第三段从 0 开始递增。一般情况下,每个子网都有两个地址是不能使用的,一般是网络地址和广播地址。而网络地址通常是每个子网的第一个 IP 地址,一般就是子网 IP 地址中除了最后一段的 0 这一段。因此,每个子网最后一个可用地址应该是子网中最后一个能够使用的 IP 地址,来自第二段加上最后一段的 1(得出的答案是:172.25.0.127)。

22位网络地址分成4个网段那就是24位网络地址,具体计算可以参考shell脚本之IP计算器:https://sunsite.blog.csdn.net/article/details/125216252