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地址!

原文地址:https://www.cnblogs.com/lukelook/p/11235716.html

时间: 2024-10-27 00:19:46

ipv4与ipv6 Inet4Address类和Inet6Address类的相关文章

男人 就该将自己活成IPV4绝非IPV6(三)

一个陌生的女人 坐在我的对面默念着一封长信 和一张老人的照片 我不想去了解 她的故事也许比我更遗憾 也许没有我的遗憾 就好像你在遥远的地方 我在回家的路上昨天还梦见我为你歌唱唱着动人的歌谣 好像生来就忧伤可睁开眼你就安静的 睡在我身旁 我曾经不知疲倦 描绘着每个未来直到他们都变成 真实的现在 我却想回到那一天 我遇见你的瞬间没有烦心的梦 没有琐碎的一切 一个多年的兄弟 流着眼泪端着酒杯问我他说 你觉得我除了音乐和爱情 还能想些什么呢我看着她的脸 就像看着一面镜子我对他说 瞧你丫那操行吧 就好像她

《网络编程》IPv4 与 IPv6 相互操作

前言 由于互联网终端不断增加,IPv4 地址长度(32位)已不能够满足要求,所以出现了 IPv6地址(128位),但是现有应用程序大部分还是采用 IPv4 地址形式,所以必须解决 IPv4 与 IPv6 之间的相互操作,使现有基于 IPv4 的应用程序能够与基于 IPv6 的应用程序相互通信.那么我们怎么实现 IPv4 客户端与 IPv6 服务器.IPv6 客户端与 IPv4 服务器之间的通信. IPv4 客户端与 IPv6 服务器 假设我们主机是运行双栈,即存在 IPv4 协议栈和 IPv6

IPV4与IPV6地址

IPV4与IPV6地址 前言 昨天电脑让别人限速了,昨天晚上还做了一个噩梦,我是不是应该学点网络安全的知识,这样的话,我不去侵犯别人,别人侵犯我,我也能自保,其实如果大家都好好的,你别惹我,我也不惹你多好,咱天看了一篇关于黑帽和白帽的文章,有人当黑帽为了快感,为了挣钱,或者为了别的,当白帽的人则想维护网络的安全,我没权利说谁好谁坏,总之个人觉得应该学点网络安全了. 前文回顾 IP地址为IP协议的重要组成部分,它可以识别接入互联网中的任意一台设备.在IP接力中,我们已经看到,IP包的头部写有出发点

RFC2474 - Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers的双语版

RFC2474 - Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers英文版 来源:http://www.hackhome.com/InfoView/127892_full.html Network Working Group K. NicholsRequest for Comments: 2474 Cisco SystemsObsoletes: 1455, 1349 S.

JAVA正则表达式:Pattern类与Matcher类详解(转)

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作

【python】-- 类的多继承、经典类、新式类

继承知识点补充 在python还支持多继承,但是一般我们很少用,有些语言干脆就不支持多继承,有多继承,就会带来两个概念,经典类和新式类. 一.多继承 之前我们都是讲的单继承,那么什么是多继承呢?说白了,就是:子类可以继承多个父类,就叫多继承. class SchoolMember(object): #SchoolMember类 '''学校成员基类''' def tell(self): print("the schoolmeber is tell...") class School(ob

JAVA API(一)String类和StringBuffer类

1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号""之内,如"abc".在Java中定义了String和StringBuffer类来封装字符串,并提供了一系列操作字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用.下面将对String类和StringBuffer类详细讲解. 1.1String类的初始

从设计基类及其派生类看继承关系

继承能够定义可重用.扩展或修改父类行为的子类.但基类的静态构造函数.实例构造函数和析构函数不能被派生类继承. 在下面实例中,定义一个基类Publication用于表示任何类型的出版物以及派生至Publication的其他类型Book类,由此也可以扩展为定义其他类型如:Magazine.Journal.Newspaper和Article. 在设计基类Publication时我们必须考虑到如下关系: 1.要在基类中添加哪些成员 2.基类是否用作派生类模板的抽象基类 3.类层次结构的扩展空间大小,要开

派生类和基类的转换

指针引用分四种情况: 1.直接用基类指针引用基类对象 2.直接用派生指针引用派生对象 3.由基类指针引用派生类对象,由于派生类也是基类对象(包含关系),所以这种引用是安全的.但是只能引用基类成员,若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误.(解决该问题的答案是虚函数和多态性) 4.用派生类指针引用基类对象,这种方式会导致编译器报错.必须先把派生类指针强制转换成基类指针. 如果基类和派生类都定义了同名函数,通过对象指针调用成员函数时,到底调用哪里的函数由指针的原始类型决