当前位置: 首页 > news >正文

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


本文持续更新中。。。

相关文章:

  • 华为认证 | HCIA、HCIP、HCIE,难度区别在哪里?
  • 请问一下就是业务概念模型和业务逻辑模型有啥关系
  • 【Linux】网络篇:UDP、TCP 网络接口及使用
  • 分布式调度 Elastic-job
  • numpy详解
  • Prompt 策略:代码库 AI 助手的语义化搜索设计
  • 写一篇nginx配置指南
  • Oracle的 dblink 学习笔记
  • 使用stelnet进行安全的远程管理
  • 机器学习 day35(决策树)
  • Linux的调试工具 - gdb(超详细)
  • 〖Python网络爬虫实战㉟〗- 极验验证码的识别
  • 【VsCode】SSH远程连接Linux服务器开发,搭配cpolar内网穿透实现公网访问(1)
  • LeNet-5
  • vue3父子组件传对象,子组件访问修改父组件对象中的属性值
  • 第13节-PhotoShop基础课程-裁剪工具
  • MySQL 面试题——MySQL 基础
  • VBA技术资料MF57:VBA_自动创建PowerPoint演示文稿
  • 无涯教程-JavaScript - OFFSET函数
  • Hadoop-Hbase
  • 上影新片《密档》杀青,全新角度演绎石库门秘战
  • “未来3天公布”,特朗普俄乌“和平计划”是什么?普京泽连斯基什么态度?
  • AI时代的阅读——当今时代呼唤文学的思想实验和人文认知
  • 开发国内首个泌尿专科智能体,医生们将临床经验转变为知识图谱
  • 【社论】上海车展40年,见证了什么
  • 庆祝中国印尼建交75周年招待会暨万隆会议70周年纪念活动在京举行