欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅!
1 网络层提供的服务
在计算机网络中,网络层的核心任务是为数据传输提供服务。
关于网络层应该向运输层提供怎样的服务,在计算机通信中有两种主要的观点:
- 面向连接的可靠交付
- 无连接的数据报服务。
1.1 面向连接的可靠交付
计算机网络模仿电信网络,使用面向连接的通信方式。
通信之前先建立虚电路 VC (Virtual Circuit) (即连接),以保证双方通信所需的一切网络资源。
在虚电路服务中:
- 连接建立:通信双方需预先建立虚电路,网络会为通信分配必要资源。
- 可靠传输:分组可以实现无差错、按序、不丢失、不重复的传输。
- 路径固定:H1 发送给 H2 的所有分组都会沿着同一条逻辑路径(虚电路)传送。
注意:虚电路只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立了一条物理连接。
1.2 无连接的数据报服务
网络层要设计得尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。互联网的设计理念正是基于这一思路,为运输层提供灵活的、无连接的服务。
其特点包括:
- 无需连接建立:分组传输时不需预先建立连接,减少通信开销。
- 独立传输:每个分组(IP 数据报)独立传输,与前后分组无关,不进行编号。
- 尽最大努力交付:网络层不承诺服务质量,分组可能出错、丢失、重复或乱序,也不保证传输时延。
- 路径不固定:H1 发送给 H2 的分组可能沿不同路径传输。
在这种模型中,网络层主要处理数据转发,而可靠性由运输层协议(如 TCP)负责。这种方法的优势在于实现简单,扩展性强,尤其适合大规模复杂网络的需求。
【虚电路服务与数据报服务对比】
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
服务质量保证 | 可以将通信资源提前分配给每一个虚电路,容易实现 | 很难实现 |
2 网络层的两个层面
在网络层,两个主机间的通信需要经过多个路由器转发分组来完成。
网络层涉及两大主要功能:数据传输和路由选择。这些功能可进一步分为数据层面和控制层面。
①数据层面
- 功能:负责转发分组。路由器根据本地生成的转发表,查找匹配的接口并将分组转发。
- 工作模式:完全独立工作,与控制层面无直接关联。
- 性能特点:通过硬件实现,速度快,效率高。
②控制层面
- 功能:根据路由选择协议所用的路由算法计算路由,创建出本路由器的路由表。
- 工作模式:需要路由器之间协同操作。
- 性能特点:多依赖软件计算,处理速度相对较慢。
3 路由器
路由器是网络层的重要设备,主要负责实现网络中不同设备之间的通信。
其核心功能可以分为两部分:
- 分组转发
- 路由选择
3.1 分组转发
分组转发是路由器的基本功能,指的是将接收到的分组从一个接口转发到适当的输出接口,以便将分组送往目的地。
①工作流程
- 路由器从输入端口接收到一个分组。
- 分组的目标地址被提取并与路由表匹配。
- 根据匹配结果选择合适的输出端口。
- 分组通过输出端口转发到下一跳设备。
②特点
- 高效性:分组转发通常通过硬件(如专用 ASIC 芯片)完成,以实现高速转发。
- 实时性:分组转发需在短时间内完成,确保网络流量的低延迟。
③ 数据结构
转发表:记录目标网络和对应的下一跳信息,用于快速查找分组的转发路径。
④主要实现方式
最长前缀匹配:通过查找目标 IP 地址和路由表中最长匹配前缀,确定下一跳地址。
3.2 路由选择
路由选择控制数据报沿着从源主机到目的主机的端到端路径中路由器之间的路由方式,涉及构建和维护路由表,保证数据包能够通过最佳路径到达目标。
①工作流程
- 路由器通过路由选择协议与其他路由器交换路由信息。
- 路由协议根据网络拓扑和指定算法计算出最佳路径。
- 将路径信息更新到路由表中。
②特点
- 全局性:路由选择需要考虑整个网络的拓扑结构。
- 动态性:网络状态可能随时发生变化(如链路故障、流量拥塞),路由选择需要动态调整路径。
③数据结构
路由表:存储网络拓扑信息,记录目标网络的下一跳、路径开销等。
④路由选择协议
路由选择通过协议实现,不同协议根据算法的不同,可分为以下两类:
- 静态路由(Static Routing):
- 路由由管理员手动配置。
- 适用于网络拓扑稳定的小型网络。
- 动态路由(Dynamic Routing):
- 路由器通过路由协议动态学习和更新路由表。
- 适用于拓扑变化频繁的大型网络。
【转发与路由选择的对比】
功能 | 转发 | 路由选择 |
---|---|---|
定义 | 根据路由表将分组转发到下一跳设备。 | 计算最优路径并维护路由表。 |
工作频率 | 每次接收到分组时立即进行。 | 周期性或根据网络状态变化更新。 |
执行方式 | 硬件实现,速度快。 | 软件实现,需计算开销。 |
关注范围 | 单个分组的处理。 | 全局网络的路径优化。 |
数据结构 | 转发表(Forwarding Table)。 | 路由表(Routing Table)。 |
依赖协议 | 无需协议,仅需路由表支持。 | 依赖路由协议,如 OSPF、BGP 等。 |
3.3 分组转发与路由选择的协作
①路由选择负责构建转发表
- 路由选择的结果存储在路由表中,路由器根据路由表生成转发表。
- 转发表是路由表的精简版本,仅包含目标网络和下一跳的映射关系。
②转发依赖路由选择的结果
转发过程中,路由器直接查找转发表以决定分组的转发路径。
③动态调整
当网络拓扑发生变化时(如链路中断),路由选择协议会重新计算路径并更新转发表。
4 软件定义网络
①定义
软件定义网络(Software Defined Networking,SDN)是一种新型的网络架构,它通过将控制平面与数据平面分离,利用集中化的控制器来管理网络行为,从而实现网络的灵活管理和动态配置。
传统网络中的控制平面和数据平面紧密耦合,而 SDN 的核心理念是将这两个平面解耦,并通过软件对网络进行编程,提供动态可编排的网络管理能力。
- 远程控制器:作为集中式的控制层,负责计算最佳路由,并在每台路由器中生成正确的转发表。
- 路由器:作为数据层面设备,仅负责查找转发表并转发分组。