为什么 IPv4 地址以字节为单位,不能在整数范围内?
Why IPv4 address is in bytes and can not be in integer range?
我是 java 和网络的新手,在编写 Java 套接字程序时我发现,IPv4 地址可以有最大值 255.255.255.255
另外,255是Byte的最大值。
我的疑问是,为什么整数范围(可以)不能用于更多(例如,23467.28321.1784.58256
)IPv4 地址?
IPv4 使用 32 位(四字节)地址,这将地址 space 限制为 4228250626 (232) 个地址。
4字节表示32位,所以每个字节可以有8位,8位的最大值为255。(二进制11111111等于十进制255)。因此,255.255.255.255
是 IPv4 的最大范围。
造成这种限制的原因可能是,当时不需要太多的 IPv4 地址,所以规范就是这样设计的。 :)
点分符号 (abc.def.geh.ijk
) 只是表达四个八位字节(字节)值的一种人类可读的方式。所有 IPv4 地址都是四个八位字节长,如 RFC 791:
中所定义
Addresses are fixed length of four octets (32 bits).
每组数字包含一个字节的十进制值,因此将值限制为 0 - 255。大于 255 的值不能映射到一个字节,因此对 IPv4 地址无效。
我是 java 和网络的新手,在编写 Java 套接字程序时我发现,IPv4 地址可以有最大值 255.255.255.255
另外,255是Byte的最大值。
我的疑问是,为什么整数范围(可以)不能用于更多(例如,23467.28321.1784.58256
)IPv4 地址?
IPv4 使用 32 位(四字节)地址,这将地址 space 限制为 4228250626 (232) 个地址。
4字节表示32位,所以每个字节可以有8位,8位的最大值为255。(二进制11111111等于十进制255)。因此,255.255.255.255
是 IPv4 的最大范围。
造成这种限制的原因可能是,当时不需要太多的 IPv4 地址,所以规范就是这样设计的。 :)
点分符号 (abc.def.geh.ijk
) 只是表达四个八位字节(字节)值的一种人类可读的方式。所有 IPv4 地址都是四个八位字节长,如 RFC 791:
Addresses are fixed length of four octets (32 bits).
每组数字包含一个字节的十进制值,因此将值限制为 0 - 255。大于 255 的值不能映射到一个字节,因此对 IPv4 地址无效。