嵌入式技术论坛
直播中

訾存贵

8年用户 926经验值
私信 关注
[问答]

如何去完成IPV6的地址格式及分类呢

IPv4共4字节,表示方式为 192.168.10.1
注意:10不能写成010,不然被当成8进制处理了。

IPv6是16字节共128bit,而不是6字节。
使用16进制表示,每2字节1段(Big Endian),使用冒号做分隔符。
示例: 2001200dfffff12163efffeb1:44d7

不过一般地址中都有好多0,且表示网段时有更多的0,一般都是去掉前导0。
也可以使用两个冒号表示连续的0,因为IPv6地址长度是已知的,展开即可。
当然,这种缩写只能使用一次。

如下3种写法是同一个地址

2000:0000:0000:0000:0001:2345:6789:abcd
2000:0:0:0:1:2345:6789:abcd
2000**::**1:2345:6789:abcd
同IPv4一样,IPv6同样分单播地址和多播地址。

单播地址(Unicast IPv6 Addresses)

可聚合的全球单播地址(Aggregatable Global Unicast Addresses)
可在全球范围内路由和到达的,前三个bit是001
例如 2000:123456789abcd
相当于IPv4里面的global addresses。 (8.8.8.8)

0010 ==> 2xxx::
0011 ==> 3xxx::
所以只有2和3开头的地址才是公网地址,因IPv6地址总量庞大,所以短期内应该不会看到3开头的地址了。

链路本地地址(Link-Local Addresses)
用于同一个链路上的相邻节点之间通信,Ipv6的路由器不会转发链路本地地址的数据包。
前10个bit是1111 1110 10,由于最后是64bit的interface ID,所以它的前缀总是 FE80::/64
例如 FE80::1
相当于IPv4里面的169.254.0.0/16地址。

站点本地地址(Site-Local Addresses)
对于无法访问internet的本地网络,可以使用站点本地地址,它的前10个bit是1111 1110 11,它最后是16bit的Subnet ID和64bit的interface ID,所以它的前缀是 FEC0::/48。
相当于IPv4里面的private address(10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16)

在RFC3879中已放弃,它在RFC4193中被ULA取代。

唯一的本地IPv6单播地址(ULA,Unique Local IPv6 Unicast Address)
在RFC4193中标准化了一种用来在本地通信中取代单播站点本地地址的地址。
ULA拥有固定前缀 FD00::/8 ,后面跟一个被称为全局ID的40bit随机标识符。

未指定地址(Unspecified address)
0000000:0 或者 ::
当一个有效地址还不能确定,一般用未指定地址作为源地址。
未指定地址不能作为一个目标地址来使用,一般在程序中用来监听所有地址 。

回环地址(Loopback address)
回环地址 ::1 用于标识一个回环接口,可以使一个节点可以给自己发送数据包。

相当于IPv4的回环地址127.0.0.1。

多播IPv6地址(Multicast IPv6 Addresses)

前8个bit为1111 1111,
其中 FF01:: 到 FF0F:: 的多播地址是保留专用地址
FF01::1 节点本地范围所有节点多播地址
FF02::1 链路本地范围所有节点多播地址
FF01::2 节点本地范围所有路由器多播地址
FF02::2 链路本地范围所有路由器多播地址
FF05::2 站点本地范围所有路由器多播地址

回帖(1)

张伟

2022-9-16 15:30:25
是不是可以理解,我只是局域网点对点通信,我就设置为Link-Local Addresses就行了。

msh />ifconfig
network interface device: e0 (Default)
MTU: 1500
MAC: 00 05 b6 01 88 a3
FLAGS: UP LINK_DOWN DHCP_DISABLE ETHARP BROADCAST IGMP
ip address: 192.168.1.30
gw address: 192.168.1.1
net mask  : 255.255.255.0
ipv6 link-local: FE80::205:B6FF:FE01:88A3 VALID
ipv6[1] address: 0.0.0.0 INVALID
ipv6[2] address: 0.0.0.0 INVALID
dns server #0: 0.0.0.0
dns server #1: 0.0.0.0
另外这个ipv6[1]再lwip的那个函数中可以设置
举报

更多回帖

发帖
×
20
完善资料,
赚取积分