【计算机网络 | 网络层1:网络层的职责:IP 协议究竟解决了什么问题?】

在这里插入图片描述

前面的数据链路层文章一直在讨论“局域网里的这一跳”:网卡如何把 IP 数据报封装成帧,ARP 如何找到下一跳 MAC 地址,交换机如何在端口间转发帧,VLAN 如何限制二层广播域。它们都很重要,但也都有一个边界:

  • 以太网帧和 MAC 地址只适合解决当前链路或当前局域网内的交付问题。

当你在家访问异地服务器时,数据不会只经过一台交换机。它会从家庭局域网到运营商网络,再经过许多不同速率、不同介质、不同组织管理的网络,最后到达服务器所在的局域网。不同网络之间,怎样让数据继续向正确方向前进?这正是网络层要解决的问题。

这一篇进入 TCP/IP 五层模型的网络层。网络层以 IP 协议为核心,为上层提供“主机到主机”的通信能力:把 IP 数据报从源主机送往目的主机,并让它能够跨越多个异构网络。下一篇再深入看一台路由器收到数据报后,具体会执行哪些动作。

一、网络层到底解决什么问题?

可以先把一次网络通信拆成两个尺度:

  • 单段链路或局域网内:数据链路层负责把帧送到下一跳。例如电脑把帧交给本地交换机,交换机再把帧送到默认网关所在的端口。
  • 从源主机到目的主机:网络层负责让数据报跨越一段又一段链路、经过多个路由器,最终到达另一台主机。

假设北京家里的电脑访问上海机房中的网站服务器,大致会经历下面的路径:

电脑
  -> 家庭交换机或无线接入点
  -> 家庭路由器
  -> 运营商接入网
  -> 多台骨干路由器
  -> 服务器所在网络的路由器
  -> 服务器

电脑并不需要知道中间经过了几台设备、每一段是网线还是光纤、运营商内部怎么布线。它只需把要发送的数据交给网络层,并以目的主机的 IP 地址作为全局寻址依据。网络层与路由器共同负责后面的跨网传递。

因此,网络层的核心任务可以概括为:

将分组,也就是 IP 数据报,从源主机经由多个网络和多段链路,尽最大努力交付给目的主机。

这里的“主机到主机”要和传输层的“进程到进程”区分开:

层次主要对象典型问题
数据链路层同一链路或局域网中的相邻设备下一跳的帧该从哪个端口出去?
网络层源主机与目的主机跨多个网络时,数据报应往哪个方向走?
传输层两台主机上的应用进程数据应交给浏览器、数据库还是其他进程?是否需要可靠传输?

网络层的功能:

  • 异构网络互连(基本功能)
  • 路由选择 分组转发 (核心功能)

二、为什么需要 IP:互联网本来就是“异构网络的网络”

互联网不是一张由同一种设备、同一种链路拼成的大网。家庭 Wi-Fi、办公室以太网、校园网、运营商光纤骨干网、蜂窝移动网络和数据中心网络,在介质、速率、帧格式、设备能力与管理方式上都可能不同。

如果每一种网络都要求端到端通信双方理解自己的内部规则,那么两张网络互连时都需要进行大量专门适配;网络种类越多,互联关系越难维护。网络层提供了一个更稳定的共同层次:不同底层网络只要都能承载 IP 数据报,就能在路由器处相互连接

可以把 IP 看作国际物流中的统一运单格式:

  • 货物在城市内可能由货车、地铁或飞机运输;
  • 每一段运输工具的装载规则不同;
  • 但运单始终写着最终收件地,且中转站能据此决定下一段交给谁。

同样地,IP 数据报在端到端传输中保留源 IP 地址和目的 IP 地址;而每经过一段链路,外层的数据链路帧会根据当前链路重新封装。也就是说,IP 负责跨网络的逻辑寻址,帧和 MAC 地址负责每一跳的本地交付。

IP 网:把不同网络在逻辑上看成一个整体

路由器把多个网络连接起来,并在网络之间转发 IP 数据报。虽然底层网络各不相同,但只要它们的网络层都使用 IP,从网络层的视角看,它们就组成了一个统一的 IP 网。这个能力称为异构网络互连,也是网络层最基础的职责

这就是“网际协议”这个名字的含义:IP 不是为了替代以太网、Wi-Fi 等链路技术,而是让许多不同的网络能够互相通信。对端主机而言,中间各网络的内部细节被屏蔽了;它看到的是一个能把数据报交付给目标 IP 地址的网络。

三、IP 数据报是怎样跨网前进的?

IP 数据报从一台主机到另一台主机,并不是带着同一份以太网帧一路不变地穿越互联网。每到一个路由器,当前链路的帧会在路由器处结束,路由器取出其中的 IP 数据报,检查并处理网络层信息,再把它封装进下一段链路所使用的新帧。

下面以主机 A 访问异地服务器 S 为例:

主机 A
  发送:以“默认网关的 MAC 地址”为帧目的地址
        以“服务器 S 的 IP 地址”为数据报目的地址

第一台路由器
  收到帧,去掉旧帧
  查找目的 IP 地址对应的下一跳
  给同一个 IP 数据报加上下一段链路的新帧

后续路由器
  重复“收帧 -> 处理 IP 数据报 -> 查表 -> 重新封装 -> 发往下一跳”

服务器 S
  在最后一段链路收到帧,取出目的为自己的 IP 数据报

这段过程里有两个特别容易混淆的点。

1. IP 地址通常端到端保持,MAC 地址逐跳变化

在正常转发中,源 IP 地址和目的 IP 地址用来表达端到端的通信对象;每一跳上的源 MAC 和目的 MAC 则只服务于当前链路。路由器转发到下一跳时,需要重新构造新帧,MAC 地址也就随链路改变。

信息主要作用范围经过路由器后通常如何变化
源 IP、目的 IP源主机到目的主机的网络层通信通常保持不变;NAT 等特殊处理除外
源 MAC、目的 MAC当前一跳链路的帧交付每经过一台路由器都会重新生成

这也解释了为什么 ARP 只解决“本地 IP 地址对应哪个 MAC 地址”,而不能用来在互联网范围内查询某台远端服务器的 MAC 地址。

2. 主机并不直接把帧发给远端服务器

若目标 IP 不在本地网络,主机不会尝试找到远端服务器的 MAC 地址。它会把帧交给默认网关,也就是本地路由器;帧的目的 MAC 是默认网关接口的 MAC,IP 数据报的目的 IP 仍是远端服务器。之后每台路由器只需做局部决定:这份数据报的下一跳应该从哪个接口发出。

四、网络层的两项核心功能:路由选择与分组转发

“数据报跨越多个网络”听起来像一句话,但路由器内部实际上有两类不同的工作:一类决定整体路径,另一类把眼前的数据报快速送到下一跳。

当相互发送数据的两台主机,在同一个网络(小型网络)中时,数据可以不经任何路由器的转发直接交付。

当相互发送数据的两台主机,在不同的网络中时,数据要经过多个路由器的转发间接交付,因此就得考虑数据从发送方到接收方怎么走,规划出一条路径。这就涉及到路由选择分组转发

1. 路由选择:为到达目标网络规划方向

路由选择关注的是:到达某个目的网络,下一步该选哪条路径?路由器通过静态配置或路由协议获得网络拓扑与可达信息,据此建立和维护路由表

可以把它看成提前维护一份交通导航规则:去某片区域优先走哪个出口,某条道路故障后改走哪条备用方向。路由选择考虑的范围可以跨越多台路由器、多个网络,关注网络整体的连通性与路径变化。

例如,某条运营商链路中断后,路由协议会逐步传播新的可达信息;相关路由器据此重新计算或更新自己的路由表。这个过程不必为每个到来的数据报重新从头计算,而是先形成相对稳定的转发规则。

2. 分组转发:把眼前的数据报送向下一跳

分组转发关注的是:一个 IP 数据报刚刚到达这台路由器,现在应该从哪个出接口离开?路由器在数据平面中查询转发表,确定下一跳或出接口,然后完成必要的封装并发送。

它像十字路口的绿灯执行:导航规则已经准备好,眼前每一辆车到来时只需快速放行到正确出口。因为数据报数量巨大,转发必须很快,实际设备常用专用硬件来加速查表和转发。

3. 路由表与转发表不是完全同一件事

前者根据路由选择协议构造并维护路由表,后者处理通过路由器的数据流关键操作是转发表查询、转发及相关的队列管理和任务调度

学习阶段常把两者统称为“路由表”,但理解差异很有帮助:

名称更关注什么典型来源和特点
路由表哪些网络可达、路径如何选择来自手工配置或路由协议,便于计算与维护
转发表到来的数据报立刻从哪里转发从路由信息中提炼,强调高速查找与执行

两者密切相关:路由选择的结果会形成或更新转发规则;分组转发则按这些规则处理大量真实流量。但不要把“转发”理解成“每收到一个包就重新计算整条最优路径”。

路由选择涉及整条线路的所有的路由器,而分组转发是聚焦于1个路由器,路由选择是分组转发的基础

五、控制平面与数据平面:慢规划,快执行

网络层也可以根据两个核心功能,抽象的划分为两个层面:控制层面 和 数据(转发)层面。

这里的层面和计算机网络体系结构的层次是类似的,都是抽象的概念。显然,在一个路由器实体中无法肉眼看见这种抽象的层面。(控制层面实现路由选择功能,数据层面实现分组转发功能。)

数据平面:实时处理每一个到来的数据报

数据平面负责数据报的实际转发。它根据已有转发表完成查找、转发以及必要的排队与调度。这里追求的是速度:一台高负载路由器可能每秒处理海量数据报,不能为每个数据报执行复杂的全网计算。

控制平面:维护网络如何连通、路径如何变化

控制平面负责路由选择相关工作,包括与邻居路由器交换路由信息、运行路由算法、更新路由表,并把结果提供给数据平面。它关注的是网络变化后的整体规则,更新时间通常远慢于单个数据报的转发。

用一句话概括:

控制平面负责“路该怎么规划”,数据平面负责“这个包现在怎么走”。

传统互联网中,每台路由器都同时具备控制平面与数据平面:一边参与路由信息交换,一边快速转发数据报。

**软件定义网络(SDN)**则是另一种组织方式:可以把较集中的控制逻辑交给控制器,由控制器向设备下发转发规则;设备侧主要按规则执行转发。无论采用哪种架构,规划与执行的职责区分依然存在。

在传统因特网中的每一个路由器中,既有数据层面也有控制层面。

近几年流行一种创新网络架构—软件定义网络(SDN)

  • 控制平面(如阿里云的网络控制器)集中部署在远程服务器
  • 数据平面则作为“智能转发引擎”运行在路由器中。

两个平面相互分离,控制平面利用控制-数据接口对数据平面上的路由器进行集中式控制,方便软件来控制网络。

  • 在SDN 结构中路由器变得简单了,它的路由选择软件都不需要了,因此路由器之间不再相互交换路由信息。
  • 在网络的控制平面有一个逻辑上的远程控制器(可由多个服务器组成)。
    • 远程控制器掌握各主机和整个网络的状态,每个分组计算出最佳路由,通过 Openflow 协议(或其他途径)将转发表(在SDN中称流表)下发给路由器。
  • 路由器的工作很单纯,即收到分组、查找转发表、转发分组。

六、IP 提供什么服务:无连接、尽最大努力交付

在 TCP/IP 体系中,IP 向上提供的是无连接、尽最大努力交付的数据报服务。这句话需要逐个理解。

1. 无连接:发送前不建立专用网络层连接

IP 发送数据报前,不需要先让源主机、所有中间路由器和目的主机共同建立一条专用的网络层连接。每个数据报携带目的 IP 地址,路由器根据当前转发规则独立处理它。

这使网络能够灵活地接纳大量通信:不同的数据报可能因为网络变化走不同路径,路由器也不必为每一对通信主机长期保存复杂的连接状态。

需要注意,“IP 无连接”不等于应用不能建立连接。浏览器使用 TCP 时,TCP 仍会在传输层建立面向连接的可靠传输;IP 只是负责在底层尽力转送 TCP 段所封装成的数据报。

2. 尽最大努力:努力转发,但不作强保证

“尽最大努力”并不是“不做事”,而是说 IP 网络不对下面这些结果作硬性承诺:

IP 不保证的结果可能出现的原因
一定送达链路或设备故障、路由不可达、队列满导致丢包
按发送顺序到达不同数据报可能走不同路径,排队时延也可能不同
在固定时间内到达网络拥塞、排队、链路速率差异和路径变化都会影响时延
获得最低带宽多个流量共同竞争链路与设备资源
不重复某些异常或上层重传场景可能让接收方看到重复数据报

因此,网络层的数据报可能丢失、失序、重复、延迟过大,甚至出现错误。IP 的设计选择是保持核心网络简单、通用、可扩展;如果应用需要可靠、有序的字节流,通常由传输层的 TCP 通过序号、确认、超时和重传等机制来补充。

这也不是说所有应用都必须使用 TCP。实时音视频、在线游戏等应用可能选择 UDP 或其他传输协议,再根据自己的时延与可靠性需求设计恢复策略。网络层提供的是共同、基础的交付能力,而不是替所有应用完成全部质量保障。

3. 这句话有一个前提

“网络层提供无连接、尽最大努力服务”是对因特网 TCP/IP 体系的准确描述,并不是所有理论网络体系都必须如此。

例如 OSI 参考模型曾定义过网络层的面向连接服务模型。学习时应把结论与其体系背景一起记住。

七、IP 协议族:网络层不只有一个名称

IP 是 TCP/IP 体系中最核心的网络层协议。日常说“IP”时,很多场景实际指 IPv4;IPv6 则是为解决地址空间等问题演进出的新版本,后续会单独介绍。

围绕 IP 通信,还有几类紧密协作的协议:

协议主要作用与本篇的关系
ARP在本地链路上把下一跳 IPv4 地址解析为 MAC 地址帮助 IP 数据报走出当前这一跳
ICMP传递网络控制与差错报告信息帮助诊断网络可达性和转发问题
IGMP管理 IPv4 多播组成员关系服务于一对多通信场景

不同教材可能把 ARP 放在网络层、网络接口层或称为两层之间的协议,这是因为它同时涉及 IP 地址与链路层 MAC 地址。对理解实际通信来说,更重要的是它的职责:ARP 不负责跨网路由,只在本地网络中帮助找到下一跳的 MAC 地址。

八、一个完整场景:从浏览器到异地服务器

现在把各层职责重新串起来。浏览器要访问异地服务器时:

  1. 应用层准备请求数据;传输层可能把它交给 TCP 或 UDP。
  2. 网络层为数据加上源 IP 与目的 IP,形成 IP 数据报。
  3. 主机判断目的 IP 不在本地网络,选择默认网关作为下一跳。
  4. ARP 协助主机获得默认网关接口的 MAC 地址;数据链路层把 IP 数据报封装成以默认网关为帧目的地址的帧。
  5. 本地交换机根据 MAC 地址表把帧送到默认网关所在端口。
  6. 路由器取出 IP 数据报,查询转发表,确定下一跳;随后在下一段链路上重新封装新帧并转发。
  7. 经过多台路由器后,数据报进入服务器所在网络;最后一台路由器把它交给服务器。
  8. 服务器拆除链路层与网络层封装,按上层协议把数据交给对应进程。

在这条路径中,数据链路层的帧会逐跳更换,交换机主要按 MAC 地址在局域网内转发,路由器主要按 IP 地址跨网络转发。正是这种分层协作,让不同地区、不同网络技术和不同管理边界下的主机仍能通信。

九、总结

网络层是互联网跨网络通信的枢纽。它通过 IP 把众多异构网络连接成逻辑上的统一 IP 网,并让 IP 数据报能够从源主机经多台路由器到达目的主机

它的核心工作分为两部分:路由选择负责维护“到哪里该往哪走”的规则,分组转发负责把每个到来的数据报快速送往下一跳。

TCP/IP 网络层选择无连接、尽最大努力的数据报服务:它不保证送达、顺序、时延或带宽,而把更强的可靠性和有序性需求交给上层协议处理。这种看似朴素的设计,正是互联网能连接海量异构网络并持续扩展的重要原因。

已经知道网络层解决“跨网往哪走”后,接下来就把镜头对准路由器本身:一份 IP 数据报抵达路由器时,输入端口、转发表、交换结构和输出端口分别做了什么?


如果这篇文章对你有帮助,欢迎点赞、评论、关注、收藏。你们的支持是我前进的动力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值