为什么IPV4以10为基数表示

卢克·埃克斯顿

根据IP点表示法,标准是使用基数10表示而不是十六进制。

127.0.0.1 -> 7F.0.0.1
255.255.255.255 -> FF.FF.FF.FF
10.0.0.1 -> 0A.0.0.1
10.0.0.1/24 -> 0A.0.0.1/18

我为什么在RFC中找不到关于IPv4的约定为何以10为底的引用,但默认情况下MAC和IPV6使用十六进制。

我们这样做是有原因的吗?还是自然界中纯粹是历史性的?

史提芬

十进制是事实上的标准;从未正确标准化IPv4地址的字符串格式。几乎所有工具都只采用十进制,点分四进制表示法,但这并不是普遍适用的。仍使用通用实现的任何工具inet_aton()都可能处理替代格式。

pingiputils软件包中包含的一个有用示例。使用Google的地址之一,然后尝试使用十进制,十六进制和八进制点分四进制:

ping -c1 216.58.195.238
ping -c1 0xd8.0x3a.0xc3.0xee
ping -c1 0330.072.0303.0356

这些都对相同的地址执行ping操作,因为它们都表示相同的32位。

但这远不止于此。您不必严格使用四个八位位组。在无类别寻址和可变长度网络掩码出现之前,曾经指定了8位,16位和24位网络前缀的有类寻址。其中一些仍然存在inet_aton()

上面的地址,格式为8/8/16位:

ping -c1 216.58.50158
ping -c1 0330.072.0141756
ping -c1 0xd8.0x3a.0xc3ee

或者,格式化为8/24位:

ping -c1 216.3851246
ping -c1 0330.016541756
ping -c1 0xd8.0x3ac3ee

或者,忘记点并仅输入32位:

ping -c1 3627729902
ping -c1 033016541756
ping -c1 0xd83ac3ee

但更好的是,您不必以相同的格式移交每个块:

ping -c1 0xd8.072.195.0xee

但是,所有这些都会导致一个合理的提醒:这inet_aton()是一个古老的功能,并且不了解IPv6地址是什么。如果您今天正在编写代码,则inet_aton()不想使用inet_pton(),而要使用,它可以处理这两种情况。inet_pton()我使用的实现更加忠实地遵循了十进制点分四进制的事实上的标准IPv4地址表示。对于IPv6,实际上确实有对字符串表示的RFCinet_pton()遵循的标准!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么 Java 将某些 IPv6 地址解释为 IPv4?

为什么Windows 10比IPv6更喜欢IPv4?

为什么IPv4 TCP连接显示为tcp6?

为什么函数表示为动态符号的方式不一致(RH4,Solaris10给出不同的结果)

MIT为什么会有/ 8 IPv4块?

什么是 IPV4 类?

为什么是Get-DnsClientServerAddress | 选择AddressFamily输出而不是IPv4和IPv6

为什么lsof指示我的IPv4套接字是IPv6?

为什么.NET不使用嵌入的IPv4值解析某些IPv6?

为什么IPv6不像IPv4那样大量使用环回?

为什么接口同时显示ipv6地址和ipv4

我同时拥有IPv4和IPv6公共地址。为什么?

为什么将基数为 10 的数字转换为基数为 2 的数字时位会重复?

使IPv4请求IP使用IPv4表示法代替IPv6

netstat — 为什么 IPv4 守护进程只监听 -A inet6 中列出的端口?

通过dhcp为带有debian的ipv4和ipv6自动配置接口的正确方法是什么?

为什么我同时拥有一个IPv4和IPv6地址?

对于 IPv4 和 IPv6,Net 函数的行为略有不同。为什么?

为什么request.getRemoteAddr()根据上下文返回ipv4或ipv6(后查询或Ajax查询)

以下ipv6地址在ipv4中转换为什么:http:// [0 :: 1]:5001 /

IPv4标头包含校验和,但不包含在IPv6中,为什么?

为什么我在 Android 上看到两个不同的 IPv4 地址但 IPv6 地址相同?

为什么 ValueError:int() 的无效文字以 10 为基数:来自用户输入

为什么Ruby的IPAddr#family方法在IPv4地址上调用时返回2,而在IPv6地址上调用时返回10?

在后记中以基数表示的图像

Windows 10:通过ipv4启动PXE错误

为什么即使ISP分配了IPv4地址,我仍无法访问Internet?

为什么这会给我一个错误消息,“必须是有效的ipv4 cidr”?

在将VPN拆分隧道与OpenConnect一起使用时,Windows为什么偏爱IPv4?