4.1 网络层的功能(16)

4.2 IPv4(300)

4.3 IPv6(36)

4.4 路由算法与路由协议(240)

4.5 IP多播(18)

4.6 移动IP(26)

4.7 网络层设备(20)

image-20260615092347030

前言

image-20260615091953867

image-20260615092118048

4.1 网络层的功能

image-20260615092606181

OSI参考模型主张在网络层使用:面向连接的虚电路服务

TCP/IP体系结构的网络层提供的是:无连接的数据报服务

​ 即通信的可靠性由高一级的传输层负责。

​ 这样子可以使得网络中的路由器做得简单,价格低廉。

① 异构网络互连

网络互连:用中继系统对网络进行互连。

异构网络互连:对 物理层 / 数据链路层 / 网络层 不同的网络进行互连。

中继系统:

  • 物理层中继系统:转发器,集线器
  • 数据链路层中继系统:网桥或交换机
  • 网络层中继系统:路由器
  • 网络层以上的中继系统:网关

微信图片_20260620153916_1338_2

② 路由与转发

路由表的核心功能:==路由选择== 和 ==分组转发==

③ 网络层提供的两种服务

虚电路:

  • 在网络层建立一条 逻辑链接(而非物理链接,所以也无需分配带宽)

  • 虚电路建立 – 数据传输 – 虚电路释放

  • 仅在建立节点使用 完整的源地址目的地址,之后分组的首部只需要携带 虚电路号

  • 虚电路也需要路由选择的,只不过是同一个虚电路的分组按照同一个路由器转发。

  • 虚电路的“虚”:链路不是专用的,可被多条虚电路共享(不是共用,是虚路共享,不会有冲突)

  • 虚电路分为:永久性虚电路,交换型虚电路(临时连接)

数据报:

  • 发送分组前无需连接。
  • 分组仅占用当前链路的资源。

微信图片_20260620153915_1337_2

④ SDN(Sofeware Define Network)

传统的网络层:

  • 数据平面:负责分组转发
  • 控制平面:负责路由选择

SDN网络架构的网络层:

  • 网络的控制功能由:一个远程控制器完成(实现路由选择,由一个远程的服务器来计算和分发流表给网络设备)
  • 路由器仅保留数据平面的功能(分组转发)
  • 原先的转发表 → 流表(SDN的转发表)
  • 控制协议:OpenFlow

SDN还提供的编程接口:(可编程)

  • 北向接口:向上层开发者提供标准化API
  • 南向接口:实现控制平面和数据平面的双向通信(通过OpenFlow协议)
  • 东西向接口:用于控制器集群的内部通信

SDN的优点:①集中控制与分布转发。②灵活可编程性。

SDN的缺点:①安全风险。②性能瓶颈

4.2 IPv4

① IPv4分组

协议字段:网络协议IP

版本字段:v4,v6

网际层的协议有:IP协议,ARP协议,ICMP协议

image-20260615093704742

IP数据报(IP分组)的格式

==首部 / (IP分组头)==(固定部分20bit+可变部分0-40bit) + ==数据部分==

==① 首部固定部分的第一行==

【版本+首部长度+区分服务+总长度(指的是整个IP数据报的总长度)】

  • 版本:IP协议的版本(4或6)
  • 总长度:占16bit,所以IP数据报的最大长度是2^16 -1=65535B
    • 因为以太网MTU=1500B,所以实际上在以太网中最大1480B(20B是首部)
  • IP数据报首部包含3个与长度有关的字段:首部长度,总长度,片偏移。它们的基本单位分别为4B,1B,8B。

image-20260615095809655

==② 首部固定部分的第二行==

(发送方)分片

实际传输过程中,“数据部分”的长度会受到下一段链路的最短/最长帧长限制,46-1500。

  • MTU:一个链路层数据帧承载的最大数据量称为最大传送单元MTU。eg 以太网的MTU=1500

  • 所以:如果一个IP数据报的总长度超出了下一段链路的MTU,就需要分片。

  • 分片:分片收到 标志字段控制:

    • DF=0,表示数据报允许被分片
    • MF=0,表示这是最后一个分片
    • 除了最后一个分片外,其余分片长度必须是8B的整数倍。
  • 分片发生在:源主机,或者任何一个路由器

  • 重组发生在:目的主机

image-20260615100501501

image-20260615100705894

(接收方)分片整理

目的主机接收到的分片可能是乱序的,需要整理排序(**==通过“标识”,“标志”,“片偏移”字段==**)

  • 只有目的主机才能对分片重组(路由器不行)
  • 因为首部的 “片偏移” 字段是以 8B 为单位,因此,*除了最后一个分片外,其他每个分片的数据部分必须是8B的整数倍。

image-20260615101853822

image-20260615101733351

==③ 首部固定部分的第三行==

生存时间TTL:IP数据报的生存时间TTL。每经过一个路由器,TTL-1。

  • 如果TTL=0,就丢弃分组,并向源主机发送ICMP报文!

首部检验和:每个路由器仅校验首部,不校验数据部分。

image-20260615102823021

首部固定部分的第四五行

IP地址:源地址,目的地址(见下节)

image-20260615102856396

回顾

image-20260615103144792

② IP地址

==32位(bit) 【=网络号+主机号】==

(为方便阅读)==用十进制表示为4个部分,每个部分表示8bit。==

(IP地址资源由ICANN进行有偿分配,32位的地址最多可以分配2^32个。)

image-20260615102856396

1. 最初的IP地址 分类/编写方案

==网络号不定长,但【前面的数字+网络号】定长为8位==

A类(1-126)

  • (前八位可表示的:网络号数量是2^7-2=126,减了全0(DHCP特殊用途)和127的情况)(区别:主机号-2才是因为全0和全1)
  • 前面8bit,主机号32-8bit

B类(128-191)

  • (前八位可表示的:网络号数量是2^6=64)(从128开始而不是127,全1的127是另外的情况)
  • 前面16bit,主机号32-16bit

C类(192-223)

  • (前八位可表示的:网络号数量是2^5=32)
  • 前面24bit,后面32-24bit

D类(224-239)

  • (前八位可表示的:网络号数量是2^4=16)
  • 多播地址

E类(240-255)

  • (前八位可表示的:网络号数量是2^3=8)(
  • (0到7一共八位是编码范围,8是主机号的编码开始,所以网络号一共有2^8-2种编码)

image-20260615112610966

网络类别 最大可用网络数 第一个可用网络号 最后一个可用网络号 每个网络中的最大主机数
A 2^7-2? 1 126 2^24 - 2?
B 2^14? 128.0 191.255 2^16 - 2?
C 2^21? 192.0.0 223.255.255 2^8 - 2?

重点内容:

  • ① 在那个年代,要求每台主机,每个路由器接口被分配的IP地址都是全球唯一的。
  • ② 路由器和路由器连接的接口可以不分配IP地址,但==路由器和主机节点连接的接口== 必须分配IP地址
  • ③ 从属于==同一个网络的所有主机,路由器接口的IP地址 “网络号” 都相同。==
  • ④ 当一台新主机接入网络时,需要给分配一个IP地址,并配置 ==“默认网关”== 。

多播,单播,==广播地址==:

  • 单播地址分配给一个主机,
  • 多播地址分配给一组(就像是qq号和qq群号的关系),
  • 广播地址,主机号全1。

其他:

  • IP地址表示的是主机号,而不是主机本身。
  • IP地址是逻辑地址,与硬件地址(MAC地址)无关。

2. IP地址传输过程

通过根据默认网关的地址 + ARP协议可以查询到数据链路层的MAC地址,

在数据链路层,有了MAC地址就可以把数据传输到下一个路由器/交换机/。

image-20260615113956778

image-20260615114019932

image-20260615114118890

3. 一些特殊用途的IP地址

Nbit主机号,最多支持2^N -2台主机/路由器

Nbit子网号,最多支持2^N个子网

image-20260615125946898

③ 子网划分,子网掩码

画图训练

image-20260616115250584

image-20260616131845159

a.子网划分

==主机号分成:子网号+主机号==

(like一个学校多个校区,一个校区一个子网)

b.子网掩码

前提:网络号 和 子网号完全相同的IP地址才属于**==同一个(子)网络==**

子网掩码 和 IP地址(自己的/对面的) **==相与==**(与运算:1 1→1,别的都是0),

  • 得到:网络号+子网号(call:网络前缀)

子网掩码的另一种记法

(17的意思是前面17个比特全1,后面的全0)

(这种方法一看就知道使用了子网掩码)

image-20260616131640395

c.默认子网掩码和默认路由

默认子网掩码

如果一个网络(ABC类)内部还没有进行子网划分,那么可以 将对应此网络的转发表项设置为 “默认子网掩码”

  • A类默认 255.0.0.0
  • B类默认 255.255.0.0
  • C类默认 255.255.255.0

默认路由

  • 目的网络号全0,子网掩码全0。

  • 路由器没找到别的转发口时,也肯定在(转发往上一级的)默认路由器转发出去的。

⭐回顾

image-20260616115235355

⭐总结:主机 发送 IP数据报过程

  • ① 判断目的主机和本机是否属于同一个网络。
    • A.检查本机IP地址和目的IP地址的网络前缀是否相同(通过IP地址和本机子网掩码 “逐位与”)
    • B.若 网络前缀相同,说明目的主机和本机属于同一个网络。若 网络前缀不同,说明不属于同一网络。
  • ② 将IP数据报封装成MAC帧并发送到链路上。
    • A.如果目的主机与本机 属于 同一个网络,就通过ARP协议找到 目的主机 的MAC地址,再将IP数据报封装成帧,并将帧发送给目的主机。(帧→默认网关→……→目的主机)
    • B.如果目的主机与本机 不属于 同一个网络,就通过ARP协议 找到 默认网关 的MAC地址,再将IP数据报封装成帧,并将帧发送给网关。(帧→目的主机

⭐总结:路由器 转发 IP数据报过程

  • ① 路由器的某一个接口收到IP数据报。(路由器收到帧,把首部尾部的控制信息拆除,得到IP数据报内容,交给路由器的网络层)
  • ② 对IP数据报首部进行校验,并从中找到目的IP地址。
  • ③ 查 “转发表”
    • 转发表的表项包含 <目的网络号,子网掩码,转发接口>
    • 检查目的IP地址与每个表项能否匹配(通过目的IP地址,子网掩码的逐位与,匹配表项中的目的网络号),从而找到转发接口。
    • 注:至少 “默认路由” 表项是一定可以匹配成功的。
  • ④ 转发
    • 根据查转发表的结果,将IP数据报从匹配的接口转发出去。
    • 注:如果匹配的“转发接口”和该IP数据报的入口相同(即属于同一个局域网),就不用再把IP数据报转发出去。

image-20260616125752945

④ CIDR(无分类编址)

为什么要提出CIDR:互联网在民用领域受到欢迎,由于每台主机都至少要消耗一个全球唯一的IP地址,IP地址资源越来越少

image-20260617174029912

传统的IP地址的缺陷

C类地址:网络号长,主机号短。一个IP地址可供给使用的主机少(不适合给大单位使用)

A类地址:网络号短,主机号长。一个IP地址可供多个主机使用(可以给大单位使用,但是容易造成浪费。)(有限的IP地址资源会很快耗尽)

image-20260617174443732

无分类编址CIDR

==网络前缀(的子网部分), 可变长!==

不再区分网络类别,用网络前缀表示网络部分。

image-20260617174702743

定长子网,变长子网

一个单位获得CIDR地址块后,可以再划分多个子网。

  • 定长子网划分:nbit主机号前面用kbit作为子网号。
    • 缺点:每个子网都一样大,不够灵活,浪费IP地址资源。(比如不同学校校区主机数不一样多)
  • 变长子网划分:子网号长度不固定→每个子网包含的IP地址块大小不同。

image-20260617175536739

image-20260617181951439

image-20260617180959210

image-20260617180216036

例题image-20260617180739909

image-20260617181438028

image-20260617181931972

回顾

image-20260617182117683

⑤ 路由聚合

配套CIDR的东西

路由聚合(构成超网)

  • 将几条路由表项聚合成一条,(原本记录ALL下一层表项的子网IP地址),只记录一个下层路由器的IP地址就行。(因为转发接口,网络前缀相同)
  • 优点:提高转发表查询速度
  • 缺点:路由聚合可能会引入额外的无效地址(在终点路由器才能被发现)

image-20260617183159715

==最长前缀匹配原则==

when大局域网和小局域网不止一个接口。

从拥有 最长网络前缀匹配长度的接口 转发出去。

  • 优先级:特定主机路由(前缀32位)>普通路由器>默认路由器(前缀长度为0)

image-20260617183525701

image-20260617183714506

⭐主机发送IP数据过程

使用了CIDR和路由聚合后, 和之前完全相同

image-20260617183835950

⭐路由器转发一个IP数据报的过程

(使用了CIDR和路由聚合后),查转发表的部分稍有改变:当IP地址匹配多个表项时,选取匹配长度最长的。

image-20260617184038988

⭐过程再模拟

image-20260617185323613

⑥ NAT 网络地址转换

image-20260617192544487

端口号

主机内部进程和进程之间的接口。

进程和进程之间的通信:IP地址 + 端口号

image-20260617193058782

image-20260617193115208

NAT:进一步缓解IP地址不够用的问题

如果==每台主机一个IP地址==:2^32≈32亿,显然不够用

如果==一个局域网一个IP地址 + 一个端口号==(实现定位):好像可以

原来的IP地址:**==外网IP==**(全球IP地址)

私有IP地址:**==内网IP==**(只要求局域网唯一,不要求全球唯一)(分配给局域网内部的节点)

三个私有IP地址块

  • 10.0.0.0/8(相当于1个A类网络)
  • 172.16.0.0/12(相当于16个连续的B类网络)
  • 192.168.0.0/16(相当于256个连续的C类网络

注:所有路由器对目的地址为私有地址的数据报一律不转发(所以目的地址得填公共IP)

NAT路由器(普通的路由器仅包含网络层及以下的功能,不包括传输层的功能)

  • 转发IP数据报时,进行内网IP和端口号、外围IP和端口号的相互转换
  • NAT表记录的信息:<内网IP:端口号 | 外围IP:端口号>
    • 【传输数据:IP首部(内含源/目标IP),TCP首部(内含源/目标端口),数据部分】

image-20260617195919151

image-20260617200228891

回顾

image-20260617200745887

⑦ ARP 地址解析协议

(当主机需要发送信息,但ARP表没有目的IP与MAC地址的映射关系时)

==在一个局域网的 内部,==

==查询一个IP地址对应的 MAC地址==

image-20260617201354846

回顾

  • MAC地址(48bit),是网络适配器出厂时分配好的,全球唯一
  • 一台主机至少有一个网络适配器(网卡),因此主机至少有一个MAC地址
  • 一台路由器有多个转发接口,每一个接口背后都是一个网卡,因此网络适配器有多个MAC地址。

==ARP表==

  • 记录 <IP地址,MAC地址> 之间的映射关系
  • ARP响应后,双方都可以把对面的 IP地址和MAC地址记录在APR表。
  • 需要定期更新(表项有保质期,超时删除表项)

==ARP过程==

①ARP请求分组

  • 内容:我是谁(自己的IP地址,MAC地址),我想找谁(对方的IP地址)
  • 把 APR请求分组 封装进自己的MAC帧(帧目的地址全1,源地址=Y)(所有接口都收得到)【广播帧】

②ARP响应分组

  • 内容:我的IP地址是Z,我的MAC地址是V
  • 把 ARP响应分组 封装进自己的MAC帧(帧目的地址=Y,源地址=V)【单播帧】(碰到集线器就不算单播了哈哈哈)

拓展

image-20260617203000555

image-20260617203048225

⑧ DHCP 动态主机配置协议

提供了即插即用的联网机制

==给刚接入网络的主机动态分配IP地址,配置默认网关,子网掩码==

DHCP是 应用层协议!

image-20260617203319695

image-20260617203410540

DHCP服务器

DHCP服务器的IP地址和子网的路由器IP地址相同

DHCP服务器负责管理子网内的所有IP地址。

新主机连进局域网,会请求DHCP服务器分配【IP地址,配置默认网关,子网掩码】给自己。

①DISCOVER:其他主机能够接收,到达主机传输层看到目的端口号,才发现不匹配,丢弃。

②OFFER:DHCP服务器 OFFER 一个IP地址给新主机【MAC帧是单播帧,精准到达新主机】

③REQUEST:新主机告诉服务器我接受IP地址(此时还没有IP地址)

  • 因为大型网络可能有多台服务器,多台服务器都进行第②步。所以新节点MAC帧需广播所有人,我最终选用的是服务器的IP地址。

image-20260617204132068

DHCP服务器分配给DHCP客户的IP地址是临时的

  • 是一段租用期
  • 租用期超过50%,DHCP客户发送DHCP请求报文(单播),请求更新租用期
  • 租用期超过87.5%,DHCP客户发送DHCP请求报文(广播),请求更新租用期

回顾

image-20260617203126783

⑨ ICMP 网际控制层协议

ICMP属于网络层,ICMP报文封装在IP数据报中。

==让主机和路由器互相报告网络中发生的差错和异常情况==

image-20260617210245670

image-20260617210414261

image-20260617210817375

ICMP报文的常见类型

a.差错报告报文

  • 终点不可达
    • 路由器告诉发送方:目的IP地址不可到达
    • 目的主机告诉发送方:目的端口号不存在
  • 时间超过
    • 路由器告诉发送方:IP数据报的TTL=0,被丢弃
    • 目的主机告诉发送方:IP数据报被分片了,规定时间没到齐,被丢弃
  • 参数问题
    • 告诉发送方:IP数据报首部不合法或者首部校验出错
  • 改变路由(重定向)
    • 路由器告诉发送方:下次用另一台路由器转发,路径更短

b.询问报文

  • 回送请求(Echo Request):A→B:在吗?回答我!

  • 回送回答(Echo Reply):B→A:在!

  • 时间戳请求:A→B:我这边现在的时间是xxx,你那边现在几点了?

  • 时间戳回答:B→A:我收到请求的时间是yyy,我发出回答的时间是zzz

  • (eg电脑开机自动校准时间)

不用反馈ICMP差错报告报文的情况

  • 若携带ICMP差错报告报文的IP数据报出错,不再反馈ICMP差错
  • 若IP数据报被分片,则无论几个分片出错,都只反馈一次ICMP差错
  • 若IP数据报的目的地址为多播地址,不反馈ICMP差错
  • 若IP数据报的源地址为特殊地址(如 127.x.x.x,0.0.0.0),即使发生IP数据报异常也不反馈ICMP差错

ICMP经典应用

  • 分组网间探测ping 基于 回送请求报文,回送回答报文 实现功能
  • 路由跟踪traceroute(tracert)基于 时间超过报文 实现功能

⑩ 其他

每经过一个路由器时候,MAC源地址目的地址都会重新封装/改变,但是目的IP地址不变。

子网重叠:就是A地址是C地址的子网,A地址重叠了C地址的网络前缀。或者是有交集。

子网的判断重叠,子网划分的题:画图⭐

若一台主机有两个或两个以上的IP地址,说明这台主机属于两个或两个以上的网络。(eg:WiFi+宽带)

在一条点对点链路中,只需要两个主机IP地址,一个网络地址,和一个广播地址的4种组合,主机号只需2位。(子网掩码应设定为255.255.255.254)

4.3 IPv6

真正解决了IP地址资源问题

IPv4地址:32位

IPv6地址:128位

如何表示这么多位的IPv6地址?

IPv4:点分十进制记法:8bit为一段,一共4段。

IPv6:冒号十六进制记法:16bit为一段,段间以冒号分割,一共8个段。(所以一共有32个十六进制数)

  • 压缩记法:
  • ① 去除每一个分段的前导0。
  • ② 双冒号替代连续出现的多个0(一个地址只能用一次)

IPv6地址资源分配

nbit前缀 + 128-n bit接口标识符

image-20260620170417822

IPv6支持即插即用(IP地址自动配置)(通常把主机主机自身48位AMC地址作为接口标识符,唯一)(IPv4不支持即插即用)

IPv6可以不使用DHCP,也可以使用,安全性高。

image-20260620170754394

IPv6地址的分类

任播地址:任播的终点是一组计算机,数据报只会交付其中的一台计算机,通常是距离最近的一台计算机。(eg多个DNS服务器共享一个任播地址)

地址类型:

  • ① 未指明地址,
  • ② 环回地址,
  • ③ 多播地址,这类地址占IPv6的1/256
  • ④ 本地链路单播地址,
  • ⑤ 全球单播地址

image-20260620171403230

回顾

image-20260620171935271

IPv6的特点:

  • 地址空间大:为IPv4的2^96倍

  • 可划分多个层次

  • 支持即插即用

  • IPv6只有源主机才能分片(路由器不行)

  • IPv6首部长度固定40B

  • 减少了首部字段数量,仅有8个字段

  • 取消了首部检验和字段,不提供差错检验(传输层提供)

  • 首部格式灵活,有可选的扩展首部

  • 改进的选项放在有效载荷(有效数据)中。而IPv4将其放在首部的可变部分中。

  • 允许协议继续扩充

  • 支持资源的预分配

  • 增加了安全性,身份鉴别由扩展首部提供。

IPv6数据报的基本首部

IPv6数据报由 ==基本首部== 和 ==有效载荷== 组成。

微信图片_20260620173607_1340_2

微信图片_20260620173606_1339_2

有效载荷长度:类似IPv4的“总长度”,也是16bit。

下一个首部:类似IPv4的协议字段。

跳数限制:类似IPv4的TTL。

(通信量类:区分不同IPv6数据报的类别或者优先级

(流编号:用于实时视频传输等,保证传输质量。

从IPv4向IPv6过渡

双协议栈:一台主机同时安装IPv4和IPv6两个协议栈,分别配置一个IPv4地址和一个IPv6地址。

隧道技术:当IPv6数据报需要接入IPv4网络时,将其封装为IPv4数据报的数据部分,使原IPv6数据报如同在IPv4网络的隧道传输。

4.4 路由算法和路由协议

① 路由算法

image-20260621093557691

1. 路由算法和路由协议之间的关系

==路由协议==(规定路由器之间如何通信,以获取路由算法所需的信息)

​ →输入进==路由算法==(目标:找到转发IP分组(源路由器到目的路由器)的最短路径)

​ →生成==路由表==(得到最佳转发路径)

image-20260621094054220

2. 路由算法的分类

① 静态路由算法:手工配置每一条路由(只适合小型网络)

② ss动态路由算法:路由器根据 网络流量负载 和 拓朴结构 来动态调整自身的路由表

  • 距离-向量路由算法(RIP协议基于此算法),
  • 链路状态路由算法(OSFP协议基于此算法),
  • 路径-向量路由算法(BGP协议基于此算法)(op)

a.距离-向量路由算法

算法特点:不必了解完整的网络拓扑结构,

只需要关注:你到相邻的节点,相邻节点到目的节点之间的最短距离,

最后使用Ford算法算出最短路径。

  • X到net1的距离:min{ X和邻居之间的距离 + Vi到net1的最短距离 }

image-20260621095116647

  • 向量:如果有多个网络,就有到多个目的网络的多个最短距离/向量。

image-20260621095337103

image-20260621095657131

b.链路状态路由算法

算法特点:让路由器弄明白完整的网络拓扑结构,就可以使用Djsk算法,找到最短路径。

回顾

image-20260621100549904

② 分层次的路由协议

思考:RIP,OSPF是否适用全世界范围的路由器?

RIP路由协议(基于距离向量路由算法),网络数量越多,距离向量越大。

OSPF路由协议(基于链路状态路由算法),要求每一台路由器都要建立整个网络的拓扑图

将全世界的网络划分为多个相互独立的自治系统AS。(唯一的编号ASN)

AS的管理单位有权决定在本AS内,使用何种内部路由协议(RIP,OSPF..)

每一个AS至少有一台AS边界路由器,与其他AS相连。

各个边界路由器之间,使用统一的外部路由协议。

AS之间的路由选择也称 域间路由选择,AS内部的路由选择称为 域内路由选择。

一个AS通常包含一个或多个CIDR地址块。

image-20260621101726553

路由协议分为:

  • 内部网关协议 IGP(内部路由协议):用于AS内部的路由选择(如RIP,OSPF)
  • 外部网关协议 EGP(外部路由协议):用于AS之间的路由选择(如BGP)

image-20260621101946388

回顾

image-20260621102011963

③ RIP 路由信息协议

RIP属于应用层,它使用UDP传送数据(端口520)

image-20260621102416714

RIP协议在协议栈中的位置

image-20260621102618176

RIP的规定

RIP定义路径长度:

​ ①RIP使用跳数/距离来衡量到达目的网络的距离。(越少越好)

​ 注:规定路由器到直连网络的距离为1。

​ ②RIP合法路径距离≤15。(可见RIP只适合小型自治系统)

RIP定义路由器格式:

​ ①每一个路由器都要维护自己的路由表。

​ 路由表项 :<目的网络N,距离d,下一条路由器地址X>

​ ②每一个路由器都要维护它自身到其他每个目的网络的距离记录,即距离向量。

运行RIP的路由器 之间 如何交换必要信息?

who:直接相邻的路由器

what:发送自己的完整路由表(就是距离向量)

when:固定时间间隔(30s)

(为了加快逐步生成的路由表,可以引入 触发更新:当路由器路由表发送变化时,迅速把自己的路由表发送给邻居)

image-20260621103904310

RIP的工作过程示例1(从路由器启动到收敛)

此处规定使用的协议是RIP协议

RIP的工作过程

image-20260621115321767

初始:各路由器同时开机,构建初始路由表

  • 路由器刚开始工作时,只知道自己到直接相连的几个网络的距离为1

image-20260621115830858

0时刻:各路由器向邻居发送RIP报文(包含完整路由表),之后更新自己的路由信息

  • 根据收到别的路由器的报文,修改并更新自己的路由表
  • 让:发来的路由表距离都+1,目的地址改为发送方X

image-20260621120338764

image-20260621120651135

30时刻:各路由器向邻居发送RIP报文(包含完整路由表),更新自己的路由器信息

  • 如果原来的路由表已经有目的网络N了,且下一跳路由器地址是X:替换原来。**==(老路径以最新的为准)==**
  • 如果原来的路由表已经有目的网络N了,且下一跳路由器地址不是X:
    • 如果收到的距离更小,就进行更新,反之不更新**==(如果新路径更短,就更新)==**
    • 如果距离一样,同时写入(实现负载均衡转发)

image-20260621121424906

60时刻:各路由器向邻居发送RIP报文(包含完整路由表),更新自己的路由器信息

image-20260621121610114

60时刻后,没有路由的信息需要更新,RIP已收敛。

RIP的工作过程示例2(动态适应网络拓扑变化)

100时刻:R1和R4之间新建一条链路

120时刻:各路由器向邻居发送RIP报文,更新自己的路由器信息

  • (老路径更短了就更新)(新路径更短也更新)

image-20260621122520545

RIP的工作过程示例3(RIP的优缺点)

120时刻:路由器被破坏

如果**==在180时刻(RIP默认超时时间)之后==**:还没有收到相邻路由器发送的更新路由表,

则可以把此相邻路由器记为不可达的路由器,即把距离设置为16(表示不可达)

image-20260621123500938

330时刻:路由器R1判定R2不可达,并更新自己的路由表

  • R1更新路由表,以为可以通过R3/R4到达R2。

  • 但从上帝视角来看,不只是R2对net2不可达,R3,R4也对net2不可达

  • 造成了错误,形成**==转发环路==**:R3 – R3/R4,直到TTL=0才会被丢弃。

image-20260621124135547

330时刻:各路由器向邻居发送RIP报文,更新自己的路由器信息

  • ==(老路径已最新的为准)(如果新路径更短,就更新)==
  • 实际上还是环路,继续等等看吧。

image-20260621124544224

360时刻:各路由器向邻居发送RIP报文,更新自己的路由器信息

  • 每经过一轮的信息交换,到达net2的距离+1.
  • 多轮迭代之后,net2的距离才加到16,才能确定net2不可达。
  • 可见RIP的缺点:==坏消息传得慢(慢收敛现象)==

image-20260621124956183

690时刻:终于收敛了!

(160时刻的出错,690时刻的收敛,哭了)

image-20260621125056158

RIP的缺点

  • RIP限制了网络的规模
  • 网络规模越大开销越大
  • ==坏消息传得慢==

image-20260621125117627

700时刻:R2换了个新路由器

image-20260621125625214

720时刻:

  • R2是在700时刻开机的,要过30s即730s才发一次RIP报文

image-20260621125821706

RIP的优点

  • ==好消息传得快==

image-20260621125124766

④ OSPF 开放最短路径优先协议

1.OSPF协议的特点

OSPF在协议栈所处的位置

image-20260621131414392

OSPF协议大致原理

基于链路状态路由算法(Djsk算法)

==首先让 每一台 路由器都建立整个网络的拓扑图(带权有向图,用邻接表存储)==

  • ① 每一台路由器(开机时)探测到和自己相连路由器/网络的信息(相邻节点,权重)
  • ② 分别把所有数据整合在一起(带权有向图的邻接表存储)

image-20260621132516898

Q②:一台路由器怎么把自己探测到的信息 “说给” 其他所有路由器?

**洪泛法(flooding)**:通过相邻节点,一传十,十传百地传播。

  • 注意:洪泛信息不可回流。若收到重复的链路状态信息,不重复转发。
  • 每个链路状态都带上一个32位的序号。序号越大,状态/版本就越新。

image-20260621132543217

Q①:当探测到相邻路由器信息有变化时怎么做?

立即洪泛最新的链路状态信息!(LSA:自己构建的单链表)

所以:不存在“坏消息穿播慢”的问题

OSPF其他特点:

  • ① 运行每条路设置不同的代价/权值。
    • 代价=参考带宽/接口带宽
    • 一个链路的两个方向,权值可能不同
    • 【直连网络→路由器】单方向的权值通常是0
  • ② 若同一个目的网络有多条相同长度的路径,则都可以用来转发(可以负载均衡)
  • ③ OSPF具有鉴别功能,可以保证仅在 可信赖的路由器 之间交换链路状态信息。
  • ④ OSPF支持可变长度的子网划分 和 无分类编址CIDR

image-20260621133818124

回顾

image-20260621134329960

2.OSPF的基本工作原理

(在知道了每一台路由器都建立整个网络的拓扑图后)【LSDB – 链路状态数据库】

==① 路由器构建LSDB,使用Dijkstra算法计算最短路径==

image-20260621135306055

==② (根据Dijk算法结果),构建Ri的路由表==

特点:

  • 路由表结构:【目的网络,下一跳,到目的网络的距离】(

    • (路由表中不会存储完整路径,只存储下一跳)
  • 一旦网络拓扑(链路或者路由器)变换,会立即引起洪泛,LSDB变化,再次运行D算法,构建新路由表。

Q:超大型自治系统的LSDB

这时候每台路由器都还得存储一份LSDB?

洪泛压力也大,D算法开销也大。

SOL:区域划分

  • 把自治系统划分成多个区域Area【一个主干区域,多个非主干区域】
    • 主干区域至少有一台 自治系统路由器ASBR,与其他自治系统相连。
    • 非主干区域至少有一台 区域边界路由器ABR,与主干区域相连。
  • 这时洪泛法的范围是区域内部,不是AS。
  • LSDB也小了,D算法开销也小了。

image-20260621141116115

整理三类路由器

  • 自治系统边界路由器:负责 本自治系统与其他自治系统之间的 IP分组路由转发
  • 区域边界路由器 :负责 为流出流入该区域的 IP分组提供路由转发
  • 区域内部路由器(非边界路由器):负责 本区域内的 IP分组路由转发

回顾

image-20260621141735317

拓展:LSDB,LSA,LSI

LSDB:链路状态数据库

LSA:链路状态通告

LSI:链路状态信息(广义的概念)

image-20260621141949870

image-20260621142127863

3.OSPF协议的分组类型

image-20260621142729973

image-20260621142852170

Hello分组(问候分组)

一开始路由器R2和别的路由器还没建立联系,是独立的。

image-20260621143004559

各台路由器每隔10s会向直接邻居发送一次“问候分组”

如果超过40秒没收到邻居的问候,就认为该邻居不可达。

R1和R2建立了连接后:相互发送“问候分组”,确认邻居关系,更新链路状态信息。

R1更新链路状态信息→洪泛给所有路由器→所有路由器也更新链路状态信息。

image-20260621143612098

DD分组(数据库描述分组)

两台路由器的邻居关系建立时,通过DD分组,向邻居给出自己的LSDB摘要(即LSA的头信息)

image-20260621143806118

LSR分组(链路状态请求分组)

通过LSR分组,向邻居请求缺少的LSA(头信息)

image-20260621143847729

LSU分组(链路状态更新分组)

路由器通过LSU分组,向邻居传输具体的LSA(可能引发全网洪泛,蝴蝶效应)

  • 即使重复收到了洪泛的LSU分组,也要给邻居返回LSAck

image-20260621143952231

image-20260621144436497

LSAck分组(链路状态确认分组)

路由器收到邻居发来的LSU后,返回LSAck分组,向邻居确认收到了哪些LSA(头信息)

image-20260621144228484

⑤ BGP 边界网关协议

路由协议的分类:

  • 内部网关协议:用于AS内部交换路由信息,实现路由选择,例如RIP,OSPF
  • 外部网关协议:用于AS之间交换路由信息,实现路由选择,例如BGP

边界路由器之间使用BGP协议

特点,相关概念

特点:

  • ① BGP力求找到一条自治系统之间比较好的路由,而不是最佳路由
    • 原因是AS之间一大堆路由器,费时。
    • image-20260621151241136
  • ② AS之间的路由选择必须考虑政治安全或经济等因素
  • ③ BPG采用路径-向量路由算法:路由器之间提高BPG路由器时,不仅告知目的地,还告知到达该地的完整路径(经过哪些自治系统)。
    • image-20260621151619534
  • ④ BGP是应用层协议,基于TCP。(运行BGP协议的路由器还包含传输层,应用层)

BGP相关概念

Q:哪些路由器需要运行BGP协议?

  • 边界路由器,某些内部核心路由器
  • (简化理解:AS内所有路由器都要运行BGP协议)

BGP邻居

  • BGP协议通信双方称为BGP邻居。
  • BGP邻居之间先建立TCP连接,然后在该连接上交换BGP报文,从而建立BGP会话

image-20260621152338365

BGP会话

  • 两个AS的直连边界路由器之间,长期保持eBGP会话。【在物理上连接】
  • AS内部的BGP路由器之间,长期两两保持iBGP会话。【物理上不直连也可以】
    • 注意:规定AS内iBGP会话必须全连通:N个路由器形成N(N-1)/2条iBGP会话。

回顾

image-20260621150934325

BGP路由信息,工作原理示例

image-20260621153201803

image-20260621153246837

BGP路由选择

==对于外部AS的目的网络,如果有多条路可以走,怎么选择?==

image-20260621155245525

【按①②③④优先级考虑】

① 本地偏好值最高

相当于优先级(由AS管理员设置)

通常考虑成本,安全因素。

② AS跳数最少

AS跳数最少,路由器跳数不一定最少。

③ 热土豆路线选择算法(最小代价)

想法:烫手的土豆,尽快脱手

让IP分组以“最小代价”离开自治系统

  • RIP以路由器跳数为代价
  • OSPF以路径总长度为代价

④ BGP路由器标识符(即ID)最小

选IP更小的(老员工工号更小)

BGP四种报文

image-20260621160445913