03_网络层与IP编址:理解网络寻址的核心逻辑

在之前的文章中,我们拆解了 TCP/IP 四层模型的整体架构,其中网络层是实现跨网络通信的核心枢纽。不同于数据链路层仅能完成同一局域网内的通信,网络层的核心目标,是将数据包从源主机,跨越多个不同的网络,准确转发到目的主机。而支撑这一切的,就是 IP 协议与 IP 编址体系。本文将从网络层的核心协议出发,系统讲解 IP 编址、子网划分等核心技术,帮助读者理解网络寻址的底层逻辑。

一、网络层的核心协议体系

很多人会将网络层直接等同于 IP 层,这是因为 IP 协议是网络层的核心,但实际上,网络层的协议体系并不只有 IP,还包含了 ICMP、IGMP 等辅助协议,它们共同支撑起了网络层的通信能力。

其中,IP 协议是整个网络层的基础,它定义了 IP 报文的格式,为网络中的设备提供了统一的逻辑地址,同时负责数据包的寻址与转发。IP 协议提供的是无连接的传输服务,也就是说,在发送数据包之前,不需要提前建立连接,每个 IP 数据包都是独立转发的,这也是网络层能够高效处理海量数据包的原因之一。

在 IP 报文中,有几个关键字段是我们需要了解的:

  1. 生存时间(TTL):这个字段定义了数据包的最大转发次数,每经过一个路由器,TTL 值就会减 1,当 TTL 变为 0 时,数据包就会被丢弃。这个设计的核心作用,是防止数据包在网络中因为路由环路而无限循环,避免浪费网络资源。

  2. 协议号:这个字段用来标识上层使用的协议,比如 TCP 是 6,UDP 是 17,ICMP 是 1,目的主机的 IP 层会根据这个字段,将数据包的内容上报给对应的上层协议处理。

  3. 分片相关字段:不同的物理链路支持的最大传输单元(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 编址则是网络通信的基础,搞懂了这些知识,你就搞懂了网络寻址的核心逻辑,这也是我们理解路由、转发等进阶技术的基础。无论是日常的网络排错,还是企业的网络规划,这些知识都是我们必须掌握的核心内容。

相关推荐
两个人的幸福10 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
zzzzzz31010 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
BingoGo12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820713 天前
PHP 扩展——从入门到理解
php
鹏仔先生14 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
大树8814 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
小宇宙Zz14 天前
Maven依赖冲突
java·服务器·maven
网络研究院14 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智14 天前
ARP代理--工作原理
运维·网络·arp·arp代理