网络地址的分类以及->代码进行IP合法性判断

本文详细介绍了IP地址的A、B、C、D四类分类标准,每类地址的网络号与主机号长度,以及各自适用的网络规模。同时,提供了一个Java程序示例,用于判断一个字符串是否符合IP地址的格式规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

各类表示范围如图所示
在这里插入图片描述
A类地址:1个字节的网络号,3个字节的主机号,用于少量的大型网络;
B类地址:2个字节的网络号,2个字节的主机号,用于中等规模的网络;
C类地址:3个字节的网络号,1个字节的主机号,用于小规模的网络。

在这里插入图片描述

判断一个字符串是否是正确的ip地址

import java.util.Scanner;
//ip的格式:(1-255).(0-255).(0-255).(0-255)
public class isIp {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String ipStr=input.next();
        System.out.println(isIp(ipStr));
    }
    public static boolean isIp(String str){
        if(str==null){//字符串为空,说明不是
            return false;
        }
        if(str.length()<7||str.length()>15){//长度不符合要求,说明不是
            return false;
        }
        if(str.charAt(0)=='.'||str.charAt(str.length()-1)=='.');
        //以.作为分隔符,分割出来长度不为4也是非法ip
        String[] arr=str.split("\\.");
        System.out.println(arr.length);
        if(arr.length!=4){
            System.out.println("length!=4");
            return false;
        }
        for(int i=0;i<arr.length;i++){//192.168.0.0
            if(arr[i].length()>1 && arr[0].charAt(0)=='0'){
                return false;
            }
            //对字符串中的每个字符进行逐一判断
            for(int j=0;j<arr[i].length();j++){
                if(arr[i].charAt(j)<'0'||arr[i].charAt(j)>'9'){
                    return false;
                }
            }
        }
        //把拆分的字符串转换为数字进行判断
        for(int i=0;i<arr.length;i++){
            int part=Integer.parseInt(arr[i]);
            if(i==0){
                if(part<1||part>255){
                    return false;
                }
                else
                {
                    if(part<0||part>255){
                        return false;
                    }
                }
            }
        }
        return true;
    }
}

A类地址
第一个字节的最高位固定为0,另外7比特可变的网络号可以标识128个网络(0~127),0一般不用,127用作环回地址。所以共有126个可用的A类网络。A类地址的24比特主机号可以标识1677216台主机(2^24 =1677216)。另外,主机号为全0时用于表示网络地址,主机号为全1时用于表示广播地址。这两个主机号不能用来标识主机。所以,每个A类网络最多可以容纳1 677 214台主机。A类地址的第一个字节的取值范围为0~127。

B类地址
第一个字节的最高2比特固定为10,另外14比特可变的网络号可以标识214=16384个网络。16比特主机号可以标识65 536台主机,(216=65536)。由于主机号不能为全0和全1,所以,每个B类网络最多可以容纳65534台主机。B类地址的第一个字节的取值范围为128~191。

C类地址
第一个字节的最高3比特固定为110,另外21比特可变的网络号可以标识221=2097152个网络。8比特主机号可以标识256台主机(28=256),由于主机号不能为全0和全1。所以,每个C类网络最多可以容纳254台主机。C类地址的第一个字节的取值范围为192~223。

D类地址
D类地址用于组播(multicasting),因此,D类地址又称为组播地址。D类地址的范围为224.0.0.0~239.255.255.255,每个地址对应一个组,发往某一组播地址的数据将被该组中的所有成员接收。D类地址不能分配给主机。D类地址的第一个字节的取值范围为224~239。
有些D类地址已经分配用于特殊用途:
224.0.0.0 是保留地址、224.0.0.1 是指本子网中的所有系统、224.0.0.2 是指本子网中的所有路由器、224.0.0.9 是指运行RIPv2路由协议的路由器、224.0.0.11是指移动IP中的移动代理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值