【问题标题】:0s in IP addressesIP 地址中的 0
【发布时间】:2011-10-13 01:47:34
【问题描述】:

我无法理解 IP 地址,尤其是其中包含 0 的地址。

我了解主机 ID 全为 0 的 IP 地址指的是网络,例如128.52.0.0/16

IP 地址的网络 ID 中是否可以包含 0 并且仍然有效?例如。 128.52.0.1 子网掩码为255.255.255.0

IP地址的主机ID是否可以包含0并且仍然有效?例如。 128.52.0.1 子网掩码为255.255.0.0

另外,出于某种原因,我想到网络 ID 为 0 的 IP 地址指的是同一网络上具有主机 ID 的主机。例如。 0.0.0.1 在网络 192.168.1.0 上使用子网掩码 255.255.255.0 指的是 192.168.1.1。这是正确的吗?

【问题讨论】:

    标签: ip ip-address


    【解决方案1】:

    IP 地址的网络 ID 中是否可以包含 0 并且仍然有效?例如。 128.52.0.1 子网掩码为255.255.255.0?

    是的。网络 ID 的八位字节为零是完全可以的。

    IP地址的主机ID是否可以包含0并且仍然有效?例如。 128.52.0.1 子网掩码为 255.255.0.0?

    是的。主机 ID 有一个零八位字节是完全可以的,尽管您应该知道全零位主机 ID 是按约定保留的,意味着将网络作为一个整体来引用(就像全一位主机 ID 保留为广播地址,意指网络上的每一个主机)。

    另外,不知什么原因,我突然想到了……

    这是正确的,0.0.0.0/8 用于根据 RFC5735 进行自我识别:

    0.0.0.0/8 - 此块中的地址是指“此”网络上的源主机。地址0.0.0.0/32 可用作此网络上此主机的源地址; 0.0.0.0/8 中的其他地址可用于引用此网络上的指定主机([RFC1122],第 3.2.1.3 节)。

    约定是使用全一位来表示每个“对象”,使用全零位来表示这个“对象”。引用"Internetworking with TCP/IP", Douglas E. Comer:

    在主机想要通过网络进行通信但还不知道网络 IP 地址的情况下,使用 netid 0 尤其重要。该主机临时使用网络 id 0,网络上的其他主机将该地址解释为“此”网络。在大多数情况下,回复将完全指定网络地址,允许原始发件人记录它以备将来使用。

    由于 BOOTP 和 DHCP 在还不知道其网络 ID 的情况下使用有限广播变体(全一位),因此在“常规”世界中可能不会使用太多。但是,由于 RFC 还没有过时,我想它仍然有效。

    【讨论】:

    • 所以理论上如果我的IP地址是192.168.1.1,我应该能ping通0.0.0.1吗?
    • @Daniel,这取决于您的 ping 版本。虽然 TCP/IP 堆栈的较低级别可以正确处理具有这种地址的数据包,但不需要工具来执行此操作。事实上,当我尝试 ping 我的主机 ID 0.0.0.101 时,它会给我一个 connect error 消息。
    【解决方案2】:

    128.52.0.1 只是 128.52.0.0/16 网络上的一个 IP 地址。在这种情况下,网络 ID 是 128.52.0.0。然而,子网掩码是 255.255.0.0。 255.255.255.0的掩码对应/24子网。

    您的最后一段似乎是正确的。

    【讨论】:

    • 对不起,我只使用 / 表示法来显示子网大小。问题已更新。
    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2013-03-31
    • 2016-12-06
    • 2010-11-17
    相关资源
    最近更新 更多