一、 网络层的功能和服务 (Network Layer Functions and Services)
我们可以把网络层想象成一个全球性的物流系统,它的核心任务是把一个“包裹”(也就是数据包)从全国任何一个地方的“发件人”(源主机)那里,送到另一个地方的“收件人”(目的主机)手中。无论中间要经过多少个城市、多少个中转站,网络层都要负责规划出一条路,把包裹送到。
这就是网络层的核心功能:实现任意两个网络节点之间的通信,完成端到端的传递 。为了完成这个任务,网络层主要做两件大事:
交换 (Switching): 在路上的各个中转站(路由器)之间建立临时的连接,让数据包可以一站一站地传下去 。
路由 (Routing): 从无数条可能的路径中,选择出一条最佳的路径来发送数据包。
具体功能拆解
为了实现路由和交换,网络层需要具备以下几项具体功能:
信源到信宿的传输: 将许多段独立的物理链路(比如两台路由器之间的网线)连接起来,逻辑上形成一条完整的传输路径 。
逻辑寻址 (Logical Addressing): 在数据包的头部,贴上“发件人地址”和“收件人地址”的标签,也就是 源IP地址 和 目的IP地址。这个地址是网络层的地址,跟下一层(数据链路层)的MAC地址不同,它能唯一标识网络中的一台设备 。
路由 (Routing): 这是网络层的核心智慧所在。它需要根据目的地址,决定数据包的下一站应该去哪里,最终选择一条从起点到终点的最佳路径 。
地址转换: 在需要时,将网络层的IP地址翻译成数据链路层的物理地址(如MAC地址),反之亦然 。
复用 (Multiplexing): 让同一条物理线路可以同时传输来自不同设备的数据,提高线路利用率 。
流量和拥塞控制: 像交通警察一样,调节进入网络的数据流量,避免因为某个路段车辆(数据包)太多而造成“交通瘫痪”(网络拥塞) 。
网络互连: 解决各种不同类型的网络(如有线网、无线网)互相连接时遇到的问题。
网络层提供的两种服务模型
网络层可以向上面的传输层提供两种不同风格的服务,这就像寄快递时你可以选择“普通快递”或“加急专送”一样。
1. 面向连接的服务 (Connection-Oriented Network Service – CONS)
这种服务模型可以比喻成 打电话 。
工作方式: 在通话(传输数据)前,必须先“拨号”建立一条连接,通话结束后再“挂断”拆除连接。整个过程分为 建立连接、传输数据、拆除连接 三个步骤 。
特点:
一旦连接建立,所有的数据包都会沿着这条预先确定的路径(称为“虚电路”)传输,就像电话线一样 。
路由器需要为这条连接保存状态信息,知道这个连接的数据包该往哪走。
优点: 能保证数据包按顺序到达,并且容易实现差错控制和流量控制。因为路径固定,数据包头部不需要携带完整的地址,开销较小。
缺点: 如果路径上的某个节点坏了,整条连接就都中断了,不够灵活。建立连接需要时间,速度比无连接服务慢。
典型技术: ATM、帧中继 (Frame Relay)、X.25。
2. 无连接的服务 (Connectionless Network Service – CLNS)
这种服务模型可以比喻成 寄平信。
工作方式: 不需要预先建立连接,直接把写好地址的信(数据包)扔进邮筒就行。
特点:
网络层对数据包的投递 尽最大努力 (Best-Effort),但不提供任何保证。信可能会寄丢、寄错顺序,或者重复。
每个数据包都带有完整的源、目的地址,被独立地进行路由选择。前一个数据包走的路,后一个数据包不一定也走。
优点: 非常灵活,如果某条路堵了,下一个数据包可以自动选择别的路走。如果可靠性由上层协议(如TCP)保证,那么这种方式速度快、开销低。
缺点: 不可靠,不保证数据包按序到达。每个数据包都必须携带完整的地址信息,头部开销较大。
典型技术: IP协议(也就是我们今天互联网使用的核心协议)。
为什么互联网选择“无连接”服务?
这是一个非常重要的设计决策!当初设计互联网时,有一个核心的争论:可靠性应该由谁来负责?是网络本身,还是通信的两个端点(主机)?
TCP/IP协议族最终选择了后者,它的设计思路是:
网络层(IP层)只提供一种简单、灵活、无连接、尽最大努力交付的服务。
这么做的好处是:
简化网络: 既然网络本身不负责保证可靠性,那么网络中的设备(比如路由器)就可以做得非常简单和便宜,不需要维护大量的连接状态。
适应性强: 不同的应用对网络的需求不同。比如,文件传输(FTP)要求绝对可靠,但对时间不敏感;而实时语音/视频通话则能容忍偶尔丢几个包,但对延迟非常敏感。一个只提供“尽力而为”服务的网络层,可以把“可靠性”这个选项交给上层协议(如TCP)和应用程序自己去决定,从而满足所有应用的需求。
生存能力强: 网络非常“皮实”,不容易因为局部故障而瘫痪。
事实证明,这个“端到端原则”的设计思想是极其成功的,它造就了今天如此庞大和灵活的互联网。
二、 网络层互连 (Network Layer Interconnection)
网络层的互连,顾名思义,就是把一个个独立的物理网络连接起来,形成一个更大的互联网。实现这个功能的关键设备就是 路由器 (Router)。
核心互连设备
| 设备 | 工作层次 | 主要功能 |
|---|---|---|
| 集线器 (Hub) | 物理层 | 简单地将信号广播到所有端口,不识别地址。 |
| 交换机 (Switch) | 数据链路层 | 根据MAC地址在 同一个网络内部 转发数据帧。可以看作是“局域网立交桥”。 |
| 路由器 (Router) | 网络层 | 根据IP地址在 不同网络之间 转发数据包。是连接不同网络的“关口”。 |
| 三层交换机 (Layer 3 Switch) | 网络层/数据链路层 | 既有交换机的高速转发性能,又有路由器的部分路由功能,可以看作是“带导航的立交桥”。 |
| 网关 (Gateway) | 可工作在所有层 | 主要用于协议转换,比如连接两个使用完全不同协议的网络。 |
路由器的核心工作 是接收从一个网络接口进来的数据包,查看它的目的IP地址,然后通过查询自己的“地图”(路由表),决定应该从哪个接口把这个数据包发出去,才能让它离最终目的地更近一步。
三、 路由选择原理 (Routing Principles)
路由选择是网络层的核心,它决定了数据包在网络中的“旅行路线”。
路由选择的基本要求
一个好的路由算法,应该力求满足以下几点:
正确性 (Correctness): 必须能把数据包送到正确的目的地。
简单性 (Simplicity): 算法本身不能太复杂,否则会消耗大量的计算资源。
坚定性 (Robustness): 即使网络发生故障或流量剧增,算法也能长时间稳定运行。
稳定性 (Stability): 算法应该能快速收敛到一个稳定的状态。
公平性 (Fairness): 对所有用户的流量都应公平对待。
最佳性 (Optimality): 能按照某个标准(如延迟、费用、跳数)找到“最佳”路径。
路由选择策略
主要分为两种策略:
分布式路由选择 (Distributed Routing)
思想: “人人为我,我为人人”。每个路由器都独立维护自己的路由表,并与自己的邻居们周期性地交换路由信息,互相学习,共同更新对整个网络拓扑的认识。
特点: 整个网络的路由决策是动态变化的,适应性强。
典型协议: RIP, OSPF。
集中式路由选择 (Centralized Routing)
思想: “中央集权”。网络中有一个“大脑”——网络控制中心(NCC),它负责收集全网的状态信息,计算出所有最优路径,然后把结果下发给各个路由器。路由器只需听从指令即可。
优点: 路由器本身很简单,便于全局调控和避免环路。
缺点: 可靠性差(中央一旦瘫痪,全网都瘫痪),中心节点负载大,网络规模受限。
现代互联网主要采用 分布式路由选择策略。
两种核心路由算法
几乎所有的路由协议都基于以下两种核心算法演变而来。它们的目标都是计算出“最短路径”,这里的“最短”可以是跳数最少、延迟最小或费用最低等。
1. 距离向量路由算法 (Distance-Vector Routing)
核心思想: “我不知道路怎么走,但我知道我的邻居知道”。每个路由器维护一张路由表,表中记录了它到所有其他网络的“距离”(比如跳数)以及应该通过哪个邻居(下一跳)才能到达。
信息交换:
和谁交换? 只和自己的 直接邻居 交换信息。
交换什么? 交换自己 整个路由表 的信息(“我知道到网络A的距离是2,到网络B的距离是3……”)。
何时交换? 周期性地(例如每30秒)进行,不管网络有没有变化。
知识范围: 路由器对整个网络的拓扑结构一无所知,它只相信邻居告诉它的信息(“听风就是雨”)。
优点: 算法简单,易于实现,适合小型网络。
缺点:
收敛慢: 当网络发生变化时,好消息传得快,坏消息传得慢(称为“计数到无穷”问题)。
可扩展性差: 随着网络规模增大,路由表变得巨大,周期性交换路由表会消耗大量带宽。
代表协议: RIP (Routing Information Protocol)。
2. 链路状态路由算法 (Link-State Routing)
核心思想: “给我一张完整的地图,我自己找路”。
信息交换:
和谁交换? 和网络中 所有的路由器 交换信息。
交换什么? 只交换与自己 直接相连的链路状态(“我和邻居A相连,链路开销是5;我和邻居B相连,链路开销是3……”)。
何时交换? 当链路状态 发生变化时 立即交换,或者以很长的时间间隔(如30分钟)周期性交换。
知识范围: 通过“泛洪法”(Flooding)将自己的链路状态信息传遍全网,最终每个路由器都能在本地构建出一张完全相同的、完整的网络拓扑“地图”(链路状态数据库)。
路径计算: 每个路由器基于这张完整的地图,独立使用 Dijkstra算法(或称SPF算法)计算出从自己出发到所有其他目的地的最短路径树。
优点: 收敛速度快,不易产生路由环路,适合大型网络。
缺点: 算法相对复杂,对路由器CPU和内存的要求更高。
代表协议: OSPF (Open Shortest Path First)。
算法对比总结
| 特性 | 距离向量 (Distance-Vector) | 链路状态 (Link-State) |
|---|---|---|
| 知识 | 只了解邻居,不了解全网拓扑 | 了解全网拓扑 |
| 信息交换 | 与 邻居 交换 整个路由表 | 与 全网 交换 自身链路状态 |
| 收敛速度 | 慢 | 快 |
| 资源消耗 | 带宽消耗大(周期性),CPU/内存消耗小 | 带宽消耗小(触发式),CPU/内存消耗大 |
| 适用网络 | 小型网络 | 大型网络 |














暂无评论内容