摘自《计算机网络》一书:主机启动时使用IP地址0.0.0.0(最低地址)供主机使用。它表示“此网络”或“此主机”。

...保留所有形式为127.xx.yy.zz的地址用于回送测试。发送到该地址的数据包不会放在网上。它们在本地处理,并被视为传入数据包。这使数据包可以在发件人不知道其编号的情况下发送到主机,这对于测试很有用。 br />
0.0.0.0和回送IP地址之间有什么区别?

评论

评论不作进一步讨论;此对话已移至聊天。

#1 楼

语句:


IP地址0.0.0.0 [...]表示“此网络”或“此主机”。

< br具有误导性。它不是“或”,而是“此网络上的此主机。”

来自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.



用相同的RFC解释回送地址(实际上是127.0.0.0/8网络中的任何地址): /> {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发送的数据包通常由网络堆栈处理,除了没有路由决定,它绑定正在初始化的接口,因此它从该接口发送出去并经过链路层(可以是以太网以外的其他层),然后在网络上。

评论


因此,换句话说,从宿主的角度来看,0.0.0.0是“自我”。 127地址不是对主机的引用,而是更多关于外部主机的模拟(即使它实际上不是外部主机)。那是对的吗 ? RFC还声明“其源地址未定义单个主机的数据报-例如,零地址,环回地址”。因此,如果我正确理解,与其他地址不同,它们并不意味着在主机上的外部主机。网络,但可以作为不同事物的参考-自我和某种“测试”主机。

– Sergiy Kolodyazhnyy
19年2月13日在10:40

您的报价来自ICMP部分。它指出无法将ICMP无法到达发送到0地址。这样的ICMP响应将必须发送到0地址,这将违反规则“不得发送,除非作为源地址”。此外,除了作为广播的BOOTP / DHCP进程的一部分外,不能使用0地址,因此发送广播的ICMP错误消息没有任何意义。

– JFL
19年2月13日在10:58

@SergiyKolodyazhnyy编辑了答案

– JFL
19年2月13日在11:28

#2 楼


如果我是正确的话,则环回IP地址是指当前主机。


否。发送到环回地址的流量将在主机内部循环。您可以将流量发送到回送地址作为目标地址,然后再读取它。这在测试中很有用。


那么0.0.0.0和环回IP地址之间有什么区别?


0.0.0.0/8网络中的地址不能用作目标地址。唯一实际的用途是当主机没有地址并且要求诸如DHCP服务器之类的东西为它分配地址时用作源地址。 -目的地址注册表,列出了所有特殊地址块,并且具有指向定义每个那些地址块的RFC的链接。

评论


评论不作进一步讨论;此对话已移至聊天。

–罗恩·莫潘♦
19年2月17日在17:10