侧边栏壁纸
博主头像
小斯小站 博主等级

用心分享技术

  • 累计撰写 38 篇文章
  • 累计创建 75 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

IPv4缩写规则

SCH小斯
2024-07-05 / 0 评论 / 1 点赞 / 80 阅读 / 3454 字
温馨提示:
本文最后更新于 2024-07-05,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

今天在ping一个v4的IP时,漏写了两段数字,执行后发现也能ping而不是提示错误的参数,我执行了ping 127.1命令,实际上是对127.0.0.1这个IP进行了ping操作;对此,我进行了研究,看看为什么可以进行缩写

IPv4组成

通常情况下,一个IPv4的地址由4个0~255之间的整数组成,并且每个数字之间通过一个点“.”连接,例如127.0.0.1;在计算机中,数据都使用二进制进行存储,IP也是同理,127.0.0.1这个IP用二进制表示就是:11111111 00000000 0000000 00000001

允许缩写的原因

上面提到,IPv4地址本质上是一个32位的二进制数据,在十进制下通过点分隔开的每一位数字都对应一个8位的二进制数字;但是理论上每一位十进制数字都应该小于256(即0~255),那么如果超过255,这个数字就无法使用8位二进制进行表示,就会变为一个16位的二进制数,可以同时表示两段数字;还有另一种情况,就是我开头提到的情况,在少写两段数字的情况也能找到IP,这个就是IPv4的补位,在IP的位数不足时,会将最后一段二进制进行补位,使整个IP的二进制位数达到32位;下面将对这些情况详细解释

IP位数不足32位

例如我ping一个IP:127.1,其中127对应11111111,而第二段的1对应00000001,这样组成一个IP只有16位,就是不正确的情况,就需要对其补位,如果在127前面补位,对应IP会是0.0.127.1,那么这样不太合理,就将最后一段进行补位,将8位二进制变为24位二进制,也就是00000000,00000000,00000001,这样连起来后,二进制到达了32位,IP是127.0.0.1,就非常合理

最后一段数字大于255

如果最后一段数字大于255,且IP没有到4段数字时,最后这段数字就会代替前面缺少的数字,结合上面一个知识点,例如127.0.256,其中256对应二进制00000001,00000000,就达到了32位

缩写为一段

如果一个IP只有一段数字,其中没有点分隔,那么这个数字将会直接变为32位二进制数字,再根据8位进行分组,例如127.0.0.1,二进制为11111111,00000000,00000000,00000001,这32位二进制连起来后转换成十进制通过下面公式:

127.0.0.1 => 127*256^3 + 0*256^2 + 0 *256^1 + 1*256^0 => 2130706433

那么127.0.0.1可以缩写成 2130706433,测试后发现可以解析到

结尾

这篇文章到这里就结束了,感谢耐心阅读,如果遇到问题可以在下方评论区中讨论。

1

评论区