IPv4快枯竭了,于是提出了IPv6方案,使用了6字节网络地址。
1. 这样看来,每台主机都可以固定唯一地址,或者干脆用mac地址作为IP好了,这样不但实现了固定IP,也免去了分派IP的机构;
2. 既然地址都6个字节,搞个变长地址也不是问题啊,例如可以1~32字节,这样就可以直接使用主机名作为网络地址了。这样也免去了那个让人操心的DNS了。
这样,不就省去两张表了吗?可是,IPv6为什么没有这么做?
首先纠正一个问题中的一个错误,IPv6地址是128二进制位,或者16字节,而不是6个字节。题主可能对IPv6了解的较少,所以产生了很多误解。
主机获得IPv6地址的方法,相比IPv4更加多样化,可以Stateless Auto-Configuration, 也可以Stateful DHCPv6, 也可以手工配置。 问题来了,IPv6地址是如何生成的?
无论采用以上三种方法的哪一种,这都是一个无法回避的问题,128位长长的二进制位是如何出炉的? 通常在IPv6网络的一个网段里,都会至少有一个大神的存在,这个大神名字叫“Router”。其它连接在大神管辖下的主机,也有一个好听的名字“Host”。
大神会周期性地自己的公众号里发布一个消息“Router Advertisement”,用于宣示自己的存在,主要的用途有:
Prefix
用于Host跨网段通信的网关出口
指导Host如何配置IPv6地址
DNS Server 等参数
。。。
Host自从诞生那一刻起,就被强制订阅大神的公众号,终生订阅且无法退订。所以Host都可以收到大神每10秒推送的RA消息。
Host非常听话,大神的话就是圣旨,于是就严格按照大神的吩咐行事。大神的消息里携带以下信息:
Prefix= 2001:1::/64
配置方式, SLAAC(Stateless Address Auto-Configuration)
DNS Server = 2001:8:8:8::8
既然大神已经发话了,配置IPv6地址需要自力更生。主机心领神会,IPv6一共128位,前缀64位(Prefix)大神已经分配好了,那么剩下的64位,称其为后缀(Suffix),就可以自主生成了。
大神管辖下的主机们,使用一个共同的前缀“2001:1::/64”,如果后缀有冲突,那么生成的IPv6就会冲突(不唯一)。怎么样才可以保证后缀唯一呢?
MAC地址
MAC地址一共48位,且全球唯一,如果使用MAC地址来衍生出后缀,冲突的可能性就非常非常小。
如何衍生出64位的后缀?
一个例子
主机的MAC = 00 01 02 03 04 05 ,将这6个字节,从中间切开,分别为“00 01 02”, “03 04 05”,在它们中间嵌入“FF FE”,一共8个字节,64位,“00 01 02 FF FE 03 04 05”。
完了吗?
没完,如果这个IPv6 地址是一个全球IPv6地址,还需要设置“G/L”状态位为“1”。
G/L位在哪里?
从左到右数,0,1,2,3,4,5,6,第6位即为G/L位,将其置为“1”。那么“00 01 02 FF FE 03 04 05”将变成“02 01 02 FF FE 03 0405”。这个黄色加亮的后缀字符串,有一个响亮的名字“EUI-64”。
主机的IPv6= Prefix 字符串连接 Suffix= 2001:1:: 0201:02FF:FE03:0405/64
主机有了IP地址、默认网关、DNS服务器,就可以上网冲浪了。
IPv6地址泄露个人隐私
当用户上网冲浪时,服务器可以立马推导出客户端的主机MAC = 00 01 02 03 04 05, 无论主机加入哪个大神管辖的IPv6, 后缀是永恒不变的,这就跟踪用户提供了便利。如果你很Care自己的个人隐私,你肯定不接受这样的IP地址生成方式,对吗?
这些忧虑,其实互联网专家们已经帮助我们考虑好了,可以使随机化Hash地址、临时(Temporary)地址、CGA安全地址等等。
注:本文转载自车小胖谈网络微信公众号;文内内观点仅供参考。如侵权,请联系我删除。