IP地址分类与学习

简介: IP地址共分为五类,分别是A、B、C三类及特殊地址 D、E,全0和全1的都保留不用,ipv4 是目前主流的IP地址

1. IP地址的分类


IP地址共分为五类,分别是A、B、C三类及特殊地址 D、E,全0和全1的都保留不用


分类 地址范围 私有IP地址范围
A 1.0.0.1-127.255.255.254 10.0.0.0-10.255.255.255
B 128.0.0.1-191.255.255.254 172.16.0.0-172.31.255.255
C 192.0.0.1-223.255.255.254 192.168.0.0-192.168.255.255
D 多播地址
E 保留地址


2. 127环回地址


通常我们认为 127.0.0.1为本地回环地址,但是 127.0.0.1---127.255.255.254也是回环地址,这点很容易被忽略,环回地址是一个虚拟地址,它不属于任何网络,而是指向自己的计算机。


3. ipv4和ipv6区别


ipv4 是目前主流的IP地址,在2019年11月26日,全球所有43亿个IPv4地址已分配完毕。IPV4 通常写作点分十进制的形式,即四个字节被分开用十进制写出,中间用点分隔。例如 xxx.xxx.xxx.xxx。

值得注意的是:在点分格式中,每个字节都可用任意的进制表达,如,192.0x00.0002.235是一种合法(但不常用)的表示。也可以整体的使用某个进制表示。


即我可以在浏览器中直接输入IP地址的十进制数字就可以访问这个IP


ip.png


IPv6的128位地址通常写成8组,每组为四个十六进制数的形式。比如:

AD80:0000:0000:0000:ABAA:0000:00C2:0002 是一个合法的IPv6地址。如果几个连续段位的值都是0,那么这些0就可以简单的以::来表示,上述地址就可写成AD80::ABAA:0000:00C2:0002。


只能简化一次,目前很多网站都已支持了ipv6,很多数据库、中间件也都支持配置ipv6 地址


4. IP和数字的转换,模拟生成连续的IP


将IPV4 的地址转换成十进制,然后for循环遍历,生成连续的IP,此方法也可用于IP地址排序


/**
     * IP地址转数字
     * @param ipStr
     * @return
     */
    public static long ip2Long( String ipStr) {
        String[] ip = ipStr.split("\.");
        return (Long.valueOf(ip[0]) << 24) + (Long.valueOf(ip[1]) << 16)
                + (Long.valueOf(ip[2]) << 8) + Long.valueOf(ip[3]);
    }
    /**
     * 数字转IP地址
     * @param ipLong
     * @return
     */
    public static String long2Ip(long ipLong) {
        StringBuilder ip = new StringBuilder();
        ip.append(ipLong >>> 24).append(".");
        ip.append((ipLong >>> 16) & 0xFF).append(".");
        ip.append((ipLong >>> 8) & 0xFF).append(".");
        ip.append(ipLong & 0xFF);
        return ip.toString();
    }
    public static List<String> generateIp(String startIp, String endIp){
        List<String> iplist = new ArrayList<>();
        long start = IpUtil.ip2Long(startIp);
        long end = IpUtil.ip2Long(endIp);
        for (long i = start; i <= end; i++) {
            iplist.add(IpUtil.long2Ip(i));
        }
        return iplist;
    }

测试方法:


public static void main(String[] args) {
        List<String> ipList = IpUtil.generateIp("172.168.0.251", "172.168.1.2");
        System.out.println(ipList);
    }

输出结果:


[172.168.0.251, 172.168.0.252, 172.168.0.253, 172.168.0.254, 172.168.0.255, 172.168.1.0, 172.168.1.1, 1
目录
相关文章
|
网络架构
实验5 IP地址分配
实验5 IP地址分配
232 0
|
网络协议 网络架构
|
18天前
|
运维 网络协议
IP 地址类别:权威指南
IP 地址类别:权威指南
41 4
|
17天前
|
安全 网络安全 网络架构
私有IP地址详解:概念、分类与应用
私有IP地址详解:概念、分类与应用
89 0
|
网络协议 中间件 物联网
网络基础学习:ip地址的知识
网络基础学习:ip地址的知识
152 0
IP地址分类
IP地址分类相关内容
278 1
IP地址分类以及C类IP地址的子网划分
IP地址分类以及C类IP地址的子网划分
193 0
|
网络协议 网络架构 数据格式
IP地址:一个我们必须知道的概念
IP地址:一个我们必须知道的概念
233 0
|
开发者 Python
地址分类| 学习笔记
快速学习地址分类
地址分类| 学习笔记
C/C++编程题之识别有效的IP地址和掩码并进行分类统计
C/C++编程题之识别有效的IP地址和掩码并进行分类统计