ipv6 介绍,格式定义

本文介绍了IPv6的基本格式,包括其128位地址结构和表示方式。探讨了IPv6地址监听,如如何进行IPv4与IPv6兼容的监听。此外,还讨论了IPv6的URL表示、特殊地址类型以及在配置文件中的应用。文章还详细阐述了IPv6的DHCPv6机制,包括link-local address的生成与作用,以及NDP协议在邻居发现和路由广告中的角色。最后,提到了在应用程序中使用IPv6的相关注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初识IPv6


引用

IPv6地址的基本格式

https://docs.oracle.com/cd/E19253-01/819-7058/ipv6-overview-123/index.html

  • 前48位2001:0db8:3c4d包含表示公共拓扑的站点前缀
  • 随后的16位0015包含代表站点专用拓扑的子网ID
  • 低阶(最右边的64位0000:0000:1a2f:1a2b)包含接口ID

16B(128b),使用:隔开,: 隔开的长度是16b(2B)
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,字符长度是45

地址监听

IPv4中面向所有地址的监听是0.0.0.0,IPv6中是 ::,并且::这种格式是兼容IPv4的,只要写成listen=::bind=::,可以同时支持IPv4和IPv6的监听。

URL

因为:可能导致误解,URL中的IPv6地址写成这样,[]是必需的:
curl -g -L http://[xxxx::xxxx]:80

特殊地址

https://docs.netgate.com/pfsense/en/latest/network/ipv6/subnets.html#special-ipv6-subnets

::                   ## 等同于ipv4里的0.0.0.0
::1                  ## 等同于ipv4里的127.1或127.0.0.1
fc00::/7             ## Unique Local Addresses (ULA) - also known as “Private” IPv6 addresses.
fe80::/10            ## Link Local addresses, only valid inside a single broadcast domain.
2001::/16            ## Global Unique Addresses (GUA) - Routable IPv6 addresses.
ff00::0/8            ## Multicast addresses

IPv6里没有广播地址,最多是组播地址。

和ipv4一样,如下网段被用于本地私有网络:

  • fc00::/7
  • fd00::/8
    这类似于ipv4里的: 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16

配置文件

NOTE(chengml),这个是redhat系列的,debian系列没看。
因为ipv6的IP地址可以如下配置:

IPV6ADDR=xxxx:xx/xx

所以,如果同时配置IPv4和IPv6,可以类似如下区分:

IPADDR=x.x.x.x
PREFIX=24
IPV6ADDR=xxxx::xx/112

DHCP

对应到IPv4和IPv6,DHCP也分为DHCPv4和DHCPv6
DHCPv6和DHCPv4有很大区别,因为没有广播地址,所有没有广播报文,而是基于ICMP6的请求和应答报文。

先看看link-local address

link-local address

一个网卡上一般有两个IPv6地址,一个是link-local address,一个是global address
前者是基础,后者是真正拿来使用的,比如访问互联网。
前者一般是根据MAC地址生成,常见的生成方法叫EUI-64,实际上EUI-64生成了link-local address中最关键的部分
link-local address长这样:
|600

如果源MAC是00:0a:95:9d:68:16,可以得到:fe80::020a:95ff:fe9d:6816,生成过程如下:

00:0a:95:9d:68:16                        ## 原始MAC
00:0a:95:ff:fe:9d:68:16                  ## 中间加上ff:fe
02:0a:95:ff:fe:9d:68:16                  ## 00000000 > 00000010,到此,EUI-64格式的interface ID已经生成: 020a:95ff:fe9d:6816
fe80::020a:95ff:fe9d:6816                ## 前面插入fe80
DHCPv6

只有有MAC地址,就会自动生成一个link-local address,剩下其它的都要基于这个link-local address了。
回到DHCPv6,不管请求还是应答,都是基于link-local address的ICMP6报文。
和 DHCPv4的区别是,DHCPv6只会提供地址分配,不会告诉client子网信息。
client拿到地址之后,并不知道子网的CIDR,这个子网有多大,需要路由器来告知,路由器发送的RA(router advertisement)提供。

NDP

NDP协议,Neighbour Discovery Protocol,包含了一系列的报文:

  • NS/NA: neighbour solicitation, neighbour advertisement
  • RS/RA: router solicitation, router advertisement
  • NR: neighbour redirection
    solicitation就是请求的意思,advertisement就是应答。
    NS/NA这对报文对应到IPv4里的ARP报文,用来询问获得MAC地址和IP地址的关联关系,完善ARP表。
    RA是从路由器发出的,路由器发这个报文有两种场景,被动和主动,当有人请求时,会发送RA来应答;当没人请求时,也会定时发送来通知。

APP with IPv6

各种常见工具,访问IPv6的时候可能需要加上相应的选项:

ping -6 or ping6
ip -6 a s
ssh -6 
tcpdump ??
apt-get -o Acquire::ForceIPv6=true install 
dhclient -6
ip6tables
curl -6            ## 仅表示自动解析,不是必要
telent -6
..

Windows里不需要区分ping6和ping。

访问global ip和link-local ip,格式上有些不同。
比如ping,global地址直接ping6加上地址就行了,但link-local地址不同:

ping6 -I tap239574f9-75 fe80::f816:3eff:fe91:3b84
或者
ping6 fe80::f816:3eff:fe91:3b84%tap239574f9-75
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值