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的工作原理:
- 发现邻居:通过Hello报文建立邻接关系。
- 交换链路状态:每个路由器广播自己的链路状态。
- 计算最短路径:用SPF算法计算到每个目的地的最短路径。
- 维护路由表:定期更新。
我记得有一次,一个客户的核心网络用RIP,结果网络一波动,路由表半天才稳定。我建议换成OSPF,配置好后,网络收敛时间从几分钟降到几秒。客户直呼“真香”。
4.6 静态路由 vs 动态路由:怎么选?
| 特性 | 静态路由 | 动态路由 |
|---|---|---|
| 配置复杂度 | 简单 | 复杂 |
| 网络变化适应 | 手动修改 | 自动适应 |
| 资源消耗 | 低 | 高 |
| 安全性 | 高 | 较低 |
| 适用场景 | 小型网络、边缘网络 | 大型网络、核心网络 |
我个人习惯是:小网络用静态,大网络用OSPF。RIP嘛,除非是历史遗留系统,否则我一般不推荐。
4.7 本章知识体系
下面这张图展示了本章的核心逻辑:从IP地址分类到子网掩码/CIDR,再到路由选择原理,最后是静态和动态路由。
4.8 避坑指南
我曾经犯过一个低级错误:配置静态路由时,下一跳地址写错了。结果数据包全丢了。排查了半天才发现。所以,配置静态路由时,一定要确认下一跳地址可达。
还有一次,我在OSPF里忘了配区域,结果所有路由器都学不到路由。OSPF的区域设计很重要,Area 0是骨干,其他区域必须连接到Area 0。
避坑:OSPF中,所有非骨干区域必须直接连接到骨干区域(Area 0)。否则路由学不到。
嗯,网络层的内容就这些。IP地址、子网掩码、CIDR、路由选择——这些是网络工程师的“基本功”。掌握了这些,你就能理解数据包是怎么从A到B的。下次遇到网络不通,先查IP地址和路由表,八成问题出在这儿。