Chapter 04
网络层
实现不同网络之间的互连通信,核心任务:路由选择与分组转发
网络层功能
网络层核心功能 HOT
- 实现不同网络之间的互连通信(跨网段通信)
- 路由选择(全局视角)和分组转发(本地操作)
- 拥塞控制:防止过多分组注入网络
- 传输单位:分组(数据报)
异构网络互连
- 路由器连接不同类型的网络
- 虚电路服务 vs 数据报服务
| 对比项 | 虚电路服务 | 数据报服务 |
|---|---|---|
| 连接建立 | 必须建立连接 | 无需建立连接 |
| 目的地址 | 仅建立时使用 | 每个分组携带 |
| 路由选择 | 同一条虚电路 | 每个分组独立 |
| 可靠性 | 网络保证有序 | 不保证有序 |
SDN基本概念 KEY
- 软件定义网络(Software-Defined Networking),核心思想:数据平面与控制平面分离
- SDN控制器集中管理路由决策,集中式控制取代传统分布式控制
- 三大层次:
- 数据平面:网络设备(交换机/路由器)负责高速转发数据流
- 控制平面:SDN控制器,逻辑集中,下发流表项指导转发
- 应用平面:网络应用(路由、防火墙、负载均衡)通过北向接口编程
- 南向接口(控制器 → 数据平面):
- 控制器与数据平面设备之间的通信接口
- OpenFlow协议是SDN最典型、最标准的南向接口协议
- OpenFlow通过流表(Flow Table)下发转发规则,交换机按流表项匹配转发
- 北向接口(控制器 → 应用层):
- 控制器向上层网络应用提供的可编程接口(通常为REST API)
- 允许开发者通过编程方式调用控制器能力,实现自定义网络服务
- SDN控制器架构:
- 核心层:维护网络状态、拓扑信息、主机信息
- 功能模块:路由计算、转发策略、安全策略等
- 接口层:北向接口(对应用)+ 南向接口(对设备)
- 典型控制器:OpenDaylight、Floodlight、POX、RYU等
网络层拥塞控制
- 拥塞:注入网络的分组过多,超出网络处理能力,导致时延增大、吞吐量下降
- 与流量控制的区别:
- 流量控制:点到点,防止发送方过快淹没接收方
- 拥塞控制:全局,防止过多分组注入网络导致路由器过载
- 开环控制(预防):
- 准入控制:新流量拥塞时拒绝接入
- 流量整形:平滑突发流量(漏桶、令牌桶)
- 闭环控制(反馈):
- 监测:路由器监测队列长度和利用率
- 报告:源点收到拥塞通知后减慢发送速率
- 调整:根据反馈调整发送速率
- 方法:
- 慢启动和拥塞避免(TCP)
- 随机早期检测(RED):队列达阈值时随机丢弃分组
- 显式拥塞通知(ECN):标记拥塞而非丢弃
IP协议
IPv4分组 HOT
- 首部关键字段:版本、首部长度、总长度、TTL、协议、源IP、目的IP
- TTL:每经过一个路由器减1,减到0则丢弃(防止无限循环)
- 协议字段:TCP=6,UDP=17,ICMP=1
IPv4地址与NAT HOT
- IP地址:32位,点分十进制
- A类:1.0.0.0~126.255.255.255,网络位8位
- B类:128.0.0.0~191.255.255.255,网络位16位
- C类:192.0.0.0~223.255.255.255,网络位24位
- 特殊地址:
127.0.0.1(环回)、0.0.0.0(本机)、255.255.255.255(广播) - NAT:将私有地址转换为公有地址,缓解IPv4地址不足
- 私有地址范围(RFC 1918,不在公网路由):
- A类私有:10.0.0.0/8(10.0.0.0 ~ 10.255.255.255)
- B类私有:172.16.0.0/12(172.16.0.0 ~ 172.31.255.255)
- C类私有:192.168.0.0/16(192.168.0.0 ~ 192.168.255.255)
- NAT转换方式:静态NAT(一对一)、动态NAT(地址池)、NAPT/PAT(端口多路复用,最常用)
| 类别 | 范围 | 网络位 | 主机位 | 最大主机数 |
|---|---|---|---|---|
| A类 | 1~126 | 8位 | 24位 | 2^24-2 |
| B类 | 128~191 | 16位 | 16位 | 2^16-2 |
| C类 | 192~223 | 24位 | 8位 | 2^8-2 |
子网划分与CIDR HOT
- 子网掩码:区分网络位和主机位
- 网络地址 = IP地址 AND 子网掩码
- CIDR:无类域间路由,取消传统分类,使用
/xx表示前缀长度 - 路由聚合:将多个子网合并为一条路由
网络地址 = IP AND 子网掩码 | 广播地址 = 网络地址 OR (~子网掩码)
子网划分计算器
请输入IP地址和子网掩码
ARP / DHCP / ICMP KEY
- ARP:IP地址 → MAC地址,同一子网内解析
- ARP跨子网解析过程:
- 同子网通信:主机直接发送ARP广播请求,目标主机单播应答其MAC地址
- 跨子网通信:
- 源主机发现目的IP不在本子网,需通过网关路由器转发
- 源主机先发送ARP请求,获取网关路由器的MAC地址
- 源主机将数据报封装为目的MAC=网关MAC、目的IP=最终目的IP发送给网关
- 网关路由器收到后,再通过ARP解析下一跳或目的主机的MAC,逐跳转发
- DHCP:动态获取IP地址,四步:Discover → Offer → Request → ACK
- ICMP:互联网控制报文协议,ping命令基于ICMP回送请求/应答
- ICMP类型:终点不可达、时间超过、参数问题、改变路由(重定向)
- ICMP典型应用:
- Ping:基于ICMP回送请求/应答报文,测试目的主机可达性
- Traceroute(路由追踪):基于ICMP时间超过报文实现
- 原理:依次发送TTL=1,2,3...的数据报
- 每个路由器收到TTL减为0时,返回"ICMP时间超过"报文
- 源主机据此记录沿途各跳路由器的IP,最终到达目的主机时返回"ICMP回送应答"
IPv6
IPv6主要特点 HOT
- 128位地址空间
- 简化首部格式,固定40字节
- 支持即插即用:IPv6支持无状态地址自动配置(SLAAC),也可使用有状态DHCPv6
- 取消了首部校验和
- IPv4到IPv6过渡:双栈策略、隧道技术
| 对比项 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32位 | 128位 |
| 首部长度 | 可变(20~60B) | 固定40B |
| 校验和 | 有 | 取消 |
| 即插即用 | 需DHCP | 支持(SLAAC / DHCPv6) |
IPv6地址表示与分类 KEY
- 地址表示法:冒号分隔的8组4位十六进制
- 完整格式:
2001:0db8:85a3:0000:0000:8a2e:0370:7334 - 每组前导0可省略:
2001:db8:85a3:0:0:8a2e:370:7334
- 完整格式:
- 零压缩法(双冒号法):连续的零可用
::缩写(仅能用一次)- 例:
2001:db8:0:0:0:0:0:1→2001:db8::1 - 例:
FF02:0:0:0:0:0:0:1→FF02::1(所有节点组播) - 注意:一个地址中
::只能出现一次,否则会产生歧义
- 例:
- 特殊地址:
::1(即0:0:0:0:0:0:0:1):环回地址,相当于IPv4的127.0.0.1::(全0):未指定地址,不能作为目的地址FE80::/10:链路本地地址(仅本链路有效)FC00::/7:唯一本地地址(私有地址)
- IPv6地址分类:
- 单播(Unicast):一对一通信,标识一个接口(全球单播、链路本地、唯一本地等)
- 任播(Anycast):一对最近,发往一组接口中"最近"的一个(IPv6新增)
- 组播(Multicast):一对多,发往一组所有接口,地址前缀
FF00::/8 - 注意:IPv6取消了广播,原广播功能由组播实现
路由协议
路由算法 HOT
- 静态路由:手动配置,不随网络变化
- 动态路由:自动学习,适应网络变化
- 距离-向量算法:RIP,定期交换路由表
- 链路状态算法:OSPF,泛洪链路状态信息
- 层次路由:将网络分为自治系统(AS)
RIP协议
- 基于距离向量算法,跳数为度量
- 最大跳数15,16为不可达
- 每30秒交换一次路由表
- 缺点:慢收敛、可能路由环路
OSPF协议
- 基于链路状态算法(Dijkstra)
- 以带宽为度量值
- 收敛速度快,适合大型网络
- 支持区域划分
BGP协议
- 外部网关协议,AS间路由
- 基于路径向量,非距离向量
- 交换可达性信息,选择较好路由
OSPF最短路径算法演示 (Dijkstra)
步骤 0 / 6
点击播放按钮开始动画演示
IP多播
多播的概念
- 单播:一对一通信,每对源目的独立传输
- 多播(组播):一对多通信,同一数据发送给一组接收者
- 同一分组只在链路分叉处复制,大大节省带宽
- 适用于视频会议、在线直播、软件分发等场景
- 广播:一对所有,只在局域网内有效,路由器不转发广播包
- 多播地址:D类IP地址(224.0.0.0 ~ 239.255.255.255)
IP多播地址
- D类地址范围:224.0.0.0 ~ 239.255.255.255
- 224.0.0.0 ~ 224.0.0.255:预留组地址(永久组),如224.0.0.1所有主机
- 224.0.1.0 ~ 238.255.255.255:全局多播地址
- 239.0.0.0 ~ 239.255.255.255:本地管理地址,用于私网
- 以太网多播:MAC地址最高字节最低位为1表示多播
- IP多播到MAC多播的映射:D类地址低23位映射到MAC地址低23位
- 有2^5=32个不同的多播IP映射到同一MAC地址(有5位重叠)
- 注意:多播地址只能作为目的地址,不能作为源地址
IGMP与多播路由协议 KEY
- IGMP(互联网组管理协议):
- 工作在主机与本地路由器之间
- 功能:主机加入/离开多播组,路由器维护组成员关系
- 版本:IGMPv1(查询+报告)、IGMPv2(增加离开组消息)、IGMPv3
- 查询器选举:网段中IP最小的路由器作为查询器
- 多播路由协议:
- 密集模式(DVMRP):反向路径广播+剪枝,适合成员密集
- 稀疏模式(PIM-SM):基于汇集点RP,按需建立分发树,适合成员稀疏
- 核心:构建多播分发树,以最少的链路复制将数据送达所有组成员
移动IP
移动IP的概念
- 问题:主机移动到新的网络后,IP地址改变,TCP连接会中断
- 目标:移动节点在改变接入点时,无需改变IP地址,保持通信不中断
- 核心思想:使用固定的"归属地址"标识移动节点,通过转交地址实际通信
移动IP通信过程
- 实体:
- 移动节点(MN):从一个网络移动到另一个网络的主机
- 归属代理(HA):移动节点归属网络中的路由器
- 外地代理(FA):移动节点当前所在网络的路由器
- 通信对端(CN):与移动节点通信的节点
- 关键技术:
- 代理发现:移动节点通过ICMP路由器发现消息找到代理
- 注册:移动节点向归属代理注册当前的转交地址
- 隧道技术:归属代理将发给移动节点的数据报,封装后转发到转交地址
- 解封装:外地代理收到封装的数据报,解封装后交给移动节点
- 通信流程:
- CN→HA:数据报发给移动节点的归属地址
- HA→FA:归属代理通过隧道封装转发到转交地址
- FA→MN:外地代理解封装,交付移动节点
- MN→CN:移动节点直接向通信对端发送(路由优化)
网络层设备
冲突域和广播域
- 冲突域:同一时间只能有一台设备发送数据,否则产生冲突的区域
- 集线器所有端口在一个冲突域
- 交换机每个端口是一个独立冲突域(隔离冲突域)
- 路由器每个接口是一个独立冲突域
- 广播域:广播帧所能到达的范围
- 集线器不隔离广播域
- 交换机不隔离广播域(所有端口同属一个广播域)
- 路由器隔离广播域(每个接口一个广播域)
- VLAN可以在交换机上划分多个广播域
- 总结:集线器是冲突域+广播域都不隔离;交换机隔离冲突域不隔离广播域;路由器两者都隔离
路由器的组成和功能 KEY
- 功能:
- 路由选择:运行路由协议,构建和维护路由表
- 分组转发:根据路由表转发IP数据报
- 异构网络互连:连接不同类型的网络
- 拥塞控制、网络管理
- 组成:
- 路由选择部分(控制平面):
- 路由选择处理机
- 运行路由协议(RIP/OSPF/BGP等)
- 构造和更新路由表
- 分组转发部分(数据平面):
- 交换结构:将输入端口的分组转移到输出端口
- 输入端口:物理层+数据链路层+查找转发表
- 输出端口:排队+链路层+物理层
- 路由选择部分(控制平面):
- 路由表 vs 转发表:
- 路由表:由路由选择算法生成,包含到各网络的完整路由信息
- 转发表:由路由表推导而来,结构优化用于快速查找转发
路由表与分组转发
- 路由表内容:目的网络地址、子网掩码、下一跳地址、出接口、度量值
- 最长前缀匹配:当有多条路由匹配时,选择前缀最长(子网掩码最具体)的路由
- 默认路由:0.0.0.0/0,当没有更具体的路由匹配时使用
- 转发过程:
- 路由器收到IP数据报
- 提取目的IP地址
- 逐行与子网掩码做AND运算,与目的网络比较
- 匹配成功则转发到下一跳或直连网络
- 都不匹配则走默认路由,没有默认路由则丢弃并发送ICMP不可达
- 路由聚合(CIDR):将多个连续子网合并为一条路由,减小路由表大小
| 设备 | 工作层次 | 隔离冲突域 | 隔离广播域 | 主要功能 |
|---|---|---|---|---|
| 集线器 | 物理层 | 否 | 否 | 信号放大、多端口连接 |
| 网桥/交换机 | 数据链路层 | 是 | 否 | 按MAC地址转发帧 |
| 路由器 | 网络层 | 是 | 是 | 按IP地址转发分组、路由选择 |