为什么 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.58256IPv4 地址?

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 地址无效。