网络层 Network Layer
教材:计算机网络第8版
章节:第四章网络层
内容:b站王道考研-计算机网络-网络层 + 课堂笔记
定义与概念
网络层定义
ISO定义
目标:对上层提供简单灵活的、无连接的(隐藏下层数据传输、协议等信息)、尽最大努力交付的数据报(分组)服务
基本技术实现:端到端连接
功能
路由选择与分组转发
转发:达到路由器的输入链路的数据报转发到该路由的输出链路
路由选择:控制数据报从源主机到目的主机的路径中路由器之间的路由方式
控制层面:控制和管理网络协议的运行,如OSPF、RIP、BGP(根据路由选择协议创建本路由的路由表,有许多路由器协同工作,采用软件计算,速度慢)
数据层面:对于数据处理过程中各具体处理转发过程(路由器根据转发表把收到的分组从查找到的对应接口转发出去,独立工作,采用硬件转发,速度快)
SDN软件定义网络
SDN方法:SDN路由器中,路由选择处理器负责于远程控制器通信,目的是接收远程控制器计算的转发表项。
SDN控制器:维护准确的网络状态信息,为运行在控制平面中的网络控制程序提供信息
网络控制应用程序:根据SDN控制器提供的方法,这些程序通过这些方法能够监视、编程和控制下面的网络设备
异构网络互联
拥塞控制
所有节点来不及接收分组而导致的大量丢失,就会使网络处于拥塞状态
可以采用开环控制和闭环控制进行缓解
路由转发
IP协议主要特点
- 典型实例
- 尽力而为的服务,无连接不可靠传输
- 源主机-路由器,路由-路由,路由器-目的主机
- 实现底层透明
- 异构网络互联,提供统一、整体的网络
IP数据报
格式:首部20B+40B数据部分
-
首部分为固定部分和可变部分
-
首部长度为4B,单位为4B
-
服务类型:期望获得哪种类型的服务
-
总长度:首部+数据,单位1B,最大不能超过MTU(最大传送单元)
-
生存时间TTL:IP分组保质期,每经过一个路由便-1,变成0即丢弃
-
协议:ICMP-1;IGMP-2;TCP-6;EGP-8;IGP-9;UDP-17;IPv6-41;ESP-50;OSPF-89
-
首部检验和:检验首部
-
源IP地址和目的IP地址都是32位
-
可选字段:0-40B,用来支持排错和测量以及安全
-
填充,全为0,把首部补充成4B的整数倍
数据报分片
最大传送单元MTU:数据链路层数据帧可封装数据的上限,则数据报长度过长就需要分片
- 标识:同一数据报的分片使用同一标识
- 标志位-3位:最后一位MF表示分片位置;中间位DF表示是否允许分片
- 片偏移:较长分组分片后,某片在原分组中的相对位置,单位8B(除最后一个分片,每个分片的长度一定是8B的整数倍)
例题:
首部(20B) 数据部分(3800B) 需要分片为长度不超过1420B的数据报片
每个数据报片都需8B的整数位,因此不超过1420B,所以每片大小1416B最大
这里给出每个片为1400B,则数据部分分片:1400B(片偏移0),1400B(片偏移 1400 B 8 B = 175 \frac{1400B}{8B}=175 8B1400B=175,1000B(片偏移 2800 B 8 B = 350 \frac{2800B}{8B}=350 8B2800B=350)
IPv4地址
IP地址:唯一的32位/4字节标识符,表示路由器主机的接口
地址格式:{<网络号>,<主机号>},点分十进制,每8位一分点,并转化为十进制
分类:
私有IP地址:
网络地址转换NAT
地址类别 | 地址范围 | 网段个数 |
---|---|---|
A类 | 10.0.0.0-10.255.255.255 | 1 |
B类 | 172.16.0.0-172.31.255.255 | 16 |
C类 | 192.168.0.0-192.168.255.255 | 256 |
路由器对目的地址是私有IP地址的数据报一律不转发
- 广播地址-指定网络广播
- 所有主机号全为1
- 指定网络上的所有主机都要接受
- 有限广播地址-本地网络广播
- 32个bit全1
- 用于在不知道自己所在网络的情况下,向本网络发送
- 特殊广播地址
NAT:在专用网连接到因特网的路由器上安装NAT软件
NAT路由器:安装了NAT软件的路由器,至少有一个有效的外部全球IP地址
NAT方案:
-
多地址NAT
- 从多个外部地址中选择一个对应内部地址
- 最多只有k台内部主机同时访问internet
-
端口映射NAT
- 只要一个外部地址
- 通过TCP和UDP端口号在内部和外部之间建立映射,进行地址转换
-
地址危机:32bit地址空间
-
分配策略
- 理论上32bit可供4billion使用
- 实际上32bit有250million需要
-
历史原因
- 互联网发展阶段初期的地址分配策略不合理
争议:
- 违反端到端主张
- 破坏内部嵌入IP应用
- 破坏了所有假定全球唯一的IP地址协议
- 增加了网络时延
- 多个NAT设备间的同步困难
子网
子网划分
分类IP地址的弱点:
- IP地址空间的利用率有时很低
- 两级IP地址不够灵活
子网:将大的网络划分成小的网络,每个网络都有自己的子网地址
两级IP地址
网络号 | 主机号 |
---|
三级IP地址
IP地址=子网地址+主机地址
子网地址=网络地址+网络内子网地址
网络号 | 子网号 | 主机号 |
---|
子网划分后,对外仍表现为一个网络,外部代为看不见本单位内的子网划分
主机号不能去全为1也不能全为0
子网掩码
每个子网定义一个32位的二进制数,网络地址和子网地址都为1,主机地址都为0
掩码作用:
子网掩码和IP地址逐位进行与运算,得到子网网络地址
习题:
分组转发
路由表内容:目的网络地址;目的网络子网掩码;下一跳地址
IP数据报的交付
- 只有下一跳是目的主机才是直接交付
- 下一跳节点不是目的主机都是间接交付
直接寻径:
间接寻径:第三层数据交换路由寻径
路由转发分组算法:
- 提取目的IP地址
- 是否直接交付–目的主机在本网内
- 特定主机路由–进行间接交付
- 检测路由表中有无路径
- 默认路由(目的网络和子网掩码)0.0.0.0
- 丢弃,报告转发分组出错–到达最大生存时间
无分类编址CIDR
1.消除了A类、B类和C类地址以及划分子网的概念
CIDR记法:IP地址后加上/
,写上网络前缀的位数,如128.14.32.0/20
(“/20地址快”)
2.融合子网地址与子网掩码,方便子网划分
CIDR把网络前缀相同的连续的IP地址组成 一个“CIDR地址快”
构成超网
超网:一个组织所属的几个C类网络合并成一个更大范围的逻辑网络
- 优点:
- 减少路由表表项数量,节省路由器中的资源
- 按实际需求进行网络地址分片,提高地址空间利用率
- 超网的掩码小于24位
将多个子网聚合成大的子网, 就是构成超网,或路由聚合
方法:将网络前缀缩短(所有网络地址的交集)
最长前缀匹配:使用CIDR时,查找路由表可能得到几个匹配结果(跟 网络掩码按位相与),应选择具有最长网络前缀的路由,前缀越长,地址快越小,路由越具体
IP地址与MAC地址转换
IP地址放在IP数据报的首部,硬件地址放在MAC帧的首部
IP数据报经过不同链路时,IP数据报中封装的IP地址不变,而MAC帧中的硬件地址会发生改变
地址解析协议ARP
ARP:完成主机或路由器IP地址到MAC地址的映射–解决下一跳走哪的问题
使用过程:主机A向主机B发送IP数据报时
- 检查ARP高速缓存查找主机B的IP地址,有对应表则取出MAC地址并写入MAC帧,没有则用目的主机(主机B)的MAC地址为``的帧封装广播ARP请求分组,同一局域网中所有主机都收到该请求,但非目的主机不应答。
- 目的主机收到请求后向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)
典型情况:通过子网掩码相与得到子网进行对比,判断是否在同一子网(局域网)
- 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址
- 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器或网关的硬件地址
- 路由器发给本网络的主机A:用ARP找到主机A的硬件地址
- 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址
ARP作用:
- 存放IP地址到MAC地址的映射表
- 映射表动态更新
- 存放获得的IP地址到MAC地址的绑定
- 减少ARP广播的通信量
- 发送请求分组时,将自己的IP地址到MAC的映射写入ARP请求分组
- 收到请求分组时,将分组中发送方的映射写入自身的ARP高速缓存中
映射表<IP地址,MAC地址,生存时间,类型,其他>
- 超过生存时间的项目都从高速缓存中删除,以适应网络适配器变化
逆向地址解析协议RARP
RARP用于将物理地址映射成IP地址
动态主机配置协议DHCP
DHCP:动态主机配置协议是应用层协议,使用客户/服务器方式通过广播方式进行交互,基于UDP
DHCP提供即插即用机制,主机可以从服务器上动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租
工作过程:
- 主机广播DHCP发现报文
- 试图找到网络中的服务器,服务器获得一个IP地址
- DHCP服务器广播DHCP提供报文
- 服务器拟分配给主机一个IP地址及相关配置,先到先得
- 主机广播DHCP请求报文
- 主机箱服务器请求IP地址
- DHCP服务器广播DHCP确认报文
- 正式将IP地址分配给主机
TCP/IP协议栈
网际控制报文协议ICMP
ICMP:网际控制报文协议,支持主机或路由器进行差错(异常)报告、网络探询,通过发送特定的ICMP报文方式
ICMP报文
ICMP差错报告报文
发生差错报文的情况:
- 终点不可达—无法交付
- 源点抑制—拥塞导致丢数据
- 时间超过—生存时间为0
- 参数问题—首部字段不正确
- 改变路由(重定向)—有更好的路由
数据字段
不发送差错报文的情况:
- 对ICMP差错报告报文不在发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发生ICMP差错报告报文
- 对具有组播地址的数据报不发送
- 对具有特殊地址的数据报不发送
ICMP询问报文
- 回送请求和回答报文
- 主机或路由向特定目的主机发出询问,收到报文的主机必须给源主机或路由发送ICMP回送回答报文。
- 测试目的站是否可达以及了解相关状态
- 时间戳请求和回答报文
- 请求某个主机或路由回答当前的时间和日期
- 用来进行时钟同步和测量时间
- 掩码地址请求和回答报文
- 路由器询问和通告报文
ICMP应用
- PING
- 测试两主机之间的连通性,使用回送请求和回答报文
- Traceroute
- 跟踪一个分组从源点到终点的路径,使用时间超过差错报告报文
IPv6
Ipv4不足:
- 地址危机
- 移动性差
- 路由表膨胀
- 安全问题
- 配置复杂
- QoS和性能问题
- 端到端业务模式无法实施
IPv6为解决32bit地址空间耗尽问题
- 扩展了是寻址能力
- 改进了对扩展和选项的支持
- 增加了流量标签功能
- 简化了报头格式
IPv6地址
- 地址长度为128bit,是IPv4的4倍
- IPv6地址空间数量约为3* 1 0 38 10^{38} 1038
- IPv6将IPv4的校验和字段彻底移除,减少了每一跳的处理时间
- IPv6将IPv4的可选字段移出首部,变成了扩展首部,路由器通常不对扩展首部进行检查,提高了路由器的处理效率
- IPv6支持即插即用,不需要DHCP协议
- IPv6只能在主机分片,IPv4可以在路由器和主机分片
- IPv6支持资源的预分配,支持实时视像等,保证一定带宽和时延的应用
- IPv6取消了协议字段,改成下一个首部字段
- IPv6取消了总长度字段,改用有效载荷长度字段
- IPv6取消了服务类型字段
- 地址表示:冒泡十六进制-x❌x❌x❌x:x
- 每个字段前面的0可以省略
- 简化前地址:2001:0DAB:0000:0000:200C:0000:0000:00A5
- 简化后地址:2001:DAB:0000:0000:200C::A5
- 有效载荷长度为16bit,报头后载荷字节数最大为64K
IPv6数据报的一般格式
基本首部固定40B
- 版本:指定IPv4还是IPv6
- 优先级:数据报的类别和优先级
- 流标签:属于同一个流的数据报都一样
- 有效载荷长度:有效载荷长度的位数
- 下一个首部:指向扩展首部
- 跳数限制:生存时间
- 扩展首部:其中的首部指向下一个扩展首部;没有首部则指向数据
IPv6基本地址类型
单播:一对一通信,可做源地址+目的地址
多播:一对多通信,可做目的地址
任播:一对多中的一个通信,可做目的地址
IPv6向IPv4过渡的策略
双协议栈
在一台设备上同时启用IPv4协议族和IPv6协议栈。如果该设备是路由器,则其不同接口是分别连接了IPv4和IPv6,若是计算机,则同时拥有IPv4地址和IPv6地址,并同时具有两个协议地址的功能。
隧道技术
使用互联网的基础设施在网络间传递数据的方式。使用隧道传递数据可以是不同协议的数据包,可以将其他协议的数据帧重新封装然后通过隧道发送
路由选择
路由算法
-
静态路由算法
- 非自适应路由选择
- 不能及时适应网络状态变化
- 简单,开销较小
-
动态路由算法
- 自适应路由选择
- 能较好地适应网络状态变化
- 实现较为复杂,开销较大
设计约束:
- 正确
- 简单:最少物理资源,提供最有效功能
- 健壮稳定:故障率低
- 公平
- 最优:有哈准则选择最佳路径
- 收敛快速聚合:快速取得全网一致最佳路由
静态路由算法
人工设置管理表,对CPU无管理开销
不适用于拓扑变化、动态路由和大型网络,缺乏灵活,不能应付意外
洪泛算法
随即走动
最短路径路由算法:构建子网的拓扑图,图中每个节点代表一个路由器,每条弧代表一条通信线路。算法在图中找出两个路由间的最短路径
测量路径方法:节点数量;地理距离;传输延迟;距离、带宽等参数的加权函数;平均通信量、通信开销、队列平均长度等
基于流量的路由算法:及考虑拓扑结构,又兼顾网络负荷
前提:每对节点间平均数据流相对稳定并可预测
根据网络带宽和平均流量得出平均包延迟,因此路由选择问题归结为找到产生网络
可以提前离线
动态路由算法
距离向量路由算法DV
基本思想:
所有邻居对全网的认识发我:到全网的信息给我
定时信息交流:交流内容是路由器整个路由表信息
路由选择协议
自治系统AS:
是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。
内部网关协议IGP:在一个自治系统内部使用的路由选择协议,域内路由选择
外部网关协议EGP:在不同自治系统之间进行路由选择时使用的协议,域间路由选择
路由信息协议RIP
- 分布式的、基于距离向量的路由选择协议
- 简单
- 要求网络中每个路由器都要维护从他自己到每个目的网络的距离记录
距离(跳数):
- 路由器到直接连接的网络距离==1
- 路由器到非直接连接的网络距离==所经过路由数量+1
限制要求:
- 最佳路由就是距离最短的路由
- 距离最大值为16便视为不可达
- RIP在两个网络之间只选择距离最短的路由
特点:
- 仅和相邻路由器交换信息
- 交换的信息为自己的路由表
- 按固定时间间隔交换信息。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息
路由表:
目的网络 | 距离 | 下一跳地址 |
---|---|---|
更新规则:使用距离向量算法找出到达每个目的网络的最短距离
距离向量算法DV
对X路由发来的RIP报文:
- 修改RIP中信息:下一跳地址都改为X,并把所有的距离都+1
- 将路由表中没有的目的网络N直接添加,否则
- 路由表中下一跳为X,则将收到的项目替换原来的项目,否则
- 项目中距离小于路由表中距离,更新路由表
RIP2报文
组成:首部+路由
路由部分:
- 地址族标识符(地址类别):用来标志所使用的地址协议
- 路由标记:填入自治系统的号码
- 具体路由:指出某个网络地址、子网掩码、下一跳路由地址以及网络距离
RIP2具有简单的鉴别功能
RIP优点:实现简单,开销较小
RIP缺点:
- 网络规模有限,最大距离15
- 交换路由信息为完整路由表,开销较大
- 坏消息传播慢,收敛时间长
开放最短路径优先OSPF
克服RIP的缺点而开发,使用Dijkstra提出的最短路径算法SPF,采用分布式的链路状态协议LS
特点:
- 采用洪泛法:向本自治系统中所有路由器发送消息
- 消息是与本路由相邻的所有路由器的链路状态
- 链路状态:说明本路由器都和哪些路由相邻,以及该链路的度量
- 当链路状态发生变化或每隔一段时间(如30分钟),路由器才用洪泛法向所有路由器发送此信息
链路状态数据库
- 每个路由器最终都能建立
- 全网的拓扑结构图
- 在全网范围内一致–链路状态数据库的同步
- 每个路由器使用链路状态数据库中的数据构造自己的路由表
重要路由器:
- 主干路由器BR
- 区域边界路由器ABR
- 自治系统边界路由器ASBR
区域:
- 主干区域:标识符0.0.0.0,用来连通其他下层区域
- 优点:
- 减少了整个网络上的通信量
- 减少了需要维护的状态数量
- 缺点:
- 交换信息的种类增多了
- 使 OSPF 协议更加复杂了
OSPF分组类型:
- 问候 (Hello) 分组。
- 数据库描述 (Database Description) 分组。
- 链路状态请求 (Link State Request) 分组。
- 链路状态更新 (Link State Update) 分组。
- 链路状态确认 (Link State Acknowledgment)分组
工作过程:
- 确定邻站可达
- 若40s没有收到相邻路由发来的问候分组,则认为该相邻路由不可达
- 同步链路数据库
- 更新链路状态
- 只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法向全网更新链路状态
- 为确保链路状态数据库与全网的状态保持一致,每隔一段时间(如 30 分钟),要刷新一次数据库中的链路状态
指定的路由器DR
多点接入的局域网采用了指定的路由器 DR (designated router) 的方法,使广播的信息量大大减少。
指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。
Dijkstra-SPF算法
算法比较
路由信息复杂度:
时间复杂度
收敛速度
健壮性
外部网关协议BGP
BGP 是不同自治系统的路由器之间交换路由信息的协议
特点:
-
用于自治系统 AS 之间的路由选择
-
只能是力求选择出一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由。
-
互联网的规模太大,使得自治系统AS之间路由选择非常困难。
-
自治系统AS之间的路由选择必须考虑有关策略。
-
-
采用了路径向量PV 路由选择协议。
eBGP连接:
iBGP连接:
多标签协议转换MPLS与三层交换
MPLS又称2.5层协议,在2、3层之间
问题:
- 控制协议LDP比较复杂,扩展性差,运行维护困难
- LDP无法做到基于时延或带宽等要求的流量调度