本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名原文链接~~~

子网掩码与IP的关系你还不知道吗?(转自知乎)

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:


本篇文章转自 https://www.zhihu.com/question/29723388/answer/66737890 中的一个回答。

首先简要概述一下:
10.10.10.1/2410.10.10.1/25 一个是子网掩码为 24 的 10.10.10.1 的 IP 地址一个是子网掩码为 25 的 10.10.10.1 的 IP 地址表面上两个 IP 地址是一样的,但因为子网掩码的不同,导致网段的不同好比一号楼有 201 号房间,二号楼也有 201 房间,但这两个房间,不是同一个房间 10.10.10.1/2410.10.10.1/25 也是两个 IP 地址。
下面做详细展开,需要做一些基础知识的铺垫:

IP地址的种类

需要上网,连接上 internet,必须要有公共 ip,它是别人分配给你的,我们可以百度自己的公共 IP 是多少,如:

image.png

因为人类依赖十进制,所以这里的 IP 地址用十进制的方式表示要让机器识别,还是得转为二进制:

  • 十进制 IP 地址:14.145.184.184
  • 二进制 IP 地址:00001110 . 10010001 . 10111000 . 10111000

这种 IP 的表示方法,叫做 IPv4,就是通过 4*8=32 位来表示每个 IP 地址,这样的话,一共有多少个 IP 地址呢?

  • 最小地址:00000000 00000000 00000000 00000000, 也就是 0.0.0.0
  • 最大地址:11111111 11111111 11111111 11111111,也就是 255.255.255.255

IPv4 的方式,最多可以表示 255 * 255 * 255 * 255 = 4228250625 个 IP 地址,即 40 亿的 IPv4 地址,预计将会在 2020 年年前后分配完毕 (具体数字记不清)。

image.png

为了解决公网 IP 地址不足的情况,于是发明了私有 IP (Private IP)比如一个家庭(公司)有几台电脑,每台电脑都拥有私有 IP,它们之间组成一个局域网这几个私有 IP,可以通过某些技术(NAT),共同使用一个公有 IP 也就是说,一个公有 IP,可以分出很多个很多个私有 IP,这样 IPv4 不足的问题就解决了私有 IP 为了更好的管理,分为 3 种类型。

  • CLASS A:10.0.0.0 ~ 10.255.255.255
  • CLASS B:172.16.0.0 ~ 172.31.255.255
  • CLASS C:192.168.0.0 ~ 192.168.255.255

这里可以参考【 IP 地址的分类】。

看了我自己电脑的私有IP:

image.png

它属于 C 类型的网络。
再看问题“10.10.10.1/2410.10.10.1/25 是同一个 IP 地址吗?”,这里可以看到,10 开头的,自然就是 A 类型的网络了。

IP地址是怎样构成的?

寻找 IP 地址,可以用快递寻找门牌号码类比每栋楼有楼号,比如 4 号楼,5 号楼等。
每栋楼有门牌号,比如 101 号房,102 号房等 IP 地址同样有两部分地址组成,分别是网络地址(网络号)和主机地址(主机号)。
不同的分类(A、B、C)划分的网络号和主机号是不同的,这里有个表:

image.png

只要 IP 地址的网络号(network ip,紫色)相同,我们就把这几个 IP 地址称之为在同一个网段彼此可以相互访问,比如联机打游戏当主机号全为 0 的时候,代表着整栋楼第一个房子,又叫做网络地址(network ip),当主机号全为 1 的时候,代表着整栋楼最后一个房子,又叫做广播地址(broadcast ip)。

子网掩码是啥?有什么作用?

还是用楼房号来打比方好了,在现实中,我们可以这样表示,1 号楼 201 房间,IP 地址中,数字都是连在一起的,10101010.10101010.10101010.00000001,我们怎么知道哪部分是楼号?哪部分是房间号呢?怎样划分呢?答案是:

  • 通过Netmask 子网掩码~

掩码的意思,就是把一部分的代码掩盖住,同时露出另一部分代码,我想到佐罗用黑布把眼睛掩盖住只露出半张脸的样子...........

image.png

子网掩码,是为了掩盖住“网络号net_id”,暴露出“主机号host_id”:

  • 用 1 表示掩盖;
  • 用 0 表示暴露;

回到题目 IP 地址写法10.10.10.1/2410.10.10.1/25,24 说明了子网掩码遮住了 24 位,也说明了这个 IP 的“网络号network id”是 24 位,网段占了 24 位,25 说明了子网掩码遮住了 25 位,也说明了这个 IP的“网络号 network id”是 25 位,网段占了 25 位因为 10.10.10.1/2410.10.10.1/25 的“网络号”不同,即网段不同。

而网络地址(第一个 IP 地址),通过 IP 地址(二进制)和子网掩码(二进制)进行与操作得出 10.10.10.1/24 中的 10.10.10.1 二进制为 10101010.10101010.10101010.0000000110.10.10.1/24 中的子网掩码为 11111111 11111111 11111111 00000000,所以 10.10.10.1/24 中的网络地址为 10101010.10101010.10101010.00000000,即 10.10.10.010.10.10.1/24 中的广播地址为 10101010.10101010.10101010.11111111,即 10.10.10.255,所以这个网段里,能分配给主机使用的一共有 254 个 IP 地址,从 10.10.10.1~10.10.10.254
10.10.10.1/25 中的 10.10.10.1 二进制为 10101010.10101010.10101010.0000000110.10.10.1/25 中的子网掩码为 11111111 11111111 11111111 10000000,所以 10.10.10.1/25 中的网络地址为 10101010.10101010.10101010.00000000,即 10.10.10.010.10.10.1/25 中的广播地址为 10101010.10101010.10101010.01111111,即 10.10.10.127,(在网络地址变广播地址的时候,因为子网掩码掩盖了 25 位,所以只能最后 27 位变成 1)所以在这个网段里,能分配给主机使用的一共有 126 个地址,从 10.10.10.1~10.10.10.126

10.10.10.1/2410.10.10.1/25 一个是子网掩码为 24 的 10.10.10.1 的 IP 地址,一个是子网掩码为 25 的 10.10.10.1 的 IP 地址,表面上两个 IP 地址是一样的,但因为子网掩码的不同,导致网段的不同好比一号楼有 201 号房间,二号楼也有 201房间,但这两个房间,不是同一个房间 10.10.10.1/2410.10.10.1/25 也是两个 IP 地址。

# 杂记  

如果这篇文章对您有帮助,可点击下方链接分享给你的朋友们😋,如果遇到问题欢迎评论、留言~~~😇

评论

公众号:zze_coding

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×