%后面的字符(在您的示例中为数字)是接口标识符。这些字符用于标识“网络接口”,人们通常将其称为“网卡”。例如,它可以帮助确定数据包将使用有线以太网卡还是无线Wi-Fi适配器。
我猜您正在使用Microsoft Windows。它使用数字作为接口标识符。
作为比较,类似Unix的系统可以在%符号后使用字母。例如:fe80::71a3:2b00:ddd3:753f%eth0
在这种情况下,接口标识符eth0
匹配网卡的名称。
在Microsoft Windows中,可以使用检查路由表的命令行之一来获取(数字)接口标识符的列表。我更喜欢“ netstat -nr
”,因为它也可以在其他操作系统上使用,但是Microsoft Windows也支持“ route print
”。报告的结果输出可能会在整个屏幕上停留很长的时间,因此请准备向后滚动,除非通过管道传递更多内容。
例如,在我的系统上:
===========================================================================
Interface List
14...5c f9 dd 6d 98 b8 ......Realtek PCIe GBE Family Controller
12...e0 06 e6 7e fc 4e ......Bluetooth Device (Personal Area Network)
1...........................Software Loopback Interface 1
13...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
15...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
===========================================================================
在这种情况下,诸如fe80 :: 71a3:2b00:ddd3:753f%14之类的地址将指向我的Realtek PCIe GBE系列控制器。“ GBE”是指千兆以太网。
现在,这是棘手的部分:如果要ping远程地址,可能需要使用远程系统的IPv6地址,但要使用本地系统的接口标识符。因此,例如,如果我正在使用计算机A,并且我在接口号14上附加了本地IPv6地址fe80 :: 1,并且我想对计算机B进行ping操作,并且它在本地IP6上附加了fe80 :: 2 IP地址。它的接口号16,那么这就是我要使用的接口:
ping fe80::2%14
因此,该ping
命令会将ICMPv6数据包发送到属于远程计算机的远程IPv6地址(fd80 :: 2),并将使用带有标识符的接口14进行操作。接口标识符14是我正在使用的系统中的数字,而不是远程系统中的数字。
现在,让我们看一下为什么这可能是必要的。
如果我想ping Google的IPv6地址(在我编写此答案时为2607:f8b0:400a:802 :: 200e),则路由表将检查哪个网卡处理以2607:f8b0:400a开头的地址: 802。路由表将指示我的网卡没有一个直接使用2607:f8b0:400a:802开头的地址直接连接到网络,因此我的计算机最终将使用“网关”地址。如果我要连接到我所在组织的另一个网络,则可能会有一个特殊的“网关”地址,可将流量路由到专用网络。在这种情况下,我没有更具体的网关,因此我将使用IPv6“默认网关”。这就是IPv6在大多数时间的工作方式,除了本地链接地址。这也是大多数时候IPv4的工作方式。
根据RFC 4291第2.8节,每台使用IPv6的计算机都应为每个网络接口分配一个本地链接地址。 RFC 4291第2.5.6节显示了链接本地地址必须以其开头的位,这些位导致链接本地地址以“ fe80:0000:0000:0000:”开头(尽管其中许多零都折叠成双冒号) )。RFC 4291第2.4节还描述了这些地址以“ fe80:”开头的事实。
如果您尝试ping远程系统(例如,“ 2607:f8b0:400a:802”),通常的过程通常是找出地址所属的网络或子网,方法是查看这些位在地址的开头。然后,这些位用于确定如何路由流量。
但是,该过程不适用于IPv6链接本地地址,因为在子网中,每个单个(运行中的,活动的)网络接口都有一个以“ fe80:”开头的链接本地地址,其子网前缀/大小为“ /”。 64“。如果您使用的是笔记本电脑,则可能会发现以太网卡和Wi-Fi适配器都应该具有这样的IPv6地址。
现在,当您将ping发送到fe80 :: 2时,您希望计算机将该数据包发送出正确的网卡。如果您的打印机连接到有线网络,则您不想使用不会导致流量到达打印机的网络路径/路由将流量发送到Wi-Fi卡。而且,如果您尝试使用Wi-Fi卡与无线设备进行通信,则您不希望流量流出以太网卡。
解决方案是让您指定要使用流量的网络设备。因此,这就是网络标识符的目的。