网络层的功能:异构网络互连、路由与转发
第 3 章只管一跳,第 4 章管整条路。 网络层把分组从源主机经过多个网络、多段链路送到目的主机,这件事拆成两个动作:路由选择决定走哪条路,分组转发决定分组到了一台路由器之后从哪个接口出去。
本页讲网络层提供什么样的服务、为什么需要”互连”、以及路由与转发的分工。两种服务方式(虚电路与数据报)的对比见 4.1.3。本页没有错题,但 4.1 的习题有一半考的是这里的边界:路由器互连的网络哪些层可以不同、路由表里到底记了什么。
机制
网络层提供什么样的服务
网络层提供主机到主机的通信服务,主要任务是将分组从源主机经过多个网络和多段链路传输到目的主机。这项任务可以划分为分组转发和路由选择两种重要功能。
关于”可靠性该由谁来保证”,历史上有两种主张。OSI 参考模型曾主张在网络层使用面向连接的虚电路服务,认为应由网络自身来保证通信的可靠性;TCP/IP 体系的网络层则提供无连接的数据报服务,核心思想是由用户主机来保证通信的可靠性。
互联网采用后一种设计:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。所传送的分组可能出错、丢失、重复、失序或超时,网络层对此不做保证;通信的可靠性由更高层的传输层负责。这样做使网络中的路由器可以做得比较简单,价格低廉,网络造价大大降低,运行方式灵活,能够适应多种应用(TCP/IP 网络层提供什么服务 2011 年考过)。
4.1.1 异构网络互连
互联网是由全球范围内数以百万计的异构网络互连起来的,这些网络的拓扑结构、寻址方案、差错处理方法、路由选择机制都不尽相同。王道对”异构”的界定是:传输介质、数据编码方式、链路控制协议以及不同的数据单元格式和转发机制不同,这些特点分别在物理层协议和数据链路层协议中定义。
网络互连是指将两个以上的计算机网络,通过一定的方法,用一些中继系统相互连接起来,以构成更大的网络系统。根据所在的层次,中继系统分为 4 种:
| 层次 | 中继系统 | 算不算网络互连 |
|---|---|---|
| 物理层 | 转发器、集线器 | 不算:只是把一个网络扩大了 |
| 数据链路层 | 网桥、交换机 | 不算:从网络层看仍是同一个网络 |
| 网络层 | 路由器 | 算:网络互连通常就是指用路由器连接网络并进行路由选择 |
| 网络层以上 | 网关 | —— |
由于历史原因,许多有关 TCP/IP 的文献也将网络层的路由器称为网关。主机配置里的”默认网关”指的就是与本网络相连的那台路由器的接口(4.2.4)。
TCP/IP 在网络互连方面的做法是:在网络层采用标准化协议,而相互连接的网络可以是异构的。因为参与互连的计算机网络都使用相同的 IP,这些性能各异的网络在网络层上看起来就像一个统一的网络,称为虚拟互连网络,简称 IP 网络。使用 IP 网络的好处是:IP 网上的主机进行通信时,就好像在单个网络上通信一样,看不见互连的各个网络的具体异构细节(如具体的编址方案、路由选择协议等)。
4.1.2 路由与转发
路由器主要完成两个功能:
- 路由选择(确定哪一条路径)。根据路由选择协议构造路由表,同时经常或定期地与相邻路由器交换信息,获取网络最新拓扑,动态更新维护路由表,以决定分组到达目的地节点的最优路径。
- 分组转发(当一个分组到达时所采取的动作)。路由器根据转发表将分组从合适的端口转发出去,关键操作是转发表查询、转发,以及相关的队列管理和任务调度。
两张表的关系是:路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。在讨论路由选择的原理时,往往不区分转发表和路由表,而笼统地使用”路由表”一词。
flowchart LR P["路由选择协议<br/>(与相邻路由器交换信息)"] --> RT["路由表<br/>(面向拓扑计算)"] RT --> FT["转发表<br/>(面向快速查找)"] IN["到达的分组"] --> LOOK{"查转发表"} FT --> LOOK LOOK --> OUT["从对应接口转发"]
上半部分是控制平面,下半部分是数据平面。这一划分正是 SDN 的出发点:把上半部分从每台路由器里抽出来集中处理(4.1.4)。路由器内部如何实现这两部分见 4.7.2。
路由表里记的是”下一跳”,不是”整条路”。 为了提高查询效率并减少维护内容,路由表只保留到达目的地址的下一个路由器的地址,而不保留整个传输路径;同时用目的网络而不是目的主机作为表项,使一个表项覆盖很多台主机。所以路由表通常包含目的网络和到达该目的网络路径上的下一个路由器的 IP 地址。每台路由器只知道下一跳,分组到了下一跳路由器才知道再下一跳怎么走;源主机则只把分组交给默认网关——源主机和中间路由器都不知道分组要经过的完整路径。
路由器转发分组采用存储转发机制:先接收整个分组,对分组进行错误检查,出错则丢弃,否则存储这个正确的分组,最后根据路由选择的结果将它转发到合适的端口。
边界
“路由器互连的网络哪些层可以不同”:物理层、数据链路层、网络层都可以不同,网络层以上必须相同。 路由器是第三层设备,向传输层及以上隐藏下层的具体实现;网络层之上的协议数据路由器不能处理,所以那部分必须相同。王道指出这道题(4.1.6 第 3 题)容易误选”网络层协议必须相同”,原因是今天的互联网网络层几乎都是 IPv4;而用特定的路由器连接 IPv4 网络与 IPv6 网络,就是网络层协议不同也能互连的例子(过渡技术见 4.3.4)。
路由表的下一跳是 IP 地址,不是 MAC 地址。 下一跳路由器的 MAC 地址是在转发那一刻用 ARP 解析出来的(4.2.5),不写在路由表里。
路由器用存储转发,不用直通。 以太网交换机可以只看完目的 MAC 就开始转发(3.8.2 直通交换),路由器则必须收完整个分组、检验首部之后才能转发。
“尽最大努力交付”是不做保证,不是随意丢弃。 网络层会尽力把分组送到,只是出错、丢失、失序时不负责补救;丢包通常发生在队列溢出、TTL 减为 0、首部检验出错这几种情形。
对照速查
| 说法 | 对错 |
|---|---|
| 用集线器或交换机连接两个局域网也属于网络互连 | ❌(从网络层看仍是同一个网络) |
| 路由器互连的网络,网络层协议必须相同 | ❌(网络层以上必须相同) |
| 异构指的是物理层和数据链路层的差异 | ✅ |
| 路由表中记录了到达目的网络的完整路径 | ❌(只记下一跳) |
| 路由表中的下一跳是下一个路由器的 MAC 地址 | ❌(IP 地址) |
| 源主机知道分组到达目的主机的完整路径 | ❌ |
| 路由器必须先接收到整个分组才能开始转发 | ✅(存储转发) |
| TCP/IP 网络层提供无连接、不可靠的数据报服务 | ✅(2011) |
考点
- 4 种中继系统;网络互连通常指用路由器互连
- 异构 = 物理层、链路层不同;路由器互连时网络层以上必须相同
- 路由器两大功能:路由选择(控制平面)+ 分组转发(数据平面);路由表 → 转发表
- 路由表项 = 目的网络 + 下一跳路由器的 IP 地址;谁都不知道完整路径
- TCP/IP 网络层:无连接、尽最大努力交付(2011)
链接
- 🏠 返回总览:计算机网络第 4 章:网络层总览
- ➡️ 下一节:4.1.3 网络层提供的两种服务
- 🔗 4.1.4 SDN(控制平面与数据平面分离)
- 🔗 4.7.2 路由器的组成和功能
- 🔗 3.1.1 数据链路层所处的地位(一跳与整条路)
- 📖 名词库:第 4 章名词库