王道计网 | 网络层 | 第三部分 | 不同网段之间通信

1.NAT

(看基础课做的笔记)

image-20251014093306515

image-20251014093749069

image-20251014093827842

2.路由算法

RIP和BGP都是应用层协议,只有OSPF是网络层协议

RIP端口号520,BGP端口号179

image-20251014111631062

image-20251014110916958

image-20251014110948790

image-20251014111034585

image-20251014111109046

image-20251014111220230

image-20251014111314665

image-20251014111534484

image-20251014111555218

3.分层次的路由协议

image-20251014112805600

image-20251014112415421

image-20251014112442325

image-20251014112534698

image-20251014112744396

4.RIP(AS内)

1.基本概念

image-20251014112910948

image-20251014113136682

路由表距离为16直接就丢弃了

目的网络字段一般写的是网络前缀,下一跳路由字段一般写的是IP地址

image-20251014113441129

2.RIP工作过程

image-20251014113533486

image-20251014114010714

1.从路由器启动到收敛

image-20251014114934794

image-20251014115114634

image-20251014115231097

image-20251014115320251

image-20251014115401906

image-20251014115420714

image-20251014115448288

收敛后,已经稳定,后面网络不发生变化的话,路由表也不会变

image-20251014115522811

2.动态适应网络拓扑变化

image-20251014145644397

image-20251014145657478

image-20251014151132213

image-20251014145925636

3.RIP缺点

image-20251014151240470

image-20251014151339780

image-20251014151416629

image-20251014151536570

image-20251014151835367

image-20251014151947668

image-20251014152047476

image-20251014152058843

image-20251014152125383

image-20251014152204889

image-20251014152253942

4.RIP优点

image-20251014152541796

image-20251014152634407

image-20251014152729128

image-20251014152802350

image-20251014152821976

image-20251014152832234

3.强化课补充部分

可以看7的RIP部分

RIP传播过程其实就像是图的广度优先遍历

具体看下面的例子

image-20251014183636296

R11-16在0时刻同时启动,30s给邻居传一次自己知道的,问过了多久A11-16全能知道到210.2.3.0和210.2.4.0怎么走

先看210.2.3.0

1.在0时刻只有R14知道怎么到该网段,然后0时刻R14会立即告知邻居。也就是说0时刻的时候R11,R14,R15全知道怎么往.3.0这个网段走了,广度优先传播了一次

2.在30s时刻,R11传给R12,R15传给R13和R16,广度优先传播了第二次,所有路由器都知道怎么走了

再看210.2.4.0

1.在0时刻只有R16知道怎么到该网段,然后0时刻R16会立即告知邻居。也就是说0时刻的时候R15,R16知道怎么往.4.0这个网段走了,广度优先传播了一次

2.在30s时刻,R15传给R13和R14,广度优先传播了第二次

3.在60s时刻,R14传给R11,R13传给R12,所有路由器都知道怎么走了,广度优先传播了三次

5.OSPF(AS内)

1.特点

image-20251014154422762

image-20251014153051650

image-20251014153457079

image-20251014153750081

image-20251014153841705

画成无向图是有利于理解,其实实际上是由两个节点之间相连的话就有两条有向边,这两条有向边的代价可能会不同

image-20251014154125643

image-20251014154240728

image-20251014154306761

image-20251014154405070

2.基本工作原理

image-20251014155824197

image-20251014154646790

image-20251014155025972

路由器构造路由表过程:

1.构建自己的LSDB

2.运行迪杰斯特拉算法找最短路

3.根据迪杰斯特拉算法构造自己的路由表

image-20251014155423917

image-20251014155551689

image-20251014155732616

image-20251014155747260

image-20251014155954244

可以说LSDB(这本书)是LSI,也可以说LSA(书中的章节)是LS1,可以说单链表中的某个结点(章节中的字)也是LSI

image-20251014160141436

3.分组类型

image-20251014160213458

image-20251014160452705

image-20251014160555621

image-20251014160723606

R1知道R2这个邻居之后,会立刻泛洪给R3,4,5,6,他们也会更新自己的LSDB

image-20251014160900218

image-20251014160922532

image-20251014161019808

image-20251014161106490

image-20251014161228792

发送的确认信息不是LSA,而只有LSA的头信息,收到了哪些就确认哪些

image-20251014161359769

比如R4会从R1和R3这两边都收到LSU分组,虽然这两个LSU分组内容一样,但都必须给对方返回LSAck

4.强化课补充部分

可以看7的OSPF部分

问题1:R4怎么知道R1和R3泛洪的是同一条信息然后不继续重复泛洪相同的信息呢?

通过R1的标识和序号(版本号)来识别。说明这是R1发过来的同一个版本的消息,那我R4第一次收到R1给的消息进行泛洪后,再次收到R3给的相同的信息就不需要重复泛洪了。

问题2:OSPF消息封装在IP数据报里面进行洪泛是如何实现的,这个IP数据报的目的IP是怎么填写的?是广播IP?

通过IP组播(多播)来实现的,只给相邻的路由器发,不给直连的网络发

问题3:R1要给Net3发数据,能不能走 R1,net2,R2,net3这条路?如果可以的话那么经过net2的代价是多少?

见7的OSPF部分

问题4:两个路由器连接一个net在OSPF中是怎么回事

见7OSPF复杂点的问题1

6.BGP(AS间)

image-20251126085004171

7.手搓AS自治系统 - 路由算法应用

1.手搓AS

image-20251014164620682

AS之间只有平级关系,AS间是否能连接取决于AS主任是否愿意

2.RIP

RIP传播过程其实就像是图的广度优先遍历,具体看下面的例子

0.0.0.0在DHCP中表示本主机

而6.6.6.0/28,即主机号全0,代表的是本网络

image-20251014165653838

小登网吧老登网吧构造参见 同网段通信文章

一般选择R3所有IP地址中最小的IP作为R3的唯一标识,大家构建的时候的下一条字段的R3就可以写6.6.6.6,但是网络还是要写那个端口的地址

收敛过程

image-20251014165752603

直连网络,直接交付的意思是:

假如我的R3可以直接交付给net3,那R3的6.6.6.6就是net3的网关,就是R3可以直接转发目的地址为6.6.6.0网段的数据报,这就是直连网络

RIP传播过程其实就像是图的广度优先遍历

具体看下面的例子

image-20251014183636296

R11-16在0时刻同时启动,30s给邻居传一次自己知道的,问过了多久A11-16全能知道到210.2.3.0和210.2.4.0怎么走

先看210.2.3.0

1.在0时刻只有R14知道怎么到该网段,然后0时刻R14会立即告知邻居。也就是说0时刻的时候R11,R14,R15全知道怎么往.3.0这个网段走了,广度优先传播了一次

2.在30s时刻,R11传给R12,R15传给R13和R16,广度优先传播了第二次,所有路由器都知道怎么走了

再看210.2.4.0

1.在0时刻只有R16知道怎么到该网段,然后0时刻R16会立即告知邻居。也就是说0时刻的时候R15,R16知道怎么往.4.0这个网段走了,广度优先传播了一次

2.在30s时刻,R15传给R13和R14,广度优先传播了第二次

3.在60s时刻,R14传给R11,R13传给R12,所有路由器都知道怎么走了,广度优先传播了三次

3.OSPF

1.简单点的OSPF

image-20251014172536583

一般选择R3所有IP地址中最小的IP作为R3的唯一标识,大家构建的时候的下一条字段的R3就可以写6.6.6.6,但是网络还是要写那个端口的地址

image-20251014185203463

问题1:R4怎么知道R1和R3泛洪的是同一条信息然后不继续重复泛洪相同的信息呢?

通过R1的标识和序号(版本号)来识别。说明这是R1发过来的同一个版本的消息,那我R4第一次收到R1给的消息进行泛洪后,再次收到R3给的相同的信息就不需要重复泛洪了。

问题2:OSPF消息封装在IP数据报里面进行洪泛是如何实现的,这个IP数据报的目的IP是怎么填写的?是广播IP?

通过IP组播(多播)来实现的,只给相邻的路由器发,不给直连的网络发

2.复杂一点的

image-20251014190638849

问题1:Net2有R1,R2,R3连接,请问是怎么连接的?

个人理解就是Net2里面没有其他的路由器了,这三个路由器可以和交换机连接,也可以和主机连接。R1,R2,R3和Net2相连的那个接口和Net2组成了一个局域网

可以理解为R1,R2,R3同时连接了Net2中的某个交换机

问题2:那他们的LSDB应该是什么样子?

image-20251014191019198

问题3:R1要给Net3发数据,能不能走 R1,net2,R2,net3这条路?如果可以的话那么经过net2的代价是多少?

1.可以走这条路,因为R1,R2,R3和net2连成的网络其实就是个局域网

2.其实OSPF为了简化都画的无向图,其实OSPF链路都是有向图,无向图的代价一般都是从路由器到网络,比如R1到Net2,而网络到路由器一般的代价为0,即Net2到R2代价为0(而路由器和路由器之间的无向边来回都是一样的)

所以从R1经过Net2到达R2代价为1+0就等于1

所以问题2的LSDB其实不全,还要加上下面这个(不过考试应该不考这么深的)

image-20251014191824802

问题四:如何控制洪泛的范围?

通过AS标识符把洪泛的范围控制在本AS内

4.BGP

BGP是基于TCP连接,属于应用层

1. 各个AS之间的路由器的BGP会话(EBGP)

边界路由器之间建立的是EBGP会话

image-20251014200520329

边界路由也可以不配置BGP,就是图中的AS0的情况,只有一条路可以到别的AS

问题1:自治系统的边界路由器会有几个?

至少一个。图中AS1连接AS2和AS4的路由器可以是同一个,毕竟一个路由器有很多接口

问题2:AS5包含了9.8.5.0/24和2.2.1.0/24这两个网络,那AS5中有可能把这两个网络拆分,变成更小的网络吗?

边界路由器不用关心这个问题,已经聚合到9.8.5.0/24和2.2.1.0/24这两个网络了,只要知道在这两个网络就给了AS5的边界路由就完事了

问题3:BGP的工作过程,是怎么把信息传给其他边界路由的

image-20251014203600820

1.边界路由器先检测和自己相连的其他边界路由器

2.比如AS5的路由51就检测到了AS3的路由32

AS5的路由51发出TCP请求,在第三次握手就可以发送BGP Open报文

3.路由32收到Open报文之后回复一个KeepAlive报文

路由51收到KeepAlive报文之后这个连接就建立完成了,相当于路由51和32之间建立了TCP连接

并且双方可以通过这个连接发送BGP的各种报文

4.路由51给32传BGP Update报文,告知AS3的边界路由32在AS5中有哪些网络

具体有如下字段<网络号,下一条路由,到达该网络的自治系统的路径向量>,具体为

<9.8.5.0/24,路由51自身,AS5>

<2.1.1.0/24,路由51自身,AS5>

5.暂时忽略AS3的两台边界路由 路由31和32是如何通知 AS5里面的网段的

他们会进行消息共享,路31也知道了路32知道的内容

6.路31和路22也会建立起BGP连接

然后重复一样的动作

但是到Update报文时内容有所不同,字段相同但内容不同,就是下一跳和路径向量得到了更新

<网络号,下一条路由,到达该网络的自治系统的路径向量>

<<9.8.5.0/24,路由31自身,AS3 -> AS5>

<2.1.1.0/24,路由31自身,AS3 -> AS5>

7.路21和路11也会建立起BGP连接

然后重复一样的动作,还是BGP Update的内容不同

<<9.8.5.0/24,路由21自身,AS2 -> AS3 -> AS5>

<2.1.1.0/24,路由21自身,AS2 -> AS3 -> AS5>

8.路52和路42,路由41和11都会重复相同的动作

至此每个边界路由都知道怎么走了

问题4:边界路由如何选择走那条路径

1.先看本地偏好值更高的(自定的优先级,自己配置的)

2.再看路径最短的

3.都一样的话再看编号,最后选一个编号最小的(BGP会给每台运行BGP协议的路由一个编号)

问题5:热土豆路由

这是AS内部的路由,一旦数据报到达边界路由器就不看这东西了

AS内部的路由器会选择一条让要到别的AS的数据报更快到达边界路由器的路径**(代价最小的路)**

其实就是找的AS内现在拿到数据的路由到边界路由的最短路径

(有可能会有多个路由,所以还要选择要从哪个边界路由出去)

问:热土豆路由是送到边界路由器就不管了吗?假设有多个边界路由器,数据要去AS1,边界路由器1可以到AS1,边界路由器2到不了AS1,但是边界路由2比边界路由器1离得更近,那么热土豆会把数据给谁?

答:热土豆路由在做选择时,一个基本前提是它所知的、通过BGP学习到的这些路径都是能够到达最终目的地的

在您的例子中,虽然边界路由器2更近,但如果BGP路由信息明确告知,只有通过边界路由器1的路径才能到达AS1,那么边界路由器2根本不会被列为到达AS1的有效下一跳选项。路由器是基于已知的有效路径进行“最近出口”的选择。

问题6:同一AS内部的边界路由之间是如何共享BGP消息的

2.AS内部的路由器

AS内部至少一台边界路由器,还有核心路由器(性能只比边界路由器低)和其他路由器(汇聚路由器和和接入路由器)。

想要了解多点的可以去搜一搜接入层汇聚层核心层这个模式

image-20251015114142764

同一AS内的两台边界路由器之间建立的会话叫做IBGP会话,AS之间的边界路由器之间建立的是EBGP会话

三类路由器都运行IGP(如OSPF),核心和边界路由器运行BGP,普通路由器不需要运行BGP,内部普通路由器也不需要知道哪个是边界路由器,反反正OSPF等协议会把路由表构造好,然后转发数据报就行了

同一AS内,边界路由和边界路由,核心路由和核心路由,核心路由和边界路由之间都需要建立IBGP会话(类似笛卡尔积,就是一台运行BGP的路由器要和本AS内的所有运行BGP的路由器建立IBGP会话)

边界路由可以通过建立好的IBGP会话把信息同步给AS内的其他路由器

而核心路由器收到信息后不需要再在AS内进行洪泛,因为边界路由就路由信息精准送达了各个路由器,把这件事完成了

送消息是原封不动的,比如

路由51给32传BGP Update报文,告知AS3的边界路由32在AS5中有哪些网络

具体有如下字段<网络号,下一条路由,到达该网络的自治系统的路径向量>,具体为

<9.8.5.0/24,路由51自身,AS5>

<2.1.1.0/24,路由51自身,AS5>

路由32不会修改这两台信息,而是原封不动的发给路由31,就是路由器32不会把路由51改成路由32

同理给 其他边界路由和核心路由发的也都是不改的

image-20251015145312854

像图中这样的边缘AS,只有边界路由器需要运行BGP,其他路由器都不用运行BGP,也不需要建立BGP会话

R1作为边界路由也可以通过0.0.0.0/0这种默认路由的方式来往自治系统外发数据