IPv6基础:从地址表示到通信过程的全面解析
IPv6基础:从地址表示到通信过程的全面解析
IPv6是下一代互联网协议,它解决了IPv4地址资源枯竭的问题,为设备提供了充足的公网IP地址。本文将详细介绍IPv6的基础知识,包括地址表示、简化规则、前缀和接口ID的概念、访问方式、通信过程以及使用场景等。
概述
IPv4地址的数量有43亿个,而IPv6地址多到无法用口头表达,号称可以让地球上每一粒沙都能有自己的IP地址。由于IPv4地址的数量有限,因此只能通过层层NAT网络转发来解决设备联网的问题;常见的NAT网络转发设备有路由器、光猫、运营商区域NAT设备等;运营商NAT设备可能还会套很多层。这导致大多数量上网设备都没有自己的公网IP,无法实现真正的万物互联。而IPv6可以为每一个台设备分配一个公网IP地址,使设备之间在不依赖NAT转发的情况下直接互联。
IPv6地址
IPv6地址用16进程表示,每个16进制数表示4位二进制数字;每4个16进制数用冒号分隔成组;共8组16进制表示128位二进制,如下:
2001:db8:130F:0000:0000:09C0:876A:130B
IPv6地址简化表示
为了简化IPv6地址的表示,可以使用以下规则:
**0.1>**每组的前导零可以省略,如:0012可以简写为12;如果组中的值全是0,则可以用一个0表示;
简写前:2001:db8:130F:0000:0000:09C0:876A:0012
简写后:2001:db8:130F:0:0:9C0:876A:12
0.2> 连续零组可以用双冒号(::)表示;但在一个IPv6地址中,只能出现一次双冒号。
简写前:2001:0db8:0000:0000:1111:0000:0000:57ab
简写后:2001:db8::1111:0:0:57ab。
常见的IPv6地址
## 以 2 开头的通常是公网IP
2001:db8::1111:0:0:57ab
## 以 f 开头的通常是私有IP,类似 192.168.0.2
fe80::2
## 类似 127.0.0.1
::1
## 类似 0.0.0.0,即未指定地址
::
IPv6的前缀和接口ID基础
IPv6由前缀和接口ID组成;前缀表示一个地址范围,前缀越多短表示的地址范围越广;接口ID表示具体的某个主机或接口。如下图,
/64
表示前缀长度为64位,
/56
表示前缀长度为56位;在IPv6地址中,接口ID通常占据了剩余的位数,即从128位的IPv6地址减去前缀的位数,就是接口ID的位数长度。
注:以上仅为基础简述,并不全面和严谨;
访问IPv6地址
访问IPv6地址时必须加上中括号,以区分端口号,如下:
https://[2406:da14:25c:b00:8ec1:377f:151a:de4b]:443
IPv6通信过程
当客户端设备访问网络时,请求先到路由器或其它NAT设备,NAT设备会获取到运营商分配的IPv4地址、IPv6前缀;该IPv6前缀下的所有地址可以被客户端设备任意使用;客户端设备会根据分配到的IPv6前缀给自己生成公网IPv6地址。通过该公网IP上网时,虽然可能还会经过NAT设备,但NAT设备不再进行IP映射,而是直接转发请求和响应。
目前的网络设备大多都是同时使用IPv4和IPv6,但优先使用IPv6;例如在获取DNS记录下,会同时获取IPv4和IPv6地址,除非获取的到的IPv6地址为空,否则优先使用IPv6访问服务器。
使用场景
通过IPv6可以为一个VPS分配很多个IPv6公网IP,因为通常情况下云服务商会分配一个前缀给VPS,在该前缀下可以通过接口ID为VPS构造很多个IPv6公网IP。
兼容性问题
IPv4和IPv6的网络不兼容,无法互相通信;如果客户端设备仅支持IPv6,则无法直接访问IPv4的网站,反之亦然,必须通过一些技术手段进行转换。设备是否支持IPv6取决于操作系统、网卡、路由器、网络配置等。大多数客户端设备和服务器都同时支持IPv4和IPv6。但网站是否能够通过IPv6访问,还取决于Web应用的开发者是否支持了IPv6,如果不支持,也是无法访问的。
1.0>. 并不是所有网站都支持IPv6,因此通过纯IPv6的服务器可能无法访问某些网站;
2.0>. 在客户端设备上搭建服务,并提供公网IPv6地址,也可能无法被公网访问;因为某些路由器默认阻止了IPv6的入站访问。就算路由器没有阻止,电脑运营商也不希望通过公网访问客户端服务,通常会屏蔽掉80、443等常见端口。当然,允许公网访问客户端服务也会带来安全问题,需要做好安全配置。
3.0>. 如果客户端仅支持IPv6,则无法获取IPv4的DNS记录;
4.0>. 一些代理软件对IPv6支持不健全,可能导致DNS劫持失败等各种奇怪问题,因此不建议开启;