【原创】如何理解 IPv6 地址格式

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介:
之前看到的 TCP 连接信息如下  
[root@upu_2 ~][root@upu_2 ~]# lsof -i :2181 -P|grep LISTEN
java     7853 root   16u  IPv6    21294      0t0  TCP *:2181 (LISTEN)
[root@upu_2 ~][root@upu_2 ~]# lsof -i :26888 -P
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java     7853 root   27u  IPv6 15051913      0t0  TCP 10.23.46.36:2181->10.23.46.36:26888 (ESTABLISHED)
css     29804 root  113u  IPv4 15051910      0t0  TCP 10.23.46.36:26888->10.23.46.36:2181 (ESTABLISHED)
[root@upu_2 ~][root@upu_2 ~][root@upu_2 ~]# netstat -natp|grep 26888
tcp        0      0 10.23.46.36:26888           10.23.46.36:2181            ESTABLISHED 29804/css           
tcp        0      0 ::ffff:10.23.46.36:2181     ::ffff:10.23.46.36:26888    ESTABLISHED 7853/java           
[root@upu_2 ~]
可以看到,  
  • zookeeper 以 IPv6 类型创建了监听 socket
  • 业务(zk客户端)基于 IPv4 类型建立了到 zookeeper 的 TCP 连接
  • 从 zookeeper 侧看该 TCP 连接,其类型为 IPv6 
而其中 zookeeper 看到的 IPv6 地址表达形式为    ::ffff:10.23.46.36:2181 ,这种形式要如何理解?  

(以下内容来自 维基百科)  

-=-=-=- 我是第一次和公司同事打麻将的分隔线    -=-=-=-  

【IPv6】

      从 IPv4 到 IPv6 最显著的变化就是网络地址的长度。RFC 2373 和 RFC 2374 定义的 IPv6 地址有 128 位长;IPv6 地址的表达形式,一般采用 32 个十六进制数  
      IPv6 中可能的地址有 2^128≈3.4×10^38 个,具体数量为 340,282,366,920,938,463,463,374,607,431,768,211,456 个。也可以想象为 16^32 个,因为 32 位地址每位可以取 16 个不同的值(参考组合数学)。  
      在很多场合,IPv6 地址由两个逻辑部分组成:一个 64 位的网络前缀和一个 64 位的主机地址,主机地址通常根据物理地址自动生成,叫做 EUI-64(或者 64-位扩展唯一标识)  

【IPv6 地址表示】

      IPv6 地址为 128 位元长,但通常写作 8 组每组四个十六进制数的形式。例如:  
2001:0db8:85a3:08d3:1319:8a2e:0370:7344
是一个合法的 IPv6 地址。  
      如果四个数字都是 0 ,可以被省略。例如:  
2001:0db8:85a3:0000:1319:8a2e:0370:7344
等价于  
2001:0db8:85a3::1319:8a2e:0370:7344
遵从这些规则,如果因为省略而出现了两个以上的冒号的话,可以压缩为一个,但这种零压缩在地址中只能出现一次。因此:  
2001:0DB8:0000:0000:0000:0000:1428:57ab
2001:0DB8:0000:0000:0000::1428:57ab
2001:0DB8:0:0:0:1428:57ab
2001:0DB8:0::0:1428:57ab
2001:0DB8::1428:57ab
都是合法的地址,并且他们是等价的。但  
2001::25de::cade
是非法的。(因为这样会使得搞不清楚每个压缩中有几个全零的分组)  
同时前导的零可以省略,因此  
2001:0DB8:02de::0e13
等价于  
2001:DB8:2de::e13
如果这个地址实际上是 IPv4 的地址,后 32 位元可以用 10 进制数表示;因此:  

ffff:192.168.89.9       等价于 ::ffff:c0a8:5909   ,但   不等价于  ::192.168.89.9 和 ::c0a8:5909 。

ffff:1.2.3.4 格式叫做 IPv4 映射地址,是不建议使用的。而 ::1.2.3.4 格式叫做 IPv4 一致地址  

IPv4 地址可以很容易的转化为 IPv6 格式。举例来说,如果 IPv4 的一个地址为 135.75.43.52(十六进制为 0x874B2B34),它可以被转化为 0000:0000:0000:0000:0000:0000:874B:2B34 或者 ::874B:2B34 。同时,还可以使用混合符号(IPv4-compatible address),则地址可以为 ::135.75.43.52。  

-=-=-=- 我是第一次和公司同事打麻将的分隔线 -=-=-=-

结论:当 zk 客户端以 IPv4 方式与监听 IPv6 地址的 zookeeper 建立 TCP 连接时,zookeeper 以 IPv4 映射地址形式表达所看到的 TCP 连接信息。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
域名解析 网络协议 网络架构
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.2 IPv6 基本功能(一)
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.2 IPv6 基本功能
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.2	IPv6 基本功能(一)
|
网络协议 算法 安全
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.4 IPv6 和 IPv4 的对比
《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.IPv6 和 IPv4 的对比
|
网络协议 物联网 网络架构
带你读《互联网协议第六版 (IPv 6)》第一章概述1.1IPv6的概念
《互联网协议第六版 (IPv 6)》第一章概述1.1IPv6的概念
|
网络协议
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.1IPv6 特性介绍(三)
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.1IPv6 特性介绍
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.1IPv6 特性介绍(三)
|
网络协议 安全 网络安全
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.1IPv6 特性介绍(一)
《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.1IPv6 特性介绍
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.1IPv6 特性介绍(一)
|
网络协议 算法 网络架构
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.1IPv6 特性介绍(二)
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.1IPv6 特性介绍
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.1IPv6 特性介绍(二)
|
域名解析 存储 网络协议
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.2 IPv6 基本功能(二)
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.2 IPv6 基本功能
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍2.2	IPv6 基本功能(二)
|
传感器 网络协议 物联网
带你读《互联网协议第六版 (IPv 6)》第一章概述1.2IPv6 出现的必然性
《互联网协议第六版 (IPv 6)》第一章概述1.2IPv6 出现的必然性
|
网络协议 物联网 5G
带你读《互联网协议第六版 (IPv 6)》前言
《互联网协议第六版 (IPv 6)》前言
|
网络协议 数据挖掘 分布式数据库
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍 2.3 IPv6 特点(一)
带你读《互联网协议第六版 (IPv 6)》第二章IPv6 技术介绍 2.3 IPv6 特点