在之前的文章中,我们拆解了 TCP/IP 四层模型的整体架构,其中网络层是实现跨网络通信的核心枢纽。不同于数据链路层仅能完成同一局域网内的通信,网络层的核心目标,是将数据包从源主机,跨越多个不同的网络,准确转发到目的主机。而支撑这一切的,就是 IP 协议与 IP 编址体系。本文将从网络层的核心协议出发,系统讲解 IP 编址、子网划分等核心技术,帮助读者理解网络寻址的底层逻辑。
一、网络层的核心协议体系
很多人会将网络层直接等同于 IP 层,这是因为 IP 协议是网络层的核心,但实际上,网络层的协议体系并不只有 IP,还包含了 ICMP、IGMP 等辅助协议,它们共同支撑起了网络层的通信能力。
其中,IP 协议是整个网络层的基础,它定义了 IP 报文的格式,为网络中的设备提供了统一的逻辑地址,同时负责数据包的寻址与转发。IP 协议提供的是无连接的传输服务,也就是说,在发送数据包之前,不需要提前建立连接,每个 IP 数据包都是独立转发的,这也是网络层能够高效处理海量数据包的原因之一。
在 IP 报文中,有几个关键字段是我们需要了解的:
-
生存时间(TTL):这个字段定义了数据包的最大转发次数,每经过一个路由器,TTL 值就会减 1,当 TTL 变为 0 时,数据包就会被丢弃。这个设计的核心作用,是防止数据包在网络中因为路由环路而无限循环,避免浪费网络资源。
-
协议号:这个字段用来标识上层使用的协议,比如 TCP 是 6,UDP 是 17,ICMP 是 1,目的主机的 IP 层会根据这个字段,将数据包的内容上报给对应的上层协议处理。
-
分片相关字段:不同的物理链路支持的最大传输单元(MTU)不同,比如以太网的 MTU 是 1500 字节,如果 IP 数据包的大小超过了链路的 MTU,就需要将数据包拆分成多个小的片段,也就是分片,这些片段会独立转发,到了目的主机之后再重新组装。
二、IPv4 编址:网络的 "地址系统"
要实现跨网络的通信,首先要解决的就是寻址问题:如何唯一标识网络中的每一个设备?这就是 IP 编址要解决的问题。
1. IP 地址的基本概念
IPv4 地址是一个 32 位的二进制数,为了方便人类阅读,我们通常将它分成 4 个 8 位的字节,每个字节转换成十进制,中间用点分隔,也就是我们熟悉的 "点分十进制" 表示法,比如 [192.168.1.1](192.168.1.1),它的范围是 [0.0.0.0](0.0.0.0) 到 [255.255.255.255](255.255.255.255)。
一个 IP 地址由两部分组成:网络位 和主机位。网络位用来标识这个设备所在的网络,就像我们现实地址中的 "城市 + 小区";主机位用来标识这个网络内的具体设备,就像小区里的 "门牌号"。而子网掩码,就是用来区分这两部分的,比如 [255.255.255.0](255.255.255.0),就代表前 24 位是网络位,后 8 位是主机位,我们也可以用 CIDR 的方式表示,比如 [192.168.1.1/24](192.168.1.1/24)。
2. IP 地址的分类
为了方便 IP 地址的管理与分配,IPv4 的地址被分成了五类,其中 A、B、C 三类是分配给普通主机使用的,D 类用于组播,E 类保留用于研究。

A 类地址:首位为 0,范围是 [0.0.0.0](0.0.0.0) 到 [127.255.255.255](127.255.255.255),默认掩码是 8 位,也就是前 8 位是网络位,后 24 位是主机位,这类地址适合超大型网络,一个网段可以容纳超过 1600 万个主机。
B 类地址:前两位为 10,范围是 [128.0.0.0](128.0.0.0) 到 [191.255.255.255](191.255.255.255),默认掩码是 16 位,前 16 位是网络位,后 16 位是主机位,适合大中型网络,一个网段可以容纳 6 万多个主机。
C 类地址:前三位为 110,范围是 [192.0.0.0](192.0.0.0) 到 [223.255.255.255](223.255.255.255),默认掩码是 24 位,前 24 位是网络位,后 8 位是主机位,适合小型网络,一个网段可以容纳 254 个主机。
D 类地址:前四位为 1110,范围是 [224.0.0.0](224.0.0.0) 到 [239.255.255.255](239.255.255.255),没有主机位,用于组播通信。
E 类地址:前四位为 1111,范围是 [240.0.0.0](240.0.0.0) 到 [255.255.255.255](255.255.255.255),保留用于研究和实验。
3. 公网 IP 与私网 IP
IPv4 的地址是由 IANA 统一分配的,保证公网中的地址唯一性,这类地址就是公网 IP,可以直接在互联网上路由。
但实际上,很多内部网络不需要连接到互联网,或者只需要少量的公网地址,为了节省公网 IP,IANA 在 A、B、C 三类地址中,预留了一部分地址作为私网 IP,这些地址只能在内部网络中使用,不能在公网上路由:
-
A 类私网:[10.0.0.0](10.0.0.0)~[10.255.255.255](10.255.255.255)
-
B 类私网:[172.16.0.0](172.16.0.0)~[172.31.255.255](172.31.255.255)
-
C 类私网:[192.168.0.0](192.168.0.0)~[192.168.255.255](192.168.255.255)
我们家里的路由器,就是通过 NAT(网络地址转换)技术,将内部的私网 IP,转换成运营商分配的公网 IP,这样多个内部设备就可以共用一个公网 IP 上网,这也是为什么我们家里的设备,都用 192.168.x.x 的地址,却都能访问互联网的原因。
4. 特殊的 IP 地址
在每个网段中,有两个特殊的地址是不能分配给主机的:
-
网络地址:主机位全为 0 的地址,用来标识整个网段,比如 [192.168.1.0/24](192.168.1.0/24),就是这个网段的网络地址。
-
广播地址:主机位全为 1 的地址,用来向这个网段内的所有主机发送广播数据包,比如 [192.168.1.255/24](192.168.1.255/24)。
所以,一个网段的可用主机地址,永远是 2^n - 2,n 是主机位的位数,减去的两个,就是网络地址和广播地址。
三、子网划分:优化网络的地址利用率
在早期的有类编址中,一个 B 类地址就会分配给一个组织,但是很多组织的设备数量远不到 6 万,这就造成了极大的地址浪费,同时,整个大的网段会形成一个巨大的广播域,一旦出现广播风暴,整个网络的性能都会受到严重影响。
为了解决这个问题,我们引入了子网划分技术,它的核心思路,就是将一个大的网段,拆分成多个小的子网,每个子网对应一个独立的广播域,这样既提高了地址的利用率,也缩小了广播域的规模,提升了网络的稳定性。
1. 子网划分的原理
子网划分的本质,就是向主机位 "借位",把原本属于主机位的部分,拿过来作为子网位,这样就可以把一个大的网络,拆分成多个小的子网。
举个最常见的例子,我们有一个 C 类的网段 [192.168.1.0/24](192.168.1.0/24),默认的掩码是 24 位,主机位是 8 位,整个网段有 254 个可用地址。如果我们向主机位借 1 位,那么子网位就是 1 位,主机位就变成了 7 位,这样我们就得到了 2 个子网:
-
子网 1:[192.168.1.0/25](192.168.1.0/25),网络地址是 [192.168.1.0](192.168.1.0),广播地址是 [192.168.1.127](192.168.1.127),可用地址 126 个。
-
子网 2:[192.168.1.128/25](192.168.1.128/25),网络地址是 [192.168.1.128](192.168.1.128),广播地址是 [192.168.1.255](192.168.1.255),可用地址 126 个。
这样,原本的一个大网段,就拆成了两个小的子网,分别可以给两个不同的部门使用,既解决了地址浪费的问题,也把广播域缩小了一半。
如果我们需要更多的子网,就可以借更多的位,比如借 2 位,就可以得到 4 个子网,每个子网的主机位是 6 位,可用地址 62 个,以此类推。
2. 可变长子网掩码(VLSM)
传统的子网划分,所有的子网大小都是一样的,但在实际的企业网络中,不同的部门的主机数量是不一样的,比如研发部门有 100 台主机,行政部门只有 10 台,如果用同样大小的子网,还是会浪费地址。
这时候我们就会用可变长子网掩码(VLSM),也就是根据不同的需求,给不同的子网分配不同大小的掩码,比如给研发部门分配 / 25 的子网,给行政部门分配 / 28 的子网,这样就可以最大程度的提高地址的利用率,这也是现在企业网络中最常用的地址规划方式。
四、ICMP 协议:网络的诊断工具
IP 协议是无连接的,它本身没有错误处理和诊断的能力,所以我们需要一个辅助协议来完成这些工作,这就是 ICMP(互联网控制消息协议)。
ICMP 是 IP 协议的辅助协议,它的作用是在网络设备之间传递控制和差错信息,帮助我们诊断网络故障,我们平时最常用的两个网络诊断工具:ping 和 tracert,都是基于 ICMP 协议实现的。
-
Ping:它的原理是发送 ICMP 的 Echo Request 报文,目的主机收到之后,会回复一个 Echo Reply 报文,源主机通过这个过程,就可以判断网络的连通性,同时计算数据包的往返时延,这也是我们平时排错的第一步,用来判断目标主机是否可达。
-
Tracert:它的原理是利用 IP 报文的 TTL 字段,从 TTL=1 开始,逐步增加,每一个路由器收到 TTL=1 的报文,会丢弃它,然后回复一个 ICMP 的目的不可达报文,这样源主机就可以探测到每一跳的路由器,从而跟踪数据包的转发路径,用来定位网络中的故障点,比如网络不通的时候,我们可以用 tracert 看是哪一跳出了问题。
除此之外,ICMP 还提供了重定向报文,当路由器检测到主机使用了非最优的路由时,会发送重定向报文,告诉主机修改路由,从而优化转发路径。
五、IP 地址规划:网络设计的基础
在搭建一个企业网络的时候,IP 地址的规划是非常重要的一步,一个好的 IP 规划,应该是自顶向下的,结合网络的层次结构、业务需求、路由协议来设计,最终实现易管理、易扩展、地址利用率高的目标。
比如,我们可以按照网络的层次来规划,核心层、汇聚层、接入层分别分配不同的网段,也可以按照部门或者楼层来规划,每个部门或者楼层分配一个独立的子网,这样不仅方便管理,也方便后续的网络扩展,当需要增加新的部门的时候,只需要分配新的子网就可以了,不会影响现有的网络。
六、从 IPv4 到 IPv6:地址枯竭的解决方案
随着互联网的发展,IPv4 的 32 位地址已经完全耗尽了,IANA 在 2011 年就已经把最后一批 IPv4 地址分配完毕,虽然 NAT 技术缓解了这个问题,但是它也带来了很多新的问题,比如 P2P 通信的障碍,网络性能的损耗。
所以,IPv6 就成了必然的选择,IPv6 使用 128 位的地址,地址空间几乎是无限的,完全不用担心地址枯竭的问题,同时,IPv6 还简化了报文头部,支持自动地址配置,不需要 NAT 就可以实现端到端的通信,现在,IPv6 正在逐步替代 IPv4,成为下一代互联网的核心。
写在最后
网络层是整个 TCP/IP 模型的核心,而 IP 编址则是网络通信的基础,搞懂了这些知识,你就搞懂了网络寻址的核心逻辑,这也是我们理解路由、转发等进阶技术的基础。无论是日常的网络排错,还是企业的网络规划,这些知识都是我们必须掌握的核心内容。