Java-API简析_java.net.Inet6Address类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/132953085
出自【进步*于辰的博客】

因为我发现目前,我对Java-API的学习意识比较薄弱,需要慢慢习惯使用Java-API,乃至剖析源码来提升自己的源码阅读能力和编码素质。
大家如果需要Java-API文档,我上传了【https://download.csdn.net/download/m0_69908381/87691693】。

文章目录

  • 1、概述

1、概述

继承关系:

  • java.lang.Object
    • java.net.InetAddress
      • java.net.Inet6Address

实现的所有接口
Serializable


public final class Inet6Address extends InetAddress

此类表示Internet协议版本6(IPv6)地址。 定义: RFC 2373: IP Version 6 Addressing Architecture

Textual representation of IP addresses

用作方法输入的IPv6地址的文本表示采用以下形式之一:

  1. The preferred form是x:x:x:x:x:x:x:x,其中’x’是地址的8个16位片段的十六进制值。 这是完整的表格。 例如,
1080:0:0:0:8:800:200C:417A 

请注意,没有必要在单个字段中写入前导零。 但是,除了下面描述的以外,每个字段必须至少有一个数字

  1. 由于某些分配某些样式的IPv6地址的方法,地址通常包含长的零比特串。 为了使包含零位的写入地址更容易,可以使用特殊语法来压缩零。 “::”的使用表示多组16位零。 “::”只能在地址中出现一次。 “::”也可用于压缩地址中的前导 和/或尾随 零。 例如,
1080::8:800:200C:417A 
  1. 在处理IPv4和IPv6节点的混合环境时,有时更方便的另一种形式是x:x:x:x:x:x:dddd,其中’x是六个高阶16的十六进制值 - 地址的位片段,'s’是标准IPv4表示地址的四个低位8位片段的十进制值,例如,
::FFFF:129.144.52.38 
::129.144.52.38 

其中“:: FFFF:dddd”和“:: dddd”分别是IPv4映射的IPv6地址和IPv4兼容的IPv6地址的一般形式。 请注意,IPv4部分必须采用“dddd”形式。 以下表格无效:

::FFFF:d.d.d 
::FFFF:d.d 
::d.d.d 
::d.d 

以下表格:

::FFFF:d 

是有效的,但它是IPv4兼容的IPv6地址的非常规表示,

::255.255.0.d 

而“:: d”对应于通用IPv6地址“0:0:0:0:0:0:0:d”。

对于将文本表示作为输出值返回的方法,使用完整形式。 Inet6Address将返回完整的表单,因为它与其他文本数据结合使用时是明确的

特殊的IPv6地址

IPv4-mapped address Of the form ::ffff:w.x.y.z, this IPv6 address is used to represent an IPv4 address. It allows the native program to use the same address data structure and also the same socket when communicating with both IPv4 and IPv6 nodes.

In InetAddress and Inet6Address, it is used for internal representation; it has no functional role. Java will never return an IPv4-mapped address. These classes can take an IPv4-mapped address as input, both in byte array and text representation. However, it will be converted into an IPv4 address.

Textual representation of IPv6 scoped addresses

可以扩展如上所述的IPv6地址的文本表示以指定IPv6范围的地址。 [draft-ietf-ipngwg-scoping-arch-04.txt]中描述了对基本寻址体系结构的扩展。

由于链路本地和站点本地地址是非全局的,因此不同主机可能具有相同的目标地址,并且可以通过同一始发系统上的不同接口访问。 在这种情况下,据说始发系统连接到相同范围的多个区域。 为了消除哪个是预期目标区域的歧义,可以将区域标识符(或scope_id )附加到IPv6地址。

指定scope_id的一般格式如下:

 IPv6-address% scope_id 

IPv6地址是如上所述的文字IPv6地址。 scope_id是指本地系统上的接口,可以通过两种方式指定。

  1. 作为数字标识符。 这必须是一个正整数,用于标识系统所理解的特定接口和范围。 通常,可以通过系统上的管理工具确定数值。 每个接口可以有多个值,每个范围一个。 如果未指定范围,则使用的默认值为零
  2. 作为一个字符串。 这必须是NetworkInterface.getName()针对特定接口返回的确切字符串。 以这种方式创建Inet6Address时,通过查询相关的NetworkInterface在创建对象时确定数字scope-id

另请注意,可以从NetworkInterface类返回的Inet6Address实例中检索数字scope_id 。 这可用于查找系统上配置的当前范围ID。

从以下版本开始:
1.4
另请参见:
Serialized Form


本文持续更新中。。。

你可能感兴趣的:(Java-API,Java-API简析,Inet6Address)