4. 网络层灵魂:IP协议与IP地址分类,子网掩码与CIDR,路由选择原理,静态路由与动态路由(RIP/OSPF)

网络层是整个协议栈的“交通枢纽”。没有它,数据包就不知道往哪儿送。今天咱们聊聊IP协议、地址分类、子网掩码、CIDR,还有路由选择——静态和动态路由(RIP、OSPF)。这些内容,说白了就是网络层的“地图”和“导航系统”。

4.1 IP协议:网络层的“身份证”

IP协议(Internet Protocol)是网络层的核心。它的主要任务就是给每个设备分配一个唯一的地址——IP地址。这个地址就像你的家庭住址,别人要给你寄东西,就得知道这个地址。

IP协议有两个版本:IPv4和IPv6。IPv4是32位地址,写成四个十进制数,比如192.168.1.1。IPv6是128位地址,写成八组十六进制数,比如2001:0db8:85a3::8a2e:0370:7334。IPv4地址快用完了,所以IPv6慢慢普及。不过,目前大部分网络还是IPv4为主。

核心要点:IP地址是网络层的“身份证”,每个设备必须有一个唯一的IP地址才能通信。

4.2 IP地址分类:A、B、C、D、E类

IP地址分五类:A、B、C、D、E。A、B、C是单播地址,D是多播地址,E是保留地址。分类的依据是地址的前几位。

类别 前几位 地址范围 默认子网掩码 用途
A类 0 1.0.0.0 – 126.255.255.255 255.0.0.0 大型网络
B类 10 128.0.0.0 – 191.255.255.255 255.255.0.0 中型网络
C类 110 192.0.0.0 – 223.255.255.255 255.255.255.0 小型网络
D类 1110 224.0.0.0 – 239.255.255.255 无 多播
E类 1111 240.0.0.0 – 255.255.255.255 无 保留

我记得刚入行时,公司网络用的是B类地址。后来设备多了,B类地址不够用,才慢慢改成CIDR。分类地址的缺点很明显——浪费。比如一个C类网络只有254个可用地址,但一个B类网络有65534个。如果你只需要300个地址,用B类就浪费了65234个。CIDR就是来解决这个问题的。

4.3 子网掩码与CIDR

子网掩码用来区分IP地址的网络部分和主机部分。比如IP地址192.168.1.10,子网掩码255.255.255.0,那么网络部分是192.168.1,主机部分是10。

CIDR(无类别域间路由)是更灵活的方式。它用“/”后面跟数字表示网络前缀长度。比如192.168.1.0/24,意思就是前24位是网络部分,后8位是主机部分。CIDR可以更精确地分配地址,减少浪费。

小技巧:计算子网掩码时,记住“1”代表网络位,“0”代表主机位。比如/24就是255.255.255.0,/16就是255.255.0.0。

我在项目中遇到过一个问题:一个客户说他们的网络地址不够用,但实际只用了不到一半。我一看,他们用的是B类地址,子网掩码是255.255.0.0。我建议改成CIDR,用/23掩码,这样每个子网有510个地址,完全够用。客户省了一大笔IP地址费用。

4.4 路由选择原理

路由选择就是决定数据包从源到目的地走哪条路。路由器根据路由表来做决定。路由表里记录着目的网络、下一跳地址、出接口等信息。

路由选择的核心是“最长前缀匹配”。什么意思?就是路由器会选最具体的路由。比如有两个路由:192.168.0.0/16和192.168.1.0/24。如果目的地址是192.168.1.10,路由器会选/24那条,因为它更具体。

注意:路由表里如果没有匹配的路由,数据包就会被丢弃。所以默认路由(0.0.0.0/0)很重要,它就像“最后一条路”。

4.5 静态路由与动态路由

静态路由是手动配置的。适合小型网络,简单、稳定、安全。但缺点也很明显——网络拓扑变了,你得手动改。我曾经在一个只有5台路由器的公司里用静态路由,配置起来很快,但后来公司扩张到20台路由器,我改配置改到崩溃。

动态路由是路由器自动学习的。适合大型网络,灵活、自动适应变化。常见的动态路由协议有RIP和OSPF。

4.5.1 RIP(路由信息协议)

RIP是距离矢量协议。它用跳数作为度量值,最大跳数是15。RIP每30秒广播一次路由表,收敛慢,容易产生路由环路。不过它配置简单,适合小型网络。

RIP有两个版本:RIPv1和RIPv2。RIPv1不支持子网掩码,RIPv2支持。现在基本都用RIPv2。

RIP的缺点:跳数限制15,收敛慢,容易环路。大型网络别用RIP。

4.5.2 OSPF(开放最短路径优先)

OSPF是链路状态协议。它用带宽作为度量值,收敛快,支持大型网络。OSPF把网络分成区域,核心是骨干区域(Area 0)。每个区域内的路由器只知道自己区域的路由,减少了路由表大小。

OSPF的工作原理:

  1. 发现邻居:通过Hello报文建立邻接关系。
  2. 交换链路状态:每个路由器广播自己的链路状态。
  3. 计算最短路径:用SPF算法计算到每个目的地的最短路径。
  4. 维护路由表:定期更新。

我记得有一次,一个客户的核心网络用RIP,结果网络一波动,路由表半天才稳定。我建议换成OSPF,配置好后,网络收敛时间从几分钟降到几秒。客户直呼“真香”。

4.6 静态路由 vs 动态路由:怎么选?

特性 静态路由 动态路由
配置复杂度 简单 复杂
网络变化适应 手动修改 自动适应
资源消耗 低 高
安全性 高 较低
适用场景 小型网络、边缘网络 大型网络、核心网络

我个人习惯是:小网络用静态,大网络用OSPF。RIP嘛,除非是历史遗留系统,否则我一般不推荐。

4.7 本章知识体系

下面这张图展示了本章的核心逻辑:从IP地址分类到子网掩码/CIDR,再到路由选择原理,最后是静态和动态路由。

网络层核心知识体系 网络层核心知识体系 IP协议 IP地址分类 子网掩码与CIDR 路由选择原理 静态路由 动态路由 RIP OSPF 核心逻辑:IP地址 → 子网划分 → 路由选择 → 静态/动态路由

4.8 避坑指南

我曾经犯过一个低级错误:配置静态路由时,下一跳地址写错了。结果数据包全丢了。排查了半天才发现。所以,配置静态路由时,一定要确认下一跳地址可达。

还有一次,我在OSPF里忘了配区域,结果所有路由器都学不到路由。OSPF的区域设计很重要,Area 0是骨干,其他区域必须连接到Area 0。

避坑:OSPF中,所有非骨干区域必须直接连接到骨干区域(Area 0)。否则路由学不到。

嗯,网络层的内容就这些。IP地址、子网掩码、CIDR、路由选择——这些是网络工程师的“基本功”。掌握了这些,你就能理解数据包是怎么从A到B的。下次遇到网络不通,先查IP地址和路由表,八成问题出在这儿。