网络层(中)
一、划分子网
1. 三级IP
在IP地址中增加一个“子网号字段”,使两级IP地址变为三级的IP地址,即划分子网
- 划分子网属于一个单位内部的工作,对外仍表现为一个网络
- 从主机号借用若干个位作为子网号,而主机号也相应减少了若干个位
- 查找目的主机的过程:根据目的网络号先查找到本单位网络上的路由器,然后此路由器再按目的网络号和子网号找到目的子网,最后将IP数据报直接交付目的主机
- 优点:减少IP地址的浪费,使网络的组织更加灵活、更便于维护和管理
2. 子网掩码
使用子网掩码可以区分出IP地址的网络号(子网号)和主机号
- 子网掩码长度:32位
- 某位为1:IP地址中的对应位为网络号和子网号
- 某位为0:IP地址中的对应位为主机号
- 计算方法:(IP地址)AND (子网掩码) = 子网网络地址
举例: (145.13.3.10) AND (255.255.255.0) = (145.13.3.0) - 连接在路由器上的每个子网都要有网络地址和子网掩码
3. 子网划分方法
- 固定长度子网和变长子网两种划分方法
- 在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的
- 划分子网增加了灵活性,减少了能连接在网络上的主机总数
4. 使用子网时分组的转发
4.1 获取目的网络地址
- 在两级IP地址下十分简单,但在划分子网的情况下,获取网络地址不仅需要IP,还需要其子网掩码的信息,这在数据报的首部并没有提供
- 用各网络的子网掩码和目的IP地址逐位相与,看是否匹配,若匹配则是所找的网络地址
4.2 案例分析
分析上图分组转发过程
-
目的IP地址为
128.30.33.138
-
先检查目的主机是否与源主机在同一子网下,若是,则直接交付
128.30.33.138
&255.255.255.128
=128.30.33.128
得出的IP地址与目的IP地址不一致,不匹配,需要发送到R1 -
逐项查找R1路由表
第一项:
128.30.33.138
&255.255.255.128
=128.30.33.128
与128.30.33.0
不一致,不匹配第二项 &后结果:
128.30.33.128
与128.30.33.128
一致,匹配,说明子网2就是要找的目的网络
4.3 无分类编址 CIDR
- 使用变长子网掩码VLSM进一步提高IP地址资源的利用率
- 在VLSM的基础上研究出无分类编址方法,称为无分类域间路由选择CIDR
- CIDR使用各种长度的网络前缀,从三级编址变回两级编址
- CIDR采用
/
表示网络前缀所占的位数,如 220.78.168.0/24 - CIDR将网络前缀相同的连续IP地址称为CIDR地址块,128.14.32.0/20 表示地址块共有212个地址
- CIDR地址块划分举例:
4.5 构成超网
前缀长度不超过23位的CIDR地址块都包含了多个C类地址,这些C类地址合起来构成了超网
4.6 最长前缀匹配
在使用CIDR时,路由表中查找时可能会得到不止一个匹配结果,这时应该采用最长前缀匹配
- 例如目的地址D =
206.0.71.130
- 路由表的项目:
206.0.68.0/22
206.0.71.128/25
- D与项目1和2 都能匹配上,但项目二的匹配长度更长,于是选择第二个项目地址
- 为了减少路由表的查找,可以使用二叉树的结构压缩简化:
二、网际控制报文协议ICMP
- 作用:更有效的转发IP数据报和提高交付成功的机会,允许主机或路由器报告差错情况和提供有关的异常情况的报告
- 格式:
- ICMP不是高层协议,ICMP报文装在IP数据报中,作为其中的数据部分,是IP层的协议
1. ICMP报文的种类
- 差错报告报文
- 询问报告报文
1.1 差错报告报文分类
- 终点不可达
- 时间超过
- 参数问题
- 改变路由(重定向)
1.2 差错报告报文的数据字段
1.3 不应发送ICMP差错报告报文的几种情况
- ICMP差错报告报文
- 第一个分片的数据报片的所有后续数据报片
- 具有**多播地址**的数据报
- 具有特殊地址的数据报(如127.0.0.0 或0.0.0.0)
1.4 ICMP询问报文
- 回送请求和回答报文
- 时间戳请求和回答报文
1.5 ICMP的应用举例
- ping:测试两个主机之间的连通性,使用了ICMP询问报文,是应用层直接使用网络层ICMP的例子,它没有经过运输层的TCP或UDP
- Traceroute:即tracert,用来跟踪一个分组从源点到终点的路径
三、互联网的路由选择协议(重要)
1. 有关路由选择协议的几个基本概念
1.1 理想的路由算法
- 正确且完整
- 能适应通信量和拓扑变化,即自适应性
- 稳定、公平
1.2 最佳路由选择
- “最佳”是指相对于某种特定要求下得出的较为合理的选择而已
- 路由选择是个复杂的问题,它是网络中所有结点共同协调工作的结果
- 路由选择的环境往往是不断变化的
1.3 路由算法的两种策略
- 静态路由选择:非适应性,但简单和开销小
- 动态路由选择:能较好地适应网络状态的变化,但实现复杂,开销较大
1.4 路由选择协议
-
互联网采用分层次的路由选择协议,划分为许多较小的自治系统AS
-
自治系统AS:
- 是单一技术管理下的一组路由器
- 路由器使用一种AS内部的路由选择协议和共同的度量以确定分组再该AS内的路由
- 使用一种AS间的路由选择协议用以确定分组在AS之间的路由
- 尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略
-
内部网关协议IGP(Interior Gateway Protocol)
- 在一个AS内部使用的路由选择协议
- 代表为RIP、OSPF等
-
外部网关协议EGP(External Gateway Protocol)
- 若源站和目的站在不同的AS中,当数据报传到一个自治系统的边界时,需要用到EGP将路由选择信息传递到另一个自治系统中
- 代表为BGP-4
-
自治系统 内部网关协议 外部网关协议
2. 内部网关协议RIP
2.1 工作原理
- RIP是一种分布式的、基于距离向量的路由选择协议
- RIP协议要求网络中的每个路由器都要维护从它自己到其他每个目的网络的距离记录
- 距离: 也称为跳数,每经过一个路由器,跳数就加1,取到另一个路由器的跳数的最小值为距离
- RIP允许一条路径最多只能包括15个路由器,当距离为16时表示不可达,所以RIP只适用于小型互联网
- RIP不能在两个网络之间同时使用多条路由,只会选择一个路由器最少的路由
2.2 三个特点
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息
2.3 路由表的建立
- 路由器初始时只知道与其直接相连的网络的距离(1),路由表为空
- 在若干次与相邻路由器交换并更新信息之后,所有的路由器都会知道到达本AS中任何一个网络的最短距离和下一跳路由器的地址,这个过程称为收敛,通常较快
2.4 距离向量算法
路由器收到 相邻路由器X 的RIP报文
1. for(item : RIP报文所有项目){
下一跳的地址都改为X
距离+1
}
2. for(item : RIP报文所有项目){
if( 项目中的目的网络不在路由表中 )
将该项目加入路由表; //新开了一条路
else if( 下一跳路由器地址相同 )
用item替换路由表中的项目 //原来走的路发生了变化,要改距离了
else if( item.distance < 路由表.item.distance )
用item替换路由表中的项目 //找到一条更近的路
else
啥也不干 //找到一条更远的路,呵呵
}
3. if(lastReceiveTime - now >= 3min)
set distance[X] = 16 //3分钟都没消息过来,到不了这个路由器了
案例1:R6收到R4发来的路由更新信息
案例2:
2.5 RIP2协议的报文格式
- RIP2报文由首部和路由部分组成
- 路由部分由不超过25个路由信息组成,每个路由信息由20个字节
- 地址族标识符用来标志使用的地址协议(2:IP协议、0:Request协议)
- 路由标记填入AS的号码
- RIP的简单鉴别功能:用第一个路由作为鉴别信息
2.6 RIP协议特点
- 好消息传播快、坏消息传播慢
- 当网路故障时,要经过较长的时间才能将此信息传送到的所有的路由器
- RIP的更新过程收敛较慢
3. 内部网关协议OSPF
3.1 基本特点
- Open Shortest Path First
- 采用了分布式的链路状态协议
3.2 三个要点
- 采用洪泛法向本AS的所有路由器发送信息
- 发送的信息是与本路由器相邻的所有路由器的链路状态[1]
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此消息
3.3 链路状态数据库
- 路由器之间频繁交换链路状态信息,最终所有路由器都能建立一个链路状态数据库
- 链路状态同步:在全网范围内一致的拓扑状态图
- OSPF的更新过程收敛的较快
3.4 OSPF的区域
- 为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域
- 每个区域都有一个32位的区域标识符
- 区域不能太大,区域内尽量不超过200个路由器
- OSPF采用层次结构的区域划分,在上层的区域叫做主干区域,区域标识符为0.0.0.0,用于连通其他在下层的区域
- 好处:将交换链路状态信息的范围局限于每一个区域而不是整个自治系统,减少了整个网络上的通信量,且在一个网络内部的路由器只存储本区域的完整网络拓扑,不需关心其他区域的网络拓扑情况
3.5 OSPF数据报
- OSPF直接使用IP数据报传送,而不是UDP
- OSPF构成的数据报很短,这样做可以减少路由信息的通信量,不用将长的数据报分片传送
3.6 OSPF的分组和基本操作
- 类型1,问候(Hello)分组
- 类型2,数据库描述(Database Description)分组
- 类型3,链路状态请求(Link State Request)分组
- 类型4,链路状态更新(Link State Update)分组(洪泛法)
- 类型5,链路状态确认(Link State Acknowledgement)分组
- 基本操作:
- 可靠性(ACK)
3.7 OSPF的一些特点
- OSPF对不同的链路可以根据需求设置不同的度量,也就是对不同类型的业务可计算出不同的路由
- 若到同一目的网络有多条相同度量的路径,则可以将通信量分配给这几条路径,即多路径间的负载均衡
- OSPF路由器之间交换的分组都具有鉴别的功能
- 支持可变长度的子网划分和无分类编址CIDR
- 每个链路状态都带上一个32位的序号,序号越大状态越新
4. 外部网关协议BGP
BGP是不同自治系统的路由器之间交换路由信息的协议
4.1 BGP使用环境
- 互联网规模太大,使得自治系统之间路由选择非常困难
- 在AS间交换 可达性 信息是一种比较合理的做法
- 自治系统间的路由选择必须考虑有关策略
- BGP只能是力求寻找一条能到达目的网络的且比较好的路由(不兜圈子),而非最佳路由
4.2 BGP发言人
- 每一个自治系统的管理员至少选择一个路由器作为该AS的BGP发言人
- 一般来说,两个BGP发言人都是通过一个共享网络连接在一起的
4.3 BGP交换路由信息
- 一个BGP发言人与其他AS中的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息
- 使用TCP连接能提供可靠服务,简化路由选择协议,使用TCP连接交换路由信息的两个BGP发言人彼此成为对方的邻站或对等站,可以互相交换路径向量
4.4 BGP协议的特点
- BGP协议交换路由信息的结点数量级是AS数的量级,且每个AS的BGP发言人的数目较少
- BGP支持CIDR
- BGP在刚刚运行时需要与邻站交换整个路由表,但之后发生变化时只需更新有变化的部分,能节省网络带宽和减少路由器的处理开销
4.5 BGP-4报文
- 打开(Open)报文
- 更新(Update)报文
- 保活(KeepAlive)报文
- 通知(Notification)报文
5. 路由器的构成(了解)
路由器是互联网中的关键设备,是一种典型的网络层设备;
主要作用是连通不同的网络、选择信息传送的线路来转发分组;
工作原理:路由器有许多输入输出端口,将某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器,直到到达终点
5.1 路由器的结构
-
路由选择部分
核心构件是路由选择处理机,其任务是根据选定的路由选择协议构造出路由表,同时与相邻路由器交换路由信息来更新和维护路由表
-
分组转发部分
- 交换组织:根据转发表对分组进行处理
- 输入端口、输出端口
5.2 路由器工作处理
-
输入端口接收分组处理
- 路由器的输入端口里面装有物理层、数据链路层和网络层的处理模块
- 数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理
- 输入端口中的查找和转发功能在路由器的交换功能中是最重要的
-
输出端口发送分组
-
分组丢弃问题
- 若路由器处理分组的速率赶不上分组进入队列的速率,队列最终满时后面进入的分组会被丢弃
- 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因
-
本路由器与哪些路由器相邻,以及该链路的度量(权重) ↩︎
Q.E.D.