前言

发现一个有意思的现象,当有了某一认知以后,然后对生活中,比如路由器、打印机等使用说明,会好奇且梳理其中由来,理解其配置、使用的底层原理。

问题,如下所示:192.168.0.1 和 192.168.0.200,属于同一个网络吗?
概括之,本文将从 IP 地址、子网掩码,两个角度,来解释在这个 IPv4 网络地址数远小于终端数的情况下,IPv4 如何支撑众多的终端设备。其中涉及的计网概念,包括公网、子网、主机等。

  • IP 地址
  • 子网掩码

附录(计网架构)

《计算机网络》自顶向下 学习笔记 0429 完成 0512,传送链接

机械转码,发现掌握的计网知识点琐碎,故决定系统学习其原理、实现,选择《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》一书。计划之后 MIT 6.824 LAB 进阶。感触最深是从协议原理到实现,发现算法与数据结构的应用,如网络层控制平面 LS 算法用到图论 dijkstra 算法,子网前缀匹配聚集,质数与 RSA 等。收获颇丰,笔记记录,方便回顾。——转自博客,【个人笔记】《计算机网络》自顶向下 学习笔记


第一章 IP 地址

IP 地址有三种基本类型,由网络号的第一组数字来表示。

A 类地址的第一组数字为 1~126。注意,数字 0 和 127 不作为 A 类地址,数字 127 保留给内部回送函数,而数字 0 则表示该地址是本地宿主机,不能传送。

B 类地址的第一组数字为 128~191。

C 类地址的第一组数字为 192~223。

例如:我校的网络连接是 115.236.71.98 , 它的第一组数字为 115,因此 115.236.71.98 是 A 类地址;而 159.166.1.1 则是 B 类地址。

IPv4 与 IPv6:
互联网协会 ICANN 和 RIR 鼓励网络管理者采用 IPv6,这样就有 340 万万万亿 IP 地址可以使用。这么多地址,足够好几百年给地球上的每个人都分配一个 IP 地址,以此解决 IPv4 地址不足的问题,满足互联网的发展需要。
IPv6 是最终用来替换 IPv4 的新一代互联网协议,IPv4 在今天已被互联网广泛使用。IPv6 是一个成熟的协议,它的使用和部署都在不断增长,特别是在移动电话市场。
目前 IPv4 地址早已分配用尽,故这里引入概念 IPv6,作为延申,但本文主要所讲对象主语为 IPv4,因此对 IPv6 不做过多介绍。

私有地址

上面提到 IP 地址在全世界范围内唯一,看到这句话你可能有这样的疑问,像 192.168.0.1 这样的地址在许多地方都能看到,并不唯一,这是为何?

Internet 管理委员会规定如下地址段为私有地址,私有地址可以自己组网时用,但不能在 Internet 网上,Internet 网没有这些地址的路由,有这些地址的计算机上网必须转换成为合法的 IP 地址,也称为公网地址,这就像不同的城市,城市可命名相同的大街,如贝克街 221 号,但对外我们只能看到城市的地址和真正的伦敦贝克街 221 号。

下面是 A、B、C 类网络中的私有地址段。在自己组网(比如,路由器配置)就可以用这些地址。

  • 10.0.0.0~10.255.255.255

  • 172.16.0.0~172.131.255.255

  • 192.168.0.0~192.168.255.255

回送地址

A 类网络地址 127 是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(Loopback Address)。无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。含网络号 127 的分组不能出现在任何网络上。

tips:
ping 127.0.0.1,来测试本机 TCP/IP 是否正常。

广播地址

TCP/IP 规定,主机号全为 1 的网络地址用于广播之用,叫做广播地址。所谓广播,指同时向同一子网所有主机发送报文。

网络地址

TCP/IP 协议规定,各位全为 0 的网络号被解释成 “本” 网络。由上可以看出:一、含网络号 127 的分组不能出现在任何网络上;二、主机和网关不能为该地址广播任何寻径信息。由以上规定可以看出,主机号全 0 全 1 的地址在 TCP/IP 协议中有特殊含义,一般不能用作一台主机的有效地址。

概括之,如果主机号全 0,IP 地址代表仅网络号指向的那个网段,该 IP 代表一个网段;如果主机号全 1,IP 地址代表网络号指向的全部主机,IP 地址代表广播地址;其他就是普通的 IP 地址,指向网域中的一个主机。


第二章 子网掩码

从上面的例子可以看出,子网掩码的作用就是和 IP 地址与运算后得出网络地址,子网掩码也是 32bit,并且是一串 1 后跟随一串 0 组成,其中 1 表示在 IP 地址中的网络号对应的位数,而 0 表示在 IP 地址中主机对应的位数。

标准子网掩码

A 类网络(1~126)缺省子网掩码:255.0.0.0

255.0.0.0 换算成二进制为 11111111 00000000 00000000 00000000

可以清楚地看出前 8 位是网络地址,后 24 位是主机地址,也就是说,如果用的是标准子网掩码,看第一段地址即可看出是不是同一网络的。如 21.0.0.1 和 21.240.230.1,第一段为 21 属于 A 类,如果用的是默认的子网掩码,那这两个地址就是一个网段的,也就是同一子网。

B类网络(128~191)缺省子网掩码:255.255.0.0

C类网络(192~223)缺省子网掩码:255.255.255.0

B类、C类分析同上。

特殊子网掩码

标准子网掩码出现的都是 255 和 0 的组合,在实际的应用中还有下面的子网掩码

255.128.0.0
255.192.0.0
。。。。。。
255.255.192.0
255.255.240.0
。。。。。。
255.255.255.248
255.255.255.252

A:10.0.0.0-10.255.255.255
B:172.16.0.0-172.131.255.255
C:192.168.0.0-192.168.255.255

A 类网络缺省子网掩码:255.0.0.0
B 类网络缺省子网掩码:255.255.0.0
C 类网络缺省子网掩码:255.255.255.0

这些子网掩码又是什么意思呢?这些子网掩码的出现是为了把一个网络划分成多个网络。

还记得上面的例子吗?如下所示:192.168.0.1 和 192.168.0.200,如果是默认掩码 255.255.255.0,两个地址就是一个网络的;如果掩码变为 255.255.255.192,这样各地址就不属于一个网络。


结论

对文章内容有不解,请随时留言。


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐