Answers:
来自http://linux-ip.net/html/tools-ip-address.html:
范围| 描述
全球| 到处都有效
网站| 仅在此站点内有效(IPv6)
链接| 仅在此设备上有效
主机| 仅在此主机(机器)内有效
范围通常由ip实用程序确定,而无需在命令行上明确使用。(...)
以下引用摘自O'Reilly的Christian Benvenuti的《了解Linux网络内部》一书:
“ Linux中的路由范围是到目标网络的距离的指示器。IP地址的范围是从已知地址到本地主机的距离的指示器,它在某种程度上还告诉您距离多远。该地址的所有者来自本地主机(...)。
主机:地址仅用于在主机内部进行通信时,具有主机作用域。在主机外部,此地址未知,无法使用。一个示例是回送地址127.0.0.1
链接:地址有意义时具有链接范围,并且只能在LAN中使用。一个示例是子网的广播地址。
全局:地址可以在任何地方使用时,具有全局作用域。这是大多数地址的默认范围。(...)”
使用范围的主要原因似乎是具有多个接口和地址的主机必须决定何时使用哪个地址。为了与自身通信,可以使用回送地址(作用域主机)。使用通讯方式时,必须选择其他地址。
metric
参数不是用来指定距离的吗?
要开始了解范围的定义,您应该先了解什么是本地链接地址和站点本地地址。一旦清除了这些,其他的将落入原位。引用IPv6文档中的一些代码片段。
链接
本地链接地址应该用于对单个链接上的节点进行寻址。源自或发往本地链路地址的数据包将不会由路由器转发。
例如169.254 / 16。当设备无法从DHCP获取有效地址时,您可能已经看到过。
现场
应该在站点内使用站点本地地址。路由器将不会转发站点之外的具有站点本地源或目标地址的任何数据包。
这仅适用于IPv6。IPv4中没有站点本地地址的概念。
主办
主机地址是仅存在于主机内部的内容。例如127.0.0.1是通常分配给回送接口的主机地址。回送接口没有外部连接,因此其范围仅限于主机的范围内。
全球
全局地址是您当前可能认为的“普通”地址。即,一个单播地址,该地址在外部网络上可见并且可以在外部网络上路由。
在fib_semantics.c中找到这些注释
704 * Every prefix is assigned a "scope" value: "host" is local address,
705 * "link" is direct route,
706 * [ ... "site" ... "interior" ... ]
707 * and "universe" is true gateway route with global meaning.
708 *
709 * Every prefix refers to a set of "nexthop"s (gw, oif),
710 * where gw must have narrower scope. This recursion stops
711 * when gw has LOCAL scope or if "nexthop" is declared ONLINK,
712 * which means that gw is forced to be on link.
....
719 * Normally it looks as following.
720 *
721 * {universe prefix} -> (gw, oif) [scope link]
722 * |
723 * |-> {link prefix} -> (gw, oif) [scope local]
724 * |
725 * |-> {local prefix} (terminal node)
726 */