localhost 和 0.0.0.0 的 IPV6 是什么?
What is IPV6 for localhost and 0.0.0.0?
众所周知,localhost
的 IPv4 地址是 127.0.0.1
(环回地址)。 localhost
和 0.0.0.0
的 IPv6 地址是什么,因为我需要屏蔽一些广告主机。
ipv6 本地主机是 ::1
。未指定的地址是 ::
。这是在 RFC 4291 section 2.5.
中定义的
As we all know that IPv4 address for localhost
is 127.0.0.1
(loopback address).
实际上,127.0.0.0/8
中的任何 IPv4 地址都是环回地址。
在 IPv6 中,环回范围的直接模拟是 ::1/128
。所以 ::1
(长格式 0:0:0:0:0:0:0:1
)是唯一的 IPv6 环回地址。
虽然主机名 localhost
通常会解析为 127.0.0.1
或 ::1
,但我曾见过有人将其绑定到非 IP 地址的情况环回地址。这有点疯狂......但有时人们会这样做。
我说 "this is crazy" 是因为这样做可能会破坏应用程序的假设;例如应用程序可能会尝试对环回 IP 进行反向查找,但得不到预期的结果。在最坏的情况下,应用程序可能最终会意外地通过不安全的网络发送敏感流量……尽管您可能还需要犯其他错误才能 "achieve"。
阻止 0.0.0.0
毫无意义。在 IPv4 中,它永远不会被路由。 IPv6 中的等价物是 ::
地址(长格式 0:0:0:0:0:0:0:0
)...也从不路由。
0.0.0.0
和 ::
地址保留为表示 "any address"。因此,例如,提供 Web 服务的程序可以 绑定 到 0.0.0.0
端口 80,以通过任何主机的 IPv4 地址接受 HTTP 连接。这些地址作为 IP 数据包的源地址或目标地址无效。
最后,一些评论询问 ::/128
与 ::/0
与 ::
。
这有什么区别?
严格来说,前两个是 CIDR 表示法而不是 IPv6 地址。他们实际上指定了一个范围的IP地址。 CIDR 由一个 IP 地址和一个额外的数字组成,该数字指定网络掩码中的位数。两者一起指定一个地址范围;即通过忽略给定地址中屏蔽的位而形成的地址集。
所以:
::
表示只是 IPv6 地址 0:0:0:0:0:0:0:0
::/128
表示 0:0:0:0:0:0:0:0
,网络掩码由 128 位组成。这给出了一个网络范围,其中只有一个地址。
::/0
表示 0:0:0:0:0:0:0:0
,网络掩码由 0 位组成。这给出了一个包含 2128 个地址的网络范围。即它是整个 IPv6 地址 space!
有关详细信息,请阅读有关 IPv4 和 IPv6 地址以及 CIDR 表示法的维基百科页面:
IPv6 本地主机
::1
是 IPv6 中的 loopback 地址。
在URL秒内
在URL中,使用方括号[]
:
http://[::1]/
默认为端口 80。
http://[::1]:80/
指定端口。
中定义了 URL 中使用的方括号中的 IPv6 文字
为了在 /etc/hosts
文件中用作导致域无法解析的简单广告拦截技术,0.0.0.0 地址已被广泛使用,因为它会导致请求立即失败,甚至无需尝试,因为它不是有效或可路由的地址。这与在那个地方使用 127.0.0.1 相比,在那个地方它至少会检查你自己的计算机是否正在侦听请求的端口 80,然后失败 'connection refused.' hosts 文件中使用的这些地址中的任何一个因为该域将阻止通过实际网络尝试的任何请求,但 0.0.0.0 已获得青睐,因为由于上述原因它更多 'optimal'。 “127”IP 将尝试攻击您自己的计算机,任何其他 IP 都会导致向路由器发送请求以尝试路由它,但是对于 0.0.0.0 甚至没有地方可以向其发送请求。
综上所述,将 any IP 列在主机文件中以阻止域就足够了,您不会不需要或不想在主机文件中也放置一个 ipv6 地址,除非——可能——你根本没有启用 ipv4。不过,如果真是这样,我会感到非常惊讶。尽管如此,我认为当您没有启用 ipv4 时,让主机出现在 /etc/hosts 中且 ipv4 地址错误会 still 给您您正在寻找的结果是因为它失败了,而不是查找真实的 DNS,比如 adserver-example.com 并取回 v4 或 v6 IP。
为了完整起见:有 IPv4-mapped IPv6 addresses,您可以在其中将 IPv4 地址嵌入 IPv6 地址(可能并非所有 IPv6 设备都支持)。
示例:我 运行 我机器上的服务器,可以通过 http://127.0.0.1:19983/solr
访问。如果我通过 IPv4 映射的 IPv6 地址访问它,那么我通过 http://[::ffff:127.0.0.1]:19983/solr
访问它(这将被转换为 http://[::ffff:7f00:1]:19983/solr
)
众所周知,localhost
的 IPv4 地址是 127.0.0.1
(环回地址)。 localhost
和 0.0.0.0
的 IPv6 地址是什么,因为我需要屏蔽一些广告主机。
ipv6 本地主机是 ::1
。未指定的地址是 ::
。这是在 RFC 4291 section 2.5.
As we all know that IPv4 address for
localhost
is127.0.0.1
(loopback address).
实际上,127.0.0.0/8
中的任何 IPv4 地址都是环回地址。
在 IPv6 中,环回范围的直接模拟是 ::1/128
。所以 ::1
(长格式 0:0:0:0:0:0:0:1
)是唯一的 IPv6 环回地址。
虽然主机名 localhost
通常会解析为 127.0.0.1
或 ::1
,但我曾见过有人将其绑定到非 IP 地址的情况环回地址。这有点疯狂......但有时人们会这样做。
我说 "this is crazy" 是因为这样做可能会破坏应用程序的假设;例如应用程序可能会尝试对环回 IP 进行反向查找,但得不到预期的结果。在最坏的情况下,应用程序可能最终会意外地通过不安全的网络发送敏感流量……尽管您可能还需要犯其他错误才能 "achieve"。
阻止 0.0.0.0
毫无意义。在 IPv4 中,它永远不会被路由。 IPv6 中的等价物是 ::
地址(长格式 0:0:0:0:0:0:0:0
)...也从不路由。
0.0.0.0
和 ::
地址保留为表示 "any address"。因此,例如,提供 Web 服务的程序可以 绑定 到 0.0.0.0
端口 80,以通过任何主机的 IPv4 地址接受 HTTP 连接。这些地址作为 IP 数据包的源地址或目标地址无效。
最后,一些评论询问 ::/128
与 ::/0
与 ::
。
这有什么区别?
严格来说,前两个是 CIDR 表示法而不是 IPv6 地址。他们实际上指定了一个范围的IP地址。 CIDR 由一个 IP 地址和一个额外的数字组成,该数字指定网络掩码中的位数。两者一起指定一个地址范围;即通过忽略给定地址中屏蔽的位而形成的地址集。
所以:
::
表示只是 IPv6 地址0:0:0:0:0:0:0:0
::/128
表示0:0:0:0:0:0:0:0
,网络掩码由 128 位组成。这给出了一个网络范围,其中只有一个地址。::/0
表示0:0:0:0:0:0:0:0
,网络掩码由 0 位组成。这给出了一个包含 2128 个地址的网络范围。即它是整个 IPv6 地址 space!
有关详细信息,请阅读有关 IPv4 和 IPv6 地址以及 CIDR 表示法的维基百科页面:
IPv6 本地主机
::1
是 IPv6 中的 loopback 地址。
在URL秒内
在URL中,使用方括号[]
:
http://[::1]/
默认为端口 80。http://[::1]:80/
指定端口。
为了在 /etc/hosts
文件中用作导致域无法解析的简单广告拦截技术,0.0.0.0 地址已被广泛使用,因为它会导致请求立即失败,甚至无需尝试,因为它不是有效或可路由的地址。这与在那个地方使用 127.0.0.1 相比,在那个地方它至少会检查你自己的计算机是否正在侦听请求的端口 80,然后失败 'connection refused.' hosts 文件中使用的这些地址中的任何一个因为该域将阻止通过实际网络尝试的任何请求,但 0.0.0.0 已获得青睐,因为由于上述原因它更多 'optimal'。 “127”IP 将尝试攻击您自己的计算机,任何其他 IP 都会导致向路由器发送请求以尝试路由它,但是对于 0.0.0.0 甚至没有地方可以向其发送请求。
综上所述,将 any IP 列在主机文件中以阻止域就足够了,您不会不需要或不想在主机文件中也放置一个 ipv6 地址,除非——可能——你根本没有启用 ipv4。不过,如果真是这样,我会感到非常惊讶。尽管如此,我认为当您没有启用 ipv4 时,让主机出现在 /etc/hosts 中且 ipv4 地址错误会 still 给您您正在寻找的结果是因为它失败了,而不是查找真实的 DNS,比如 adserver-example.com 并取回 v4 或 v6 IP。
为了完整起见:有 IPv4-mapped IPv6 addresses,您可以在其中将 IPv4 地址嵌入 IPv6 地址(可能并非所有 IPv6 设备都支持)。
示例:我 运行 我机器上的服务器,可以通过 http://127.0.0.1:19983/solr
访问。如果我通过 IPv4 映射的 IPv6 地址访问它,那么我通过 http://[::ffff:127.0.0.1]:19983/solr
访问它(这将被转换为 http://[::ffff:7f00:1]:19983/solr
)