zoukankan      html  css  js  c++  java
  • ipv4与ipv6 Inet4Address类和Inet6Address类

    在设置本地IP地址的时候,一些人会疑惑IPv4与IPv6的区别是什么?下面由学习啦小编为你分享ipv4与ipv6的区别的相关内容,希望对大家有所帮助。

    ipv4与ipv6的区别

    在windows 7以上系统中,在设置本地IP地址的时候经常会看到同事含有IPV4协议项与IPV6协议项,并不同于以往windows xp系统中仅有TCP/IP协议项,不少朋友都觉得比较奇怪,询问编辑IPv4与IPv6的区别,下面编辑就为大家权威的介绍下IPv4与IPv6有什么区别。

    目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4),发展至今已经使用了30多年。IPv4的地址位数为32位,也就是最多有2的32次方的电脑可以联到Internet上,近十年来由于互联网的蓬勃发展,IP位址的需求量愈来愈大,使得IP位址的发放愈趋严格,各项资料显示全球IPv4位址可能在2005至2008年间全部发完。

    什么是IPv6什么是IPv6?IPv6是下一版本的互联网协议,也可以说是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间的不足必将妨碍互联网的进一步发展。

    为了扩大地址空间,拟通过IPv6重新定义地址空间。IPv6采用128位地址长度,几乎可以不受限制地提供地址。按保守方法估算IPv6实际可分配的地址,整个地球的每平方米面积上仍可分配1000多个地址。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,还考虑了在IPv4中解决不好的其它问题,主要有端到端IP连接、服务质量(QoS)、安全性、多播、移动性、即插即用等。IPv6与IPv4相比有什么特点和优点?更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。 增强的组播(Multicast)支持以及对流的支持(Flow-control)。

    这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台. 加入了对自动配置(Auto-configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷. 更高的安全性.在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,这极大的增强了网络安全.通过以上阅读,相信大家对IPv4与IPv6的区别有了比较深刻的理解,其实在windows xp系统仅有的一项TCP/IP协议项就是windows 7中的IPV4协议,只是windows 7系统中了更清晰的区分而已.

    IPv6/IPv4网络转换访问系统

    是一款基于IPv6隧道技术、结合多个网络通讯技术开发的软硬件集成系统。本系统采用“云端管一体化”的产品系统架构设计和部署,包括了客户端、配置隧道、隧道代理技术、隧道服务器、6TO4、4TO6、GRE隧道、ISATAP站点间隧道自动编址等技术模块,能够很好地解决IPv4向IPv6过渡时期终端用户访问提速和多个主流互联网应用的访问难题。经过了十万级用户的压力访问测试,能够轻松帮助IPv6网络用户实现Internet访问。在下一代IPv6网络应用测试中,本系统不仅能够充分利用高校IPv6校园网等IPv6网络设施,更能够有效地帮助高校等IPv6局域网络分流IPv4公网出口的访问流量压力,改善和优化局域网络资源管理,极大地降低行业客户IPv4带宽租赁成本。

    IPv4的简介

    IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基础的协议。1981年 Jon Postel 在RFC791中定义了IP,Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最常用的是以太网。

    目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4,v,version版本),它的下一个版本就是IPv6。IPv6正处在不断发展和完善的过程中,它在不久的将来将取代目前被广泛使用的IPv4。据国外媒体报道,欧盟委员会希望于2010年前将欧洲其成员国境内四分之一的商业和政府部门以及家用网络转换成IPv6标准。 美国已经开始对已经与网络服务商签订IPv6协议的政府部门给与有条件的奖励政策。而欧盟希望跟随美国的步伐,促使其成员国的政府部门在这次转型过程中起到带头作用。

    Inet4Address类和Inet6Address类(都是InetAddress的子类)

    为了区分IPv4和IPv6地址,Java提供了两个类:Inet4Address和Inet6Address,它们都是InetAddress类的子类,这两个类的定义如下:

    public final class Inet4Address extends InetAddress
    public final class Inet6Address extends InetAddress

     这两个类分别按着IPv4和IPv6的规则实现了InetAddress类中的public方法。它们所不同的是Inet6Address类比Inet4Address类多了一个方法:isIPv4CompatibleAddress,这个方法用来判断一个IPv6地址是否和IPv4地址兼容。和IPv4兼容的IPv6地址除了最后四个字节有值名,其他的字节都是0,如0:0:0:0:0:0.192.168.18.10、::ABCD:FAFA都是和IPv4兼容的IPv6地址。

        当使用InetAddress类的四个静态方法创建InetAddress对象后,可以通过getAddress返回的byte数组来判断这个IP地址是IPv4还是IPv6地址(byte数组长度为4就是IPv4地址,byte数组长度为16就是IPv6地址),也可以将instanceof来确定InetAddress对象是它的哪个子类的实例。下面的代码演示了如何判断一个IP地址是IPv4还是IPv6地址:

    package mynet;
    
    import java.net.*;
    
    public class MyIP
    {
        public static void main(String[] args) throws Exception
        {
            if (args.length == 0)
                return;
            InetAddress address = InetAddress.getByName(args[0]);
            System.out.println("IP: " + address.getHostAddress());
            switch (address.getAddress().length)
            {
                case 4:
                    System.out.println("根据byte数组长度判断这个IP地址是IPv4地址!");
                    break;
                case 16:
                    System.out.println("根据byte数组长度判断这个IP地址是IPv6地址!");
                    break;
            }
            if (address instanceof Inet4Address)
                System.out.println("使用instanceof判断这个IP地址是IPv4地址!");
            else if (address instanceof Inet6Address)
                System.out.println("使用instanceof判断这个IP地址是IPv6地址!");
        }
    }

     测试1

        执行如下命令:

    java mynet.MyIP www.csdn.net

      运行结果:

    IP: 211.100.26.122
    根据byte数组长度判断这个IP地址是IPv4地址!
    使用instanceof判断这个IP地址是IPv4地址!

  • 相关阅读:
    objective-c保护属性
    第十七章、程序管理与 SELinux 初探 工作管理 (job control)
    第十七章、程序管理与 SELinux 初探
    Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等
    go语言初始化内部结构体3中方式
    数据结构之C语言模拟整数数组实现
    使用python将元组转换成列表,并替换其中元素
    ruby中的类实例变量和实例的实例变量
    读<<programming ruby>> 7.6节 flip-flop 理解
    ruby逻辑判断符号
  • 原文地址:https://www.cnblogs.com/lukelook/p/11235716.html
Copyright © 2011-2022 走看看