3 网络层
2832字约9分钟
2022-06-09
计算机网络五层模型之网络层:实现主机到主机的通信。
网络层能够被分解为两个相互作用的部分,即数据平面和控制平面。
数据平面:即网络层中每台路由器的功能,决定如何(本地)转发。
控制平面:即网络范围的逻辑,控制路由器之间的路由方式。
路由器的工作原理:
路由器结构
- 输入端口:
- 终结入物理链路的物理层功能
- 执行查找转发表的功能
- 交换结构:是完全包含在路由器中的网络
- 输出端口:存储接收的分组并执行必要的链路层和物理层功能
- 路由选择处理器:执行路由选择协议(传统路由器),负责与远程控制器通信(SDN 路由器)
输入端口处理和基于目的地转发
输入端口通过目的地址的前缀与前缀查找表进行匹配,当有多个匹配时,该路由器使用最长前缀匹配规则进行匹配转发。
交换
交换结构位于一台路由器的核心部位。交换可以用许多方式完成。
- 经内存交换:在 CPU 的控制下,先将输入端口分组复制到处理器内存中,再选择合适的端口复制到输出端口的缓存中,即一个分组有两步操作。经过共享系统总线一次只能执行一次内存读/写,即不能同时转发两个分组。
- 经总线交换:让输入端口为分组计划一个交换机内部标签,指示着本地输出端口。当传输一个分组时,该分组能被所有输出端口收到,但只有与该标签匹配的端口才能保存该分组。如果多个分组同时到达路由器,则其他分组必须等待。
- 经互联网络交换:由 2N 条总线组成,纵横式网络能够并行转发多个分组。
输出端口处理
输出端口处理取出已经存放在输出端口内存中的分组并将其发送到输出链路上。
何时出现排队
- 输入排队:当交换结构不能快得使得所有分组无时延地通过它传送,将会在输入端口处出现分组排队。考虑纵横式交换的一种输入排队线路前部阻塞(两个分组不同输入端口经往同一个输出端口,则一个端口队列因为头部被阻塞)
- 输出排队:输出端口在一个单位时间内仅能传输一个分组,其他分组在输出缓存中排队。当没有足够内存容纳分组时采取策略:丢弃新来的分组(弃尾策略)。在某些情况下,在缓存填满之前丢弃分组是有利的(主动队列管理:随机早期检测)
分组调度
- 先进先出(FIFO)链路调度规则
- 优先权排队规则,同一优先级采用 FIFO 方式完成。在非抢占式优先权排队规则下,分组一旦开始传输,就不能被打断。
- 循环和加权公平排队。
- 循环排队规则:根据不同的类别分配到不同队列,将依次从队列取出,队列为空则从跳到下一个队列。
- 加权公平排队:假设有三个队列,则执行一次取出操作是(0, 1, 1, 2, 2, 2),则此时是有权值的。
IP 数据报
IPv4 数据报格式
- 版本号:0100 IPv4
- 首部长度:具有可变首部长度(选项),标识报文数据开始的地方。
- 服务类型:区分不同类型的 IP 数据报。
- 标识、标志、片偏移:与 IP 分片有关。
- 寿命 TTL:确保数据报不会长时间在网络循环
- 协议:值为 6 表示 TCP,值为 17 表示为 UDP。
IPv4 地址
IP 地址与接口有关,而与主机、路由器却没有太多关联。适用于主机、路由器内部和它们之间的物理链路和逻辑链路接口。按传统的分类方法可分为 A、B、C、D、E类。近年来已经广泛使用无分类 IP 地址进行路由选择。
IPv4 数据报分片
一个链路层帧能承载的最大数据量叫做最大传送单元(Maximum Transmission Unit, MTU),当路由器发现输出链路的 MTU 比 IP 数据报长度小时,需要进行分片分成多个较小的 IP 数据报,这些被称为片。数据报的重新组装则是端系统的工作。
分片相关字段:
- 标识:占 16 位。每产生一个数据报,产生一个序号给标识字段。目的是为了分片后的各数据报片最后能正确地重装成为原来的数据报。
- 标志:占 3 位,仅低 2 位有意义:
- 最低位 MF (More Fragment)。为 1 表示后方还有分片。
- 中间位 DF (Don't Fragment)。为 1 表示不允许分片。
- 片偏移:占 13 位。分片后在原分组的相对位置,以 8 字节为单位。
IP 分片示例:
子网划分
子网掩码:将网络号和子网号全置1,主机号全置0,即得到子网掩码。
采用子网掩码后,路由器的寻址将演变为两级寻址过程:1. 检查网络号 2. 检查子网号。
无间域路由 CIDR
CIDR 最主要的特点有两个:
- CIDR消除了传统的A类、B类和C类地址以及划分子网的概念
- CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块 ”
编址格式
IP地址::={<网络前缀>,<主机号>}
斜线记法:192.168.0.1/24
CIDR 路由匹配
存在多个路由匹配项,选取最长前缀进行路由
主机如何获得 IP 地址
手工配置
DHCP 从服务器上动态获取 IP 地址(还能获得网关地址,DNS 地址,子网掩码)
网络地址转换 NAT
为什么需要 NAT
- 外网获取 IP 地址资源有限
- 内网 IP 变动无需告知外网
- 更换 ISP 后内网 IP 地址不变
- 内网主机外网不可见
三种地址转换方式
- 静态 NAT:一个全球地址对应一个本地地址
- 动态 NAT:一个全球地址对应多个本地地址
- 端口 NAT:一个本地地址的端口对应到一个全球地址的端口
NAT 下内网能访问外网,外网不能访问内网
NAT 内网访问方案
端口映射:采用端口 NAT,在路由器中静态地为服务器配置一条记录
通用即插即用 UPnP:内部主机通过 IGD 协议了解公共 IP 地址,内部主机向外部公开(公共 IP,公共端口)
中继:通过中继建立连接
* IPv6 数据报
ICMP 协议
网际控制报文协议(Internet Control Message Protocol):
ICMP报文种类 | 类型的值 | ICMP报文的类型 |
---|---|---|
差错报告报文 | 3 | 终点不可达 (路由器或主机不能交付) |
11 | 时间超过 (TTL 为 0 ) | |
12 | 参数问题 (数据报首部错) | |
5 | 改变路由(Redirect) | |
询问报文 | 8或0 | 回送(Echo)请求或回答 |
13或14 | 时间戳(Timestamp)请求或回答 |
应用:
- 分组网间探测(Packet InterNet Groper,Ping):是用来测试两台主机之间的连通性。是应用层直接使用网络层 ICMP 的例子。
- Tracert:跟踪路径,数据报封装的是无法交付的 UDP 用户数据报。接下来发送一系列 TTL 递增的数据报,接下来收到一系列 ICMP 时间超过差错报告报文。
IGP 内部网关协议
链路状态选路算法 -- OSPF 协议
- Open:公开发表
- SPF:采用 DIjkstra 算法,最短路径优先
三个要点:
- 协议交互范围及方法
- OSPF 协议消息限于本自治系统域内
- OSPF 协议消息采用泛洪法发送
- 协议交互信息内容:与本路由器相邻所有路由器的链路状态
- 协议交互时机:链路状态发生变化时
Dijkstra 算法
距离向量选路算法 RIP协议
RIP 路由表更新算法:
路由器X得到相邻路由器Y的路由表,从而得知:Y到网络Z的最短距 离为N。
如果路由器X没有到网络Z的路由条目,则添加一条经由路由器Y到网 络Z距离N+1的路由条目。
如果路由器X已有到网络Z的路由条目,其距离为M,如果M>N+1, 则更新该条目为经由路由器Y到网络Z距离N+1,否则不更新。
链路状态改变时的特点:
- 好消息传递得快
- 坏消息传递得慢
- 无穷计数
- 路由环路
路由环路与无穷计数:
更新后,Z 到 X 经由 Y 仍然是 5,故一次迭代后 Y 到 X 是 5 + 1 经由 Z,于是 Y、Z 持续迭代更新直至 51、50 为止。
毒性逆转:
如果 Z 的最短路径要经过 Y,那么告诉 Y 自己到目的节点的距离是 ∞。
不能解决问题:
当 CD 断开后,间接性地躲避了毒性逆转。
重要参数:
- 链路费用:相邻费用为 1 跳,最大限制为 15
- 通告周期:选路更新通告周期为 30 秒
- 邻居离线:判定周期为 180 秒
- 协议端口:基于 UDP,端口 520
EGP 外部网关协议
BGP
对于相同 AS 中的目的地而言,在路由器转发表中的表项由 AS 内部路由选择协议所决定,而对于该 AS 外部的目的地则是 BGP 的用武之地。
作为一个 AS 间的路由选择协议,BGP 为每台路由器提供了一种完成以下任务的手段:
- 从邻居 AS 中获得前缀的可达信息。
- 确定到该前缀的”最好的“路由(路由选择:e.g. 热土豆算法:确定在本网络最小开销)
路由选择小结
RIP | OSPF | BGP | |
---|---|---|---|
协议类型 | IGP | IGP | EGP |
信息表达格式 | 距离-向量协议 | 链路-状态协议 | 路径向量 |
交换信息范围 | 相邻路由器 | 自治系统或区域内路由器 | BGP发言人 |
交换信息内容 | 路由表 | 链路状态 | 路径向量 |
交换信息时间 | 30S | 当链路状态发生变化 | 有变化 |
原则 | 最短路径 | 最小代价 | 可达性 |
收敛过程 | 较快 | 快 | 快 |
传输协议 | UDP | IP | TCP |
适用网络类型 | 小型网络 | 大型网络 | 自治系统之间 |
衡量标准 | 距离 | 可有多种度量标准 | 无 |