网络层(二)

官方信息技术老师·13 页·深入(追求细节与边界)·0 次浏览·3 天前
IP 编址子网划分路由算法SDN

网络层(二)

看清 IP 编址、子网切分、路由选路与 SDN 的原理与边界

按 空格/→ 演示下一步

1 / 13 页

全部页面点击任意一页,跳回舞台从这页播放

IP 编址子网划分路由算法SDN

网络层(二)

看清 IP 编址、子网切分、路由选路与 SDN 的原理与边界

1第 1 页 · 网络层(二)

路由信息协议RIP

上页讲到路由器靠路由表转发,但表里的路径从哪来?小网络里,路由器之间互相"闲聊"——每30秒把自己知道的全部路径告诉邻居,几次下来全网就拼出大致地图。这就是RIP。

距离矢量算法
基于Bellman-Ford,只和邻居交换"距离+方向",不掌握全网拓扑
跳数作度量
每经过一台路由器计1跳,最大15跳;16跳即标记为不可达
周期全量广播
每30秒通过UDP 520端口向邻居发送完整路由表,无变化也照发
慢收敛与环路
拓扑变化需多轮才能稳定,存在count-to-infinity风险,需配合水平分割/毒性反转缓解
小镇邮差互相问路对应 →RIP距离矢量机制

邮差只问邻居"去X多久",没人拿全图;反复互问才拼出大致路径——"局部最优"≠"全局最优"

Dx=minyN(x){Dy+c(y,x)}D_x = \min_{y \in N(x)} \{ D_y + c(y,x) \}
2第 2 页 · 路由信息协议RIP

RIP为什么衰落?

上一页我们认识了RIP:靠'跳数'做度量、最多15跳、距离矢量算法。但网络规模越来越大,RIP开始力不从心——它到底哪里撑不住了?

跳数上限15
度量只有跳数,最多15跳,无法描述大型网络,也不能反映带宽、时延等链路质量
收敛慢,计数到无穷
距离矢量算法本质缺陷:拓扑变化后需数分钟收敛,期间可能产生路由环路,跳数被反复累加至16
30秒全表广播
无论网络是否变化,每30秒向邻居推送整张路由表,规模一大就吞噬带宽
RIPv1不支持VLSM
早期版本只支持有类编址,无法做变长子网掩码;RIPv2补齐但为时已晚
缺乏强认证机制
RIPv1明文传输路由信息无认证;RIPv2仅加简单口令,面对伪造路由仍很脆弱
数路口找朋友对应 →RIP度量与收敛

只数路口不知哪条路快;超15个路口就放弃;朋友搬了家你好久才听说

3第 3 页 · RIP为什么衰落?

链路状态路由选择LS

上一页 RIP 暴露了『只信邻居』的代价——计数到无穷、收敛慢。链路状态路由换思路:让每个节点自己拿到整张网络地图,再各自跑最短路算法。复杂度上去了,但换来确定性与快速收敛。

全局拓扑图
每台路由器维护一份完整AS拓扑图,包含所有节点和直连链路代价
可靠洪泛机制
每台路由器把自己链路状态包可靠洪泛(确认+重传)到AS内所有节点,全网状态保持一致
Dijkstra最短路
以本节点为根,在拓扑图上跑SPF算法,构造到所有目的网络的最短路径树
收敛快且无环路
任意链路变化立即触发新LSP洪泛,本地重算,避免RIP式『计数到无穷』
典型实现OSPF/IS-IS
OSPF用于互联网,IS-IS用于运营商骨干网,二者都是链路状态思想的工程化
全员拼出一张完整地图对应 →链路状态路由的建图与算路

每台路由器提供自己那一块,全网拼出同一张地图,再各自用GPS规划最优路线

dx(y)=minv{c(x,v)+dv(y)}d_x(y)=\min_{v}\{c(x,v)+d_v(y)\}
4第 4 页 · 链路状态路由选择LS

单区域OSPF

上回我们聊过链路状态路由的核心思想——每个节点都掌握全网拓扑,再各自算出最短路。这一页看这种思想最经典的落地:单区域 OSPF,企业网里出场率最高的一种配置。

OSPF 是什么
基于链路状态算法的内部网关协议(IGP),用「代价」作度量,比 RIP 更适合中大型网络
Area 0 与 LSDB 一致
所有路由器同属骨干区域 Area 0,彼此的链路状态数据库(LSDB)必须完全相同
邻居→同步→计算→装表
Hello 建邻 → LSA 泛洪同步 LSDB → 每台路由器独立跑 Dijkstra → 生成路由表
代价的计算方式
默认参考带宽 100 Mbps 除以接口带宽;100 M 链路代价 1,1 G 链路默认也是 1
旅行团交换各自走过的那段路况对应 →单区域 OSPF 的 LSA 泛洪

每人只贡献自己那一段,汇总成完整路网图,再各自算最短路线

Cost=参考带宽接口带宽\text{Cost} = \dfrac{\text{参考带宽}}{\text{接口带宽}}
5第 5 页 · 单区域OSPF

无类域间路由 CIDR

前面几页都在讲路由算法怎么算路径,但路径算得再好,前提也是 IP 地址已经分好。地址本身怎么分才能既不浪费、又便于骨干网聚合?CIDR 给出了答案——彻底抛弃 A/B/C 的硬边界。

斜线记法 /n
前缀长度直接写在 IP 后面,告别 A/B/C 的硬性边界
可变长子网掩码
同一组织内可混用不同长度的子网,按需分配地址
路由聚合(超网)
连续前缀合并为一条路由,路由表条目数大幅下降
分层地址分配
IANA→RIR→ISP→用户按块逐级下发,避免碎片化
邮政编码合并投递段对应 →CIDR 路由聚合

老邮编按省市僵化划分;新邮编可跨区合并投递,相邻前缀合并为同一条路由

$$\text{前缀}/n:\quad N_{\text{addr}}=2^{32-n}$$
6第 6 页 · 无类域间路由 CIDR

网络地址翻译 NAT

你家路由器背后连着手机、电脑、电视、智能音箱……几十台设备,对外却只占一个公网 IP。这件事的幕后功臣就是 NAT——一种让私网主机共用公网身份的网络层机制。

核心思想
内网用私网 IP 互通;跨网访问时由 NAT 设备把 (私网IP, 端口) 换成 (公网IP, 端口)
三种基本类型
静态 NAT 一对一固定映射;动态 NAT 从公网池临时分配;NAPT 多私网共享一公网
端口级复用
NAPT 用端口号区分不同内网主机,单个公网 IP 可承载约 6.5 万个并发会话
典型部署
家用/SOHO 路由器几乎都是 NAPT;运营商侧还有 CGN(Carrier-Grade NAT)
代价与边界
违反端到端原则,外网无法主动连入;P2P/VoIP/游戏需 NAT 穿透(STUN/TURN/ICE)
公司前台代收快递对应 →NAPT 端口映射

整个公司共用一个门牌号,前台靠「员工姓名+工位号」区分每件快递真正收件人

NAPT 容量=216×公网 IP 数\text{NAPT 容量} = 2^{16} \times \text{公网 IP 数}
7第 7 页 · 网络地址翻译 NAT

互联网控制消息协议 ICMP

上一页用 NAT 让私网共用一个公网 IP。但配置再正确,数据包也可能『走丢』——主机不在线、TTL 归零、端口无人监听。网络怎么告诉源端『为什么失败』?这就轮到 ICMP。

定义与定位
网络层的差错与控制报文协议,封装在 IP 数据报中,IP 协议号 = 1,IP 用它通报错误与状态
报文结构
四字段:类型、代码、校验和、数据;差错报文的数据含原 IP 首部+前 8 字节以便诊断
报文分类
差错报文(目的不可达、超时、参数错)与查询/信息报文(回显请求、时间戳);查询类须成对使用
Ping 原理
源发类型 8(回显请求),目标回类型 0(回显应答),ICMP 头里塞上时间戳,即可算往返时延
路由追踪原理
traceroute 把 TTL 从 1 递增发包,沿途路由器因 TTL=0 回类型 11(超时)
快递公司的退回通知对应 →ICMP 差错报文

快递员写明『地址错/拒收』退回;IP 包到不了时,沿途设备生成 ICMP 说明原因送回源端

8第 8 页 · 互联网控制消息协议 ICMP

地址解析协议 ARP

上一节讲到 ICMP 能报错,但 IP 包要真正送达还得过链路层这一关——而链路层只认 MAC 不认 IP。这中间的'翻译官'就是 ARP。

ARP 的任务
把同一局域网内的目标 IP 翻译成对应的 MAC 地址
广播问,单播答
ARP 请求广播给所有主机,仅目标主机单播回复 MAC
ARP 缓存表
近期映射结果保留在本地,避免每次都广播
仅限本地链路
ARP 跨不过路由器,跨网段解析由下一跳路由器接力
教室里点名找人对应 →ARP 广播询问

你只知道名字(IP),不知道座位号(MAC);老师喊'谁是谁?举手'——所有人听到,只有本人答

9第 9 页 · 地址解析协议 ARP

拥塞控制

想象这个画面:四条千兆专线同时向一条百兆出口灌数据,每秒涌入上万个分组,路由器的缓冲区瞬间撑爆——这就是拥塞。

成因
多个输入流汇聚速率超过输出链路带宽,路由器队列溢出丢包
拥塞崩溃
丢包触发重传,重传加剧拥塞,吞吐陡降到接近零
开环:事前预防
漏桶、令牌桶、流量整形与准入控制,从源头限速
闭环:事中反馈
路由器监测队列长度,弃尾或 RED/ECN 标记向源端报警
knee 与 cliff
knee 是吞吐拐点,cliff 是崩溃点;目标工作于 knee 附近
高速匝道汇入主路对应 →网络拥塞

多车道并入少车道→车流堆积→加塞变道越发拥堵,对应丢包引发重传

10第 10 页 · 拥塞控制

流量整形

上一页我们讲了拥塞控制——网络堵了再想办法疏导。但更优雅的思路是出门前就控制好速率,让数据流像被整过形一样平滑送入网络。这正是流量整形的出发点。

核心思想
在网络入口处主动调节数据发送速率,平滑突发流量
漏桶算法
不管上游来多猛,出口恒定速率;强制匀速,但不利用空闲带宽
令牌桶算法
按 r 速率往桶里放令牌,攒下的令牌允许一定程度的突发
整形 vs 监管
整形超额就缓存等待;监管超额直接丢弃。整形对应用更友好
典型场景
VoIP、在线视频等需要平稳带宽、怕丢包的实时业务
自来水公司的蓄水池对应 →漏桶/令牌桶

上游来水时大时小(突发流量),下游按固定流量放水整形;桶里多余的暂存,对应缓存队列

11第 11 页 · 流量整形

本节要点

串联本节知识点,给出记忆锚点与易错提醒

本节要点
串联本节知识点,给出记忆锚点与易错提醒
12第 12 页 · 本节要点

课后思考

先合上书,试着把答案写下来;再点开参考答案对照思路——重点不是结论对不对,而是你的思考路径到哪一步。

1RIP把跳数上限设为15,而OSPF却没有这个限制——这是设计妥协还是协议本质决定的?

参考答案协议本质占主导。距离向量的"计数到无穷"问题需要靠上限截断来兜底;OSPF是链路状态,没有这个病——但代价是每个节点都要维护全网拓扑。

2一个公司500台主机通过NAT共用1个公网IP向外发请求,运营商如何区分这些会话?如果公司想对外提供Web服务,NAT要做什么调整?

参考答案向外时靠传输层端口号做SNAT多路复用;向内提供Web服务则需静态端口映射(端口转发),把外网对固定端口的访问转给内网特定主机。

3Dijkstra算法是OSPF的理论基石,但它要求每个路由器掌握全网拓扑。当网络扩展到数十万节点时,这套假设会从哪些点上崩塌?

参考答案内存(拓扑库大小)、CPU(每次变化重算SPF)、带宽(LSA泛洪)三个维度同时承压。所以OSPF才引入分层(区域),把"全网"缩到"区域内"。

13第 13 页 · 课后思考