五类 IP 地址划分的表格(Ctrl+F 查找 wiki)
例题1:子网划分(查找 1111)
例题2:子网划分与CIDR(查找 2222)
链路状态路由(全局路由):Dijkstra (查找 Dijkstra)
距离向量路由(分布式路由算法):DV (查找 4.5.2)
这一章东西也不少啊
网络层与传输层:
有关 报文段 (segment)
发送方主机封装 报文段 为 数据报(datagram)
接收方主机递交报文段给传输层。
数据报从发送方主机通过网络传输到接收方主机。
在接收方主机,网络层接收到数据报,然后将其解封装,提取出其中的报文段。
最终,网络层将解封装出来的报文段递交给接收方主机的传输层进行进一步处理。
在 每个 主机、路由器上都需要运行网络层协议
路由器会检查通过它的所有 IP 数据报的头部字段,然后根据目的 IP 地址对数据报进行转发
网络层的两个主要功能:
网络层被分解成两个相互作用的部分(两个平面):
数据平面:决定抵达路由器输入端口的数据报如何转发到输出端口
控制平面:决定数据报在端到端路径上的路由器之间如何路由
两种数据平面的实现方式


如今的因特网网络层不执行连接建立
网络层提供的服务:简单 & 尽力而为
尽力而为的服务(best-effort service)
分组间的定时不能被保证
分组的接受顺序与发送顺序不一定相同
传送的分组不饿能保证最终交付,即网络可能未向目的地交付分组
确保交付(X)
具有时延上界的确保交付(X)
有序分组交付(X)
确保最小带宽(X)
确保最大时延抖动(X)
- 机制的简单性使Internet得以 广泛部署
- 足够的带宽配置可使实时应用程序(例如交互式语音、视频)的性能在"大部分时间"内"足够好"(UDP效果)
- 可复制的、应用层的分布式服务(数据中心,内容分发网络);连接到客户端的网络附近,从而允许从多个位置提供服务
- "弹性"服务的拥塞控制非常有用
数据报转发表
最长前缀匹配(查找 输出端口)

路由器的两个核心功能:
路由器的体系结构:

输入端口:

交换结构:将分组从输入端口缓存 转发 到恰当的输出端口缓存中:

三种类型:经内存、经总线、经交换矩阵(纵横式)
经内存:交换由 选路处理器(CPU) 完成。类似I/O设备。
经总线:不需要 选路处理器 的干预,每次也只能有一个分组通过总线传送。路由器交换带宽受 总线速率 影响。
经交换矩阵:
纵横式交换机:由 2n 条总线组成,n个输入端口 & n个输出端口连接。
到达输入端口的分组 沿水平总线穿行,直至与所希望的输出端口的垂直总线交叉点。
若该垂直总线空闲,则直接传送到输出端口;否则在输入端口排队。

输出端口:取出存放在输出端口内存中的分组,并将其传输到输出链路上
排队:
输出端口排队:当交换结构将分组交付给输出端口的速率超过输出链路速率时,就需要 排队与缓存管理功能。缓冲区溢出时会出现延时和丢包。

输入端口排队同理
线头阻塞(Head-of-the-Line(HOL) Blocking):在队列前面的 被阻塞的数据报 会 阻止🚫队列中的其他数据报被转发!

缓冲区溢出都会导致 丢包。
IP 数据报格式(IPv4)——提供不可靠无连接的数据报传送传输服务

IP地址:
定义:分配给 主机 或 路由器接口 的标识符
接口:主机/路由器 与 物理链路 之间的边界
IP 地址目前分为 IPv4 & IPv6
早期将 IP 地址分为五类
| 特点 | 网络号 | IP地址范围 | 可用IP地址范围 | |
|---|---|---|---|---|
| A类 | 0开头 | 8位 | 0.0.0.0~127.255.255.255 | 1.0.0.1~127.255.255.254 |
| B类 | 10开头 | 16位 | 128.0.0.0~191.255.255.255 | 128.0.0.1~191.255.255.254 |
| C类 | 110开头 | 24位 | 192.0.0.0~223.255.255.255 | 192.0.0.1~223.255.255.254 |
| D类 | 1110开头 | - | 224.0.0.0~239.255.255.255 | - |
| E类 | 11110开头 | - | 240.0.0.0~255.255.255.255 | - |
(该表参考 wiki 百科)
(D类和E类 IPv4地址不区分网络地址和主机地址,因为ABC类用来标志主机,D类用于一对多通信,E类保留未来用)
(0,128,192,224,240)
划分时的注意点:
主机号全0不能分配:主机号全0时,该地址表示整个网络地址(网络地址用于标志网络本身)。
例如,在一个C类网络 192.168.1.0/24 中,192.168.1.0 表示这个网络本身,而非网络中的某一台主机。
主机号全1不能分配:主机号全1时,该地址表示广播地址(广播地址用于向网络中的所有主机发送数据报)。
例如,在上一例的网络中,192.168.1.255 是广播地址。
特殊用途的地址:

划分子网:
IP 地址:
网络号相同的 IP 地址属于同一个网络,而网络还可以划分为若干个子网(subnet)。
方法:从主机号中借用若干 bits 作为子网号,剩下的主机位为主机号。
( 网络号 + 高位部分主机号 → \rarr → 子网号 )
什么是子网:(从 IP 地址的角度看)
设备接口的 IP 地址具有同样的网络部分
没有路由器的接入,物理上能够相互到达

子网掩码:为了 确定子网地址 而提出的
示例:255.255.255.128 = 1111 1111 1111 1111 1111 1111 1000 0000
其中 1 对应 IP 地址中的网络号和子网号,0 对应主机号。求网络号可以将 IP 地址和子网掩码 按位与。
现有一个网段 202.115.1.1 ~ 202.115.1.254
请写出怎样将这个网段划分为 2个、6个、14个子网;
假设这些 IP 用于某公司。现公司任一部门最多有30台机器,问应该怎样划分子网?
在上一问中,如果公司任一部门最多有49台机器,又将怎么划分?
请写出子网所需的位数、子网掩码和子网号
- 2个子网从主机号中借1位作为子网号,6个借3位,14个借4位 (n个子网就借 c e i l ( l o g 2 n ) ceil(log_{2}n) ceil(log2n) 位)
2个子网:
子网号 子网掩码 202.115.1.0 (最后一个字节 00000000) 255.255.255.128 202.115.1.128(最后一个字节10000000) 255.255.255.128 子网范围:202.114.1.1 - 202.114.1.127,202.114.1.128 - 202.114.1.254
6个子网
子网号 子网掩码 202.115.1.0 (最后一个字节 00000000) 255.255.255.224 202.115.1.32 (最后一个字节 00100000) 255.255.255.224 202.115.1.64 (最后一个字节 01000000) 255.255.255.224 202.115.1.96 (最后一个字节 01100000) 255.255.255.224 202.115.1.128 (最后一个字节 10000000) 255.255.255.224 202.115.1.160 (最后一个字节 10100000) 255.255.255.224 202.115.1.192 (最后一个字节 11000000) 255.255.255.224 202.115.1.224 (最后一个字节 11100000) 255.255.255.224 划分子网范围方法同上,从这 8 个子网中任取 6 个即可
14个子网同理
由于全0和全1不可用,所以应当视作有 30 + 2 = 32 台机器。需要5位主机号,剩下的3位可用用作子网号。
49 + 2 = 51,需要 6 位主机号。而剩下的2位可用用作子网号。
三种方式解答:
子网号+子网掩码:
- 子网号分别为:202.115.1.0,202.115.1.64,202.115.1.128,202.115.1.192。
- 子网掩码都为 255.255.255.192
IP地址范围+子网掩码
四个子网的地址范围是:
202.115.1.1 ~ 202.115.1.62
202.115.1.65 ~ 202.115.1.126
202.115.1.129 ~ 202.115.1.190
202.115.1.193 ~ 202.115.1.252
(即,起始都是 2 n + 1 2^{n}+1 2n+1 ,结束都是 2 n + 1 − 2 2^{n+1}-2 2n+1−2 )
CIDR法:
- 四个子网分别为:202.115.1.0/26,202.115.1.64/26,202.115.1.128/26,202.115.1.192/26
使用子网掩码的分组转发:
在不划分子网时,路由表只有 2 项:目的地址 和 下一跳地址。
使用子网划分后,路由表中将包含 3 项:目的地址 、 下一跳地址 、子网掩码

传统 IP 分类方法的问题
CIDR(Classless Inter-Domain Routing,无分类域间路由)
构造超网(superneting)
一个 CIDR 地址块可以表示分类 IP 的多个分类地址,这种地址的聚合称为 路由聚合,又称为 构造超网。

现有一公司已获得网络号为 202.1.1.0/24,如果该公司有 3 个部门
如果第一个部门有60台计算机,第二个部门有20台计算机,第三个部门有16台计算机,那么使用分类IP的方法如何分配地址?
如果第一个部门有120台计算机,第二个部门有60台计算机,第三个部门有60台计算机,使用分类IP的方法可用分配地址吗?使用CIDR方法如何分配地址?
- 以最多台数的部门为准,需要的最接近数为 2 6 = 64 2^{6}=64 26=64 ,所以要从主机号的 8 位中借 8-6=2 位作为子网号
子网分别为 202.1.1.0,202.1.1.64,202.1.1.128,202.1.1.192 。在这 4 个子网号中任选 3 个即可。
子网掩码均为 255.255.255.192
- 若以最多台数的部门为准,需要的最接近数为 2 7 = 128 2^{7}=128 27=128 ,所以要从主机号的 8 位中借 8-7=1位作为子网号,那么就只能划分2个子网。所以使用分类IP的方法不可行。
使用CIDR方法:
首先以最小需求的台数为准,因为 60 + 2 < 64 = 2 6 60+2<64=2^{6} 60+2<64=26 ,此时主机号位数需要 6 位,则子网号位数为 8-6=2位,将子网划分出来,分别为 202.1.1.0,202.1.1.64,202.1.1.128,202.1.1.192。
第一个部门选择两个连续的子网 用CIDR合并 作为超网,第二、三个部门任选剩下两个子网。
例如:202.1.1.0,202.1.1.64 给部门一,202.1.1.128给部门二,202.1.1.192给部门三
最后将给部门 IP 段用 CIDR 超网形式描述,以便对外发布:
部门1:202.1.1.0/25(最后一个字节最高一位 0,后面 7 位作主机号)
部门2:202.1.1.128/26(最后一个字节最高两位 10,后面 6 位作主机号)
部门3:202.1.1.192/26(最后一个字节最高两位 11,后面 6 位作主机号)
注:考试的时候,不需要分析特别细,给出解答(十进制形式,不要写二进制形式)即可。注意题目要求,一般只会要求用
子网号+子网掩码、IP地址范围+子网掩码、CIDR 这三种方法之一来作答。
然后就是,划分好的子网中,主机号全 0 和全 1 不可拿来分配主机!
IP 地址怎样获取——DHCP
DHCP 概述:plug-and-play(即插即用)
DHCP 工作过程:

DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文。
- DHCP客户端启动时,由于其还未配置IP地址,因此只能使用广播方式发送DHCP DISCOVER 包,即该数据包的源地址为0.0.0.0,目标地址为255.255.255.255
- 由一端打开一个套接字(socket),然后监听来自另一方的连接,称为被动打开
DHCP 客户从 UDP 端口 68 发送 DHCP DISCOVER 报文
凡是收到 DHCP DISCOVER 报文的服务器都发出 DHCP OFFER 报文,因此客户可能收到多个 DHCP OFFER 报文
客户从几个 DHCP 服务器中选择一个,并向所选择的服务器发送 DHCP REQUEST 报文
被选择的服务器发送 DHCP ACK 报文,客户进入已绑定状态,并且可用开始使用得到的临时 IP 地址了
此时客户要根据服务器提供的租用期 T 设置两个计时器 T1 和 T2,超时时间分别为 0.5T 和 0.875T。
超时时间到就要请求更新租用期。
T1 时间到,客户发送 DHCP REQUEST 要求更新租期
服务器若不同意,则发回 DHCP NACK。此时客户必须立即停止使用原来的IP地址,回到步骤2重新申请
服务器若同意,则发挥 DHCP ACK,客户得到新的租用期,重新设置计时器。
若T2时间服务器还没有响应步骤6的请求,那么客户必须重复步骤6(重新发送请求报文 DHCP REQUEST)
客户可以随时提前终止服务器提供的租用期,向服务器发送 DHCP RELEASE 即可。
监听 → \rarr → 客户DISCOVER → \rarr → 服务器OFFER → \rarr → 客户REQUEST → \rarr → 服务器ACK或者NACK → \rarr → T1超时/T2超时
→ \rarr → 结束

DHCP:不仅仅获得IP地址,还有:
组织机构如何获取IP地址?
怎样获取IP地址中的网络号部分?——从ISP的地址空间中划分一块给申请者
例如:

ISP获得地址块的方法——从ICANN(Internet Corporation for Assigned Names and Numbers)获取
动机:对外部网络来说,本地网络只用 1 个 IP 地址
不需要从 ISP 分配一系列地址——只需要 1 个 IP 地址用于所有设备
在本地网络,改变设备的 IP 地址不用通知外部
可以变更 ISP ,不用改变本地网络的设备的地址
本地网络内部设备不能被外部明确寻址(不可见,增加安全性)

执行 NAT,路由器必须做到:
外出的分组:替换每个外出的分组的 (源IP地址,端口号)为(NAT IP 地址,新端口号)
在 NAT转换表中记录 上述转换的 转换配对
进来的分组:对每个进来的分组,
用保存在 NAT 表中的对应的(源IP地址,端口号)替换分组中的目的域(NAT IP 地址,新端口号)
NAT的一些限制:
16位端口号——一个局域网地址可用同时支持 60000 个并发连接
NAT 存在的争议:
路由器只应该处理到第三层(网络层),破坏了层次网络的应用
违反了端到端主张,这样 APP 设计时必须考虑 NAT
所以,应使用 IPv6 来解决地址短缺问题!
ICMP(Internet Control Message Protocol):因特网控制报文协议
Traceroute 和 ICMP
Traceroute:是一个网络诊断工具,用于确定数据包从源地址到目的地址在互联网上的路径。其工作原理是利用 ICMP 协议的 TTL(Time-To-Live)字段。
源端发送具有递增TTL的UDP数据报到目的地址,记录每个路由器的IP地址,直到到达目标地址为止。
当一个数据包经过网络时,TTL会逐跳减少。当TTL=0时,路由器或交换机 会丢弃该数据报并发送一个 ICMP 报文(type11,code 0)给源端,这个报文包含了路由器的名称和IP地址。
源端收到 ICMP 报文时,计算传输往返时间 RTT,对每个TTL作三次这样的操作。
UDP报文最终到达目的端时,目的端返回回应应答的 ICMP 报文(type3,code3),源端收到后停止发送。
IPv6(128位,分为8组,每组16位由四个16进制数表示)
初始动机:32位的IPv4地址空间用尽
其他动机:
IPv6数据报格式
固定长度的40字节首部
回忆:UDP首部8字节,TCP首部20字节,IPv4首部至少20字节
不允许分片
表示方式:
了解的不写了
路由与转发的相互作用:
网络的抽象图模型:这里都是无向图

路由算法分类:
全局路由算法:所有路由器必须拥有完整的网络拓扑信息和链路费用信息
(链路状态路由算法 LS——必须知道网络中每条链路的费用)
分布式路由算法:以迭代的、分布式的方式计算最低费用路径
(距离向量路由算法DV——每个节点维护到网络中所有其他节点的费用的估计向量)
静态路由算法:人工干预才变化
动态路由算法:周期性相应变化,易受影响
链路状态选路算法——Dijkstra
Dijkstra算法:
基本思想:以源节点为起点,每次找出一个到源节点的费用最低的节点,直到找完所有节点
术语定义:
核心算法:起始点u,计算到节点w——遍历所有 不在集合 N’ 中的 w 的所有邻居 w 邻 w_{邻} w邻
D ( w ) = m i n ( D ( w ) , D ( w 邻 ) + c ( w 邻 , w ) ) D(w)=min(D(w),D(w_{邻})+c(w_{邻},w)) D(w)=min(D(w),D(w邻)+c(w邻,w))

还是以这张图为例,假设u是起始节点(表中每一行表示一次迭代结束时的变量值,以下用 “最近” 表示 ”费用最低“)
| Step | N’ | D(v),p(v) | D(w),p(w) | D(x),p(x) | D(y),p(y) | D(z),p(z) |
|---|---|---|---|---|---|---|
| 0 | u | 2,u | 5,u | 1,u | ∞ \infty ∞ | ∞ \infty ∞ |
| 1 | ux | 2,u | 4,x | 2,x | ∞ \infty ∞ | |
| 2 | uxy | 2,u | 3,y | 4,y | ||
| 3 | uxyv | 3,y | 4,y | |||
| 4 | uxyvw | 4,y | ||||
| 5 | uxyvwz |
注:
Step0:找和u最近的节点。u和v,x,w直接相连,将相应的 D 和 p 填入表中,选出最近的 x 节点,加入 N’ 集合。
Step1:找和u最近的节点。看有没有要更新的:
对于节点v, D ( v ) = m i n ( D ( v ) , D ( x ) + c ( x , v ) ) = m i n ( 2 , 1 + 2 ) = 2 D(v)=min(D(v),D(x)+c(x,v))=min(2,1+2)=2 D(v)=min(D(v),D(x)+c(x,v))=min(2,1+2)=2 ,故 D(v),p(v) 不变
对于节点w,
D
(
w
)
=
m
i
n
(
D
(
w
)
,
D
(
v
)
+
c
(
v
,
w
)
)
=
m
i
n
(
5
,
2
+
3
)
=
5
D(w)=min(D(w),D(v)+c(v,w))=min(5,2+3)=5
D(w)=min(D(w),D(v)+c(v,w))=min(5,2+3)=5
D
(
w
)
=
m
i
n
(
D
(
w
)
,
D
(
x
)
+
c
(
x
,
w
)
)
=
m
i
n
(
5
,
1
+
3
)
=
4
D(w)=min(D(w),D(x)+c(x,w))=min(5,1+3)=4
D(w)=min(D(w),D(x)+c(x,w))=min(5,1+3)=4
更新D(w)=4,p(w)=x
对于节点y, D ( y ) = m i n ( D ( y ) , D ( x ) + c ( x , y ) , D ( w ) + c ( w , y ) ) = m i n ( ∞ , 1 + 1 , 5 + 1 ) = 2 D(y)=min(D(y),D(x)+c(x,y),D(w)+c(w,y))=min(\infty,1+1,5+1)=2 D(y)=min(D(y),D(x)+c(x,y),D(w)+c(w,y))=min(∞,1+1,5+1)=2
更新 D(y)=2,p(y)=x
对于节点z,仍然无法到达
选出最近的 y 或者 v ,选哪个都可以,这里我们选择 y
Step2,3,4,5同理
时间复杂度: O ( n 2 ) O(n^{2}) O(n2) :所有迭代中需要搜索 n + ( n − 1 ) + ( n − 2 ) + . . . + 1 = n ∗ ( n + 1 ) 2 n+(n-1)+(n-2)+...+1=\frac{n*(n+1)}{2} n+(n−1)+(n−2)+...+1=2n∗(n+1) 个节点
构建从 源节点 到 目的节点 的路径:例如从 u 到 w
构建最低费用路径树 & 转发表:
最低费用路径树:

转发表:

* 用于合并所有下一跳相同的项的。在转发表中找不到目的地时,才使用默认路由 * (优先级最低)Dijkstra 可能产生震荡:

特点
最低费用表示:
Bellman-Ford 方程: d x ( y ) = m i n v { c ( x , v ) + d v ( y ) } d_{x}(y)=min_{v}\{c(x,v)+d_{v}(y)\} dx(y)=minv{c(x,v)+dv(y)}
对每个节点 x:
节点的距离向量表
以节点 x 为例:

初始化如下:

更新的过程:
每个节点不断向邻居发送其距离向量的拷贝
当节点 x 收到一个邻居 v 的新距离向量,先保存,再使用 B-F 公式更新自己的距离向量:
D x ( y ) = m i n v { c ( x , v ) + D v ( y ) } D_{x}(y)=min_{v}\{c(x,v)+D_{v}(y)\} Dx(y)=minv{c(x,v)+Dv(y)},从所有经 邻居 v 到节点 y 的费用中选取最小路径费用。
若距离向量发生改变,将新的距离向量通知给邻居
若距离向量不再变化,算法终止,此时 D x ( y ) D_{x}(y) Dx(y) 收敛到 d x ( y ) d_{x}(y) dx(y),即得到节点 x 到节点 y 的最低费用路径


注:
链路费用的改变:当一个节点检测到从它到邻居的链路费用发生变化时,就需要更新其距离向量,如果最低费用路径的费用发生变化,则要通知其路径。
减少:如图 c(x,y) 从4变为1

所以当 x 和 y 之间的费用减少,DV 算法只需 2 次迭代到达静止状态。
好消息(节点间链路费用减少)能在网络中迅速传播!
增加:如图 c(x,y) 从 4 变为 60

t0:y 检测到链路费用从 4 变为 60 。更新到 x 的最低路径费用。
D y ( x ) = m i n { c ( y , x ) + D x ( x ) , c ( y , z ) + D z ( x ) } = m i n { 60 + 0 , 1 + 5 } = 6 D_{y}(x)=min\{c(y,x)+D_{x}(x),c(y,z)+D_{z}(x) \}=min\{60+0,1+5\}=6 Dy(x)=min{c(y,x)+Dx(x),c(y,z)+Dz(x)}=min{60+0,1+5}=6
此费用是错误的,因为 D z ( x ) D_{z}(x) Dz(x) 还没有更新
t1:z 收到新费用,更新 D z ( x ) = m i n { c ( z , x ) + D x ( x ) , c ( z , y ) + D y ( x ) } = m i n { 50 + 0 , 1 + 6 } = 7 D_{z}(x)=min\{c(z,x)+D_{x}(x),c(z,y)+D_{y}(x) \}=min\{50+0,1+6 \}=7 Dz(x)=min{c(z,x)+Dx(x),c(z,y)+Dy(x)}=min{50+0,1+6}=7
经节点 y 到 x 费用最低,发给节点 y。
t2:y 收到新费用,更新 D y ( x ) = m i n { c ( y , x ) + D x ( x ) , c ( y , z ) + D z ( x ) } = m i n { 60 + 0 , 1 + 7 } = 8 D_{y}(x)=min\{c(y,x)+D_{x}(x),c(y,z)+D_{z}(x) \}=min\{60+0,1+7 \}=8 Dy(x)=min{c(y,x)+Dx(x),c(y,z)+Dz(x)}=min{60+0,1+7}=8
经节点 z 到 x 费用最低,发给节点 z。
…
产生 选路回环:为到达x,y 通过 z 选路,z 又通过 y 选路。一共持续44(50-6=44)次迭代,直至z最终算出它经由y的路径费用大于50为止。
坏消息(节点间链路费用增加)传播很慢!
毒性逆转(不考)
LS算法和DV算法的比较
| 消息复杂度 | 收敛速度 | 健壮性 | |
|---|---|---|---|
| LS算法 | 知道网络中每条链路的费用,需发送O(nE)个报文; 当一条链路的费用变化时,必须通知所有节点 | 需要O(nE)个报文和 O ( n 2 ) O(n^{2}) O(n2) 次搜寻,可能导致震荡 | 路由器向一条链路广播不正确的费用,路由器仅计算自己的转发表,有一定健壮性 |
| DV算法 | 迭代时,仅在两个相邻节点之间交换报文; 当链路费用改变时,只有该链路相连的节点的最低费用路径发生改变时才传播以改变的链路费用 | 收敛较慢,可能导致选路回环 | 一个节点的计算值会传递给它的邻居,所以一个不正确的计算值会扩散到整个网络 |
来自gpt:
Link State(LS)算法
优点:
- 全局视图:每个路由器都有整个网络的拓扑视图,这使得路径计算更加准确。
- 快速收敛:由于每个路由器都有完整的网络信息,LS算法在拓扑变化后能够更快地收敛。
- 循环避免:由于每个路由器都知道网络的全局状态,能有效避免路由循环。
缺点:
- 计算复杂度高:需要每个路由器存储和处理整个网络的拓扑信息,计算资源消耗较大。
- 状态更新负担重:网络中的任何拓扑变化都会导致全网状态更新,带来额外的通信开销。
- 内存需求大:需要存储整个网络的拓扑图,对内存的需求较高。
Distance Vector(DV)算法
优点:
- 实现简单:算法相对简单,容易实现和维护。
- 低资源消耗:每个路由器只需要存储相邻节点的距离信息,不需要整个网络的拓扑图,资源消耗较低。
- 低通信开销:只有在直接相邻的节点之间交换信息,通信开销较低。
缺点:
- 慢收敛:拓扑变化时,可能需要较长时间才能收敛到新的正确路径。
- 路由环问题:在某些情况下,可能会产生路由环,需要额外机制(如分裂水平和毒性逆转)来防止。
- 不完全的网络视图:路由器没有全局网络视图,只能依赖于邻居的信息,健壮性差。
总结
- LS算法适用于需要高精度和快速响应的环境,例如大型网络和动态变化频繁的网络,但其高计算和存储要求可能是一个瓶颈。
- DV算法适用于资源有限和网络规模较小的环境,尽管其收敛速度较慢且容易产生路由环,但其实现简单、资源消耗低。
问题:
管理自治:
层次选路
域内路由选择
RIP(了解=不考):采用DV,可以理解为路由表记录下一跳和到目的地的跳数
OSPF:采用LS的Dijkstra,OSPF的信息会直接通过 IP 传输(不是传输层的 TCP 或 UDP)

BGP(Border Gateway Protocol),边界网关协议,用于Internet域间选路

BGP 为 每个 AS 提供一种手段:从相邻 AS 获取子网可达信息,向该 AS 内部的所有路由器传播这些可达性信息。
允许一个子网向 Internet 的其他部分通告它的存在。
AS 互联:转发表根据 AS 内和 AS 间选路算法而配置
AS 域间任务:如上图,AS1需要知道通过 AS2 和 AS3 能到达哪些目的端,然后将这些可达信息传播给 AS1 内的所有路由器


iBGP:internal BGP
eBGP:external BGP
BGP报文交换使用 TCP
BGP选路策略:

A,B,C 是提供商的网络,X,W,Y是提供商的客户,其中X连接到两个网络
A 向 B 通告路径 AW,B 向 X 通告路径 BAW。那么 B 应该向 C 通告路由 BAW吗?
- B 不是 A 的客户,为什么 A 会通告路径 AW 给 B 呢?
虽然A不是B的客户,但是A通告B路径AW是为了提供给B一个到W的路径选择。然而,B不会通告C路径BAW是因为C不是B的客户。B没有必要将从非客户获得的路由信息进一步通告给其他非客户。
为什么 域内选路 和 域外选路 采用不同的协议?
通过软件编程的形式定义和控制网络。
核心理念:希望 APP 可以参与对网络的控制管理,满足上层业务需求,通过自动化业务部署简化网络运维。
如果把现有的网络看成手机,那SDN的目标就是做出一个网络界的Android系统,可以在手机上安装升级,同时还能安装更多更强大的手机APP。
核心思想:每个交换设备包含一个 流表(flow table),用远程控制器来计算和分发。
特征:
OpenFlow网络 由 OpenFlow网络设备 + 控制器通过 Open Flow通道 组成