来自《计算机网络》一书:
IP 地址 0.0.0.0是最低地址,主机在引导时使用。它的意思是“这个网络”或“这个主机”。
... 127.xx.yy.zz 形式的所有地址都保留用于环回测试。发送到该地址的数据包不会发送到线路上;它们在本地处理并被视为传入数据包。这允许在发送方不知道其编号的情况下将数据包发送到主机,这对于测试很有用。
如果我是对的,环回 IP 地址是指当前主机。
那么 0.0.0.0 和环回 IP 地址有什么区别呢?
来自《计算机网络》一书:
IP 地址 0.0.0.0是最低地址,主机在引导时使用。它的意思是“这个网络”或“这个主机”。
... 127.xx.yy.zz 形式的所有地址都保留用于环回测试。发送到该地址的数据包不会发送到线路上;它们在本地处理并被视为传入数据包。这允许在发送方不知道其编号的情况下将数据包发送到主机,这对于测试很有用。
如果我是对的,环回 IP 地址是指当前主机。
那么 0.0.0.0 和环回 IP 地址有什么区别呢?
该声明:
IP 地址 0.0.0.0 [...] 表示“此网络”或“此主机”。
是误导。它不是“或”而是“此网络上的此主机”。
来自RFC1122:
{ 0, 0 }
This host on this network. MUST NOT be sent, except as a source address as part of an initialization procedure by which the host learns its own IP address.
环回地址(实际上是 127.0.0.0/8 网络中的任何地址)在同一个 RFC 中是这样解释的:
{ 127, 任何 }
Internal host loopback address. Addresses of this form MUST NOT appear outside a host.
因此,环回地址和全零地址都可以称为“此主机”,但实际上它们的用法非常不同:
0.0.0.0 地址可以在网络上观察到,但只能在 DHCP/BOOTP 过程中观察到,并且只能作为源地址。
127.0.0.0/8 中的任何地址在网络上的任何地方都无法查看,只能用于:
测试主机的 TCP/IP 堆栈。
同一主机上的两个应用程序一起通信。
127.XXX 地址附加到环回接口。这种接口没有附加底层(即它不附加到链路层)。数据包在 Internet 层进行处理和响应。所以这个数据包真的没有办法到达主机之外的任何东西。
但是从 0.0.0.0 发来的数据包是正常被网络栈处理的,除了没有路由决策,它绑定到正在初始化的接口上,所以它从这个接口发出,经过链路层(可以是以太网以外的其他东西),然后在网络上。
如果我是对的,环回 IP 地址是指当前主机。
不会。发送到环回地址的流量会在主机内部环回。您可以将流量发送到作为目标地址的环回地址,然后读取它。这在测试中很有用。
那么 0.0.0.0 和环回 IP 地址有什么区别呢?
0.0.0.0/8
网络中的地址不能用作目标地址。唯一的实际用途是当主机没有地址并要求 DHCP 服务器之类的东西为其分配地址时作为源地址。
还有就是IANA的IPv4特殊用途的地址注册,其中列出了所有的专用地址块,和它有联系,可以定义每个区块的RFC文档。