26考研 | 王道 | 计网 | 网络层 | 第三部分 | 不同网段之间通信
王道计网 | 网络层 | 第三部分 | 不同网段之间通信
1.NAT
(看基础课做的笔记)



2.路由算法
RIP和BGP都是应用层协议,只有OSPF是网络层协议
RIP端口号520,BGP端口号179









3.分层次的路由协议





4.RIP(AS内)
1.基本概念


路由表距离为16直接就丢弃了
目的网络字段一般写的是网络前缀,下一跳路由字段一般写的是IP地址

2.RIP工作过程


1.从路由器启动到收敛







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

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




3.RIP缺点











4.RIP优点







3.强化课补充部分
可以看7的RIP部分
RIP传播过程其实就像是图的广度优先遍历
具体看下面的例子

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.特点





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




2.基本工作原理



路由器构造路由表过程:
1.构建自己的LSDB
2.运行迪杰斯特拉算法找最短路
3.根据迪杰斯特拉算法构造自己的路由表





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

3.分组类型




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





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

比如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间)

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

AS之间只有平级关系,AS间是否能连接取决于AS主任是否愿意
2.RIP
RIP传播过程其实就像是图的广度优先遍历,具体看下面的例子
0.0.0.0在DHCP中表示本主机
而6.6.6.0/28,即主机号全0,代表的是本网络

小登网吧老登网吧构造参见 同网段通信文章
一般选择R3所有IP地址中最小的IP作为R3的唯一标识,大家构建的时候的下一条字段的R3就可以写6.6.6.6,但是网络还是要写那个端口的地址
收敛过程

直连网络,直接交付的意思是:
假如我的R3可以直接交付给net3,那R3的6.6.6.6就是net3的网关,就是R3可以直接转发目的地址为6.6.6.0网段的数据报,这就是直连网络
RIP传播过程其实就像是图的广度优先遍历
具体看下面的例子

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

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

问题1:R4怎么知道R1和R3泛洪的是同一条信息然后不继续重复泛洪相同的信息呢?
通过R1的标识和序号(版本号)来识别。说明这是R1发过来的同一个版本的消息,那我R4第一次收到R1给的消息进行泛洪后,再次收到R3给的相同的信息就不需要重复泛洪了。
问题2:OSPF消息封装在IP数据报里面进行洪泛是如何实现的,这个IP数据报的目的IP是怎么填写的?是广播IP?
通过IP组播(多播)来实现的,只给相邻的路由器发,不给直连的网络发
2.复杂一点的

问题1:Net2有R1,R2,R3连接,请问是怎么连接的?
个人理解就是Net2里面没有其他的路由器了,这三个路由器可以和交换机连接,也可以和主机连接。R1,R2,R3和Net2相连的那个接口和Net2组成了一个局域网
可以理解为R1,R2,R3同时连接了Net2中的某个交换机
问题2:那他们的LSDB应该是什么样子?

问题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其实不全,还要加上下面这个(不过考试应该不考这么深的)

问题四:如何控制洪泛的范围?
通过AS标识符把洪泛的范围控制在本AS内
4.BGP
BGP是基于TCP连接,属于应用层
1. 各个AS之间的路由器的BGP会话(EBGP)
边界路由器之间建立的是EBGP会话

边界路由也可以不配置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的工作过程,是怎么把信息传给其他边界路由的

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内部至少一台边界路由器,还有核心路由器(性能只比边界路由器低)和其他路由器(汇聚路由器和和接入路由器)。
想要了解多点的可以去搜一搜接入层汇聚层核心层这个模式

同一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
同理给 其他边界路由和核心路由发的也都是不改的

像图中这样的边缘AS,只有边界路由器需要运行BGP,其他路由器都不用运行BGP,也不需要建立BGP会话
R1作为边界路由也可以通过0.0.0.0/0这种默认路由的方式来往自治系统外发数据












