《计算机网络-自顶向下方法》4.1 网络层概述 读书笔记

目录

  • 导语
  • [一、4.1.1 转发和路由选择:数据平面和控制平面](#一、4.1.1 转发和路由选择:数据平面和控制平面)
  • [二、4.1.2 网络服务模型](#二、4.1.2 网络服务模型)
  • 本节核心总结(必看)
  • 结语

导语

  大家好呀~经过前三章的学习,我们已经从应用层(第2章)走到了运输层(第3章),现在终于要进入网络的"核心地带"------网络层(Network Layer)!如果说应用层是"用户看到的界面",运输层是"端到端的快递员",那网络层就是"全国的高速公路网和交通指挥中心"------它负责把数据包从源主机经过无数路由器送到目的主机。

  网络层是整个因特网最复杂、最核心的层次。教材把网络层分成了两章来讲:第4章是数据平面(Data Plane) ------关注每个路由器如何转发数据包;第5章是控制平面(Control Plane)------关注路由器之间如何协作、计算路由。这一章我们先学数据平面,搞懂一个数据包到达路由器后,是怎么被处理、怎么被转发出去的。

  4.1节作为网络层的开篇,主要回答两个基本问题:第一,网络层到底要做什么?转发和路由选择有什么区别?数据平面和控制平面怎么划分?第二,网络层能提供什么样的服务?是可靠的还是不可靠的?是有连接的还是无连接的?准备好了吗?让我们开始网络层的旅程吧~


一、4.1.1 转发和路由选择:数据平面和控制平面

1. 网络层的作用------"把包送到目的地"

  网络层的作用很简单:把数据报(datagram)从源主机经过一系列路由器,送到目的主机。注意,网络层传输的数据单元叫数据报(datagram),和运输层的"报文段(segment)"、链路层的"帧(frame)"是不同层次的叫法。

  网络层的工作可以分解为两个核心功能:

  • 转发(Forwarding) :当一个数据包到达路由器的输入端口时,路由器把它从合适的输出端口发出去。这是一个本地的、 per-router 的动作------每个路由器自己决定把这个包从哪个端口扔出去。
  • 路由选择(Routing) :网络层需要确定数据包从源到目的地的路径(route/path) 。这是一个全局的、网络范围的动作------所有路由器协同工作,计算出整个网络的路由表。

  通俗类比:转发就像你开车到了一个十字路口,根据路牌决定往左拐还是往右拐------这是每个路口的本地决策。路由选择就像出发前用导航软件规划整条路线------这是全局的路径规划。没有导航(路由选择),你到了路口不知道该往哪拐;没有路口转向(转发),规划好的路线也无法执行。两者缺一不可。

2. 数据平面和控制平面

  为了更好地理解网络层,教材引入了**数据平面(Data Plane)控制平面(Control Plane)**的划分:

  • 数据平面 :路由器中负责转发 的部分。每个路由器根据自己的转发表(forwarding table),把到达的数据包从正确的端口发出去。数据平面的操作是毫秒级甚至微秒级的,需要非常快。
  • 控制平面 :网络中负责路由选择 的部分。所有路由器运行路由选择协议(如OSPF、BGP),交换路由信息,计算出整个网络的路由表,然后下发到每个路由器的数据平面。控制平面的操作是秒级甚至分钟级的,不需要那么快。

  继续用交通类比:数据平面就是路口的红绿灯和转向指示------每辆车到了路口,根据指示快速通过。控制平面就是城市交通规划中心------根据车流量、道路状况调整红绿灯时长、规划最优路线,更新路牌信息。

3. 两种实现控制平面的方式

  控制平面有两种典型的实现方式:

方式一:传统方式------每个路由器自己算

  在传统的因特网中,每个路由器都运行路由选择协议,和邻居交换路由信息,自己计算路由表。路由器既是"路口交警"(数据平面),又是"交通规划员"(控制平面)。这种方式的好处是分布式、容错性好------一个路由器挂了不影响其他路由器。坏处是每个路由器都要跑完整的路由协议,配置复杂,难以集中管理。

方式二:SDN方式------集中控制器算

  **软件定义网络(Software-Defined Networking,SDN)是一种新的网络架构。它把控制平面从路由器中"抽"出来,放到一个集中控制器(controller)**中。路由器只保留数据平面(负责转发),控制平面的路由计算全部由远程控制器完成,然后通过OpenFlow等协议把转发表下发给路由器。

  SDN的好处是:集中管理、灵活可编程、容易部署新功能。坏处是控制器成为单点故障(当然可以做集群),而且控制器和路由器之间的通信延迟可能影响路由收敛速度。4.4节我们会详细学习SDN和OpenFlow。

4. 转发表和路由表的区别

  这里要区分两个容易混淆的概念:

  • 路由表(Routing Table):控制平面的产物,包含到各个目的地的完整路由信息(下一跳、度量值、路由协议等)。
  • 转发表(Forwarding Table):数据平面使用的表,由路由表推导而来,只包含"目的地址前缀→输出端口"的映射,用于快速查找转发。

  路由表是"给人看的"------管理员可以查看路由表了解网络拓扑。转发表是"给硬件看的"------路由器硬件根据转发表快速转发数据包。在简单的路由器中,两者可能是同一张表;在高端路由器中,转发表会被压缩和优化,存放在高速TCAM(三态内容寻址存储器)中,实现线速转发。


二、4.1.2 网络服务模型

1. 网络层提供什么服务?

  网络层在源主机和目的主机之间提供数据报传输服务。那这个服务质量如何呢?我们可以从几个维度来衡量:

  • 可靠交付(Reliable Delivery):保证每个数据报都能到达目的地吗?
  • 保序(In-order Packet Delivery):数据报会按发送顺序到达吗?
  • 时延保证(Timing):数据报能在规定时间内到达吗?
  • 带宽保证(Throughput):能保证一定的传输速率吗?
  • 安全性(Security):数据报的内容会被加密或认证吗?

2. 因特网的网络服务模型------"尽力而为"

  因特网的网络层(IP协议)提供的是尽力而为服务(Best-Effort Service)。这个名字听起来很"佛系"------我尽力了,但不保证结果。具体来说:

  • 不保证可靠交付:数据报可能丢失、可能损坏、可能重复。
  • 不保证保序:数据报可能乱序到达。
  • 不保证时延:有的包快、有的包慢,没有统一的时延上限。
  • 不保证带宽:你可能抢到100Mbps,也可能只有10kbps。

  你可能会问:这么"不靠谱"的服务,怎么支撑起了整个因特网?答案是:可靠性由运输层(TCP)来保证 !网络层只负责"把包往前扔",丢了、乱了、慢了,由TCP在端系统层面来补救(重传、排序、流量控制)。这种"网络简单、端系统复杂"的设计哲学,叫做端到端原则(End-to-End Principle)------能在端系统做的事,就不要放到网络中间去做。

  尽力而为服务的好处是:网络层非常简单,路由器只需要做转发,不需要维护连接状态、不需要做复杂的QoS调度,成本低、扩展性好。这也是因特网能从几十个节点扩展到几十亿节点的重要原因。

3. 其他网络服务模型------ATM的启示

  并不是所有网络都采用尽力而为服务。在因特网发展的同时,电信行业曾大力推广**ATM(Asynchronous Transfer Mode,异步传输模式)**网络,它提供了更丰富的服务模型:

  • CBR(Constant Bit Rate,恒定比特率):像电路交换一样,保证固定带宽和时延,用于电话。
  • VBR(Variable Bit Rate,可变比特率):保证平均带宽和峰值带宽,用于视频会议。
  • ABR(Available Bit Rate,可用比特率):只保证最小带宽,多余带宽可以抢占,用于文件传输。
  • UBR(Unspecified Bit Rate,未指定比特率):和尽力而为差不多。

  ATM还提供了面向连接的服务------传输数据前需要建立虚电路(Virtual Circuit,VC)。但最终,ATM在和IP的竞争中失败了。原因很复杂,但核心原因是:IP的尽力而为服务虽然简单,但足够灵活、足够便宜,再加上TCP在端系统补全了可靠性,最终赢得了市场。

  不过,ATM的一些思想(如QoS、流量工程)后来也被IP网络吸收了。比如MPLS(多协议标签交换)就借鉴了虚电路的思想,在IP网络中实现了流量工程和VPN。

4. 为什么网络层不提供可靠服务?

  这是一个经典的设计问题。如果网络层提供可靠服务,路由器就需要维护每个连接的状态、做确认和重传,这会大大增加路由器的复杂度和成本。而且,链路层已经有了差错检测,运输层也有了可靠传输,网络层再做一遍就是重复劳动。

  更重要的是,端到端原则告诉我们:在端系统实现可靠性更灵活、更可扩展。应用可以根据自己的需求选择TCP(需要可靠)或UDP(不需要可靠),而不是被网络层强制绑定到某种服务模型上。


本节核心总结(必看)

  这一节是网络层的入门,核心要点如下:

一、转发 vs 路由选择

  • 转发(Forwarding):路由器本地动作,把到达的包从正确端口发出去,微秒级
  • 路由选择(Routing):全局动作,计算源到目的地的路径,秒级
  • 转发是"路口转向",路由选择是"导航规划路线"

二、数据平面 vs 控制平面

  • 数据平面:负责转发,per-router,速度快,使用转发表
  • 控制平面:负责路由选择,网络范围,速度慢,使用路由表
  • 传统方式:每个路由器自己算路由;SDN方式:集中控制器算路由

三、网络服务模型

  • 因特网IP提供尽力而为服务(Best-Effort):不保证可靠、不保证保序、不保证时延、不保证带宽
  • 可靠性由运输层TCP保证,体现了端到端原则
  • ATM曾提供CBR/VBR/ABR等QoS服务,但最终被IP的简单性击败

关键概念清单

  • 网络层(Network Layer):负责端到端数据报传输
  • 数据报(Datagram):网络层的数据单元
  • 转发(Forwarding):单路由器的本地转发动作
  • 路由选择(Routing):全网的路径计算
  • 数据平面(Data Plane):路由器的转发功能
  • 控制平面(Control Plane):路由计算功能
  • 转发表(Forwarding Table):数据平面使用的快速查找表
  • 路由表(Routing Table):控制平面计算的完整路由信息
  • SDN(Software-Defined Networking):软件定义网络,集中控制
  • 尽力而为服务(Best-Effort Service):IP网络的服务模型
  • 端到端原则(End-to-End Principle):能在端系统做的事不放网络中间

结语

  这一节我们建立了网络层的整体认知:网络层分为数据平面和控制平面,数据平面负责转发,控制平面负责路由选择;因特网的网络层提供尽力而为服务,可靠性交给运输层。理解了这些基本概念,后面学习路由器工作原理、IP协议、SDN就有了坚实的基础。

  下一节4.2我们将深入路由器内部,看看一个数据包到达路由器后,经历了怎样的"旅程"------从输入端口处理,到交换结构,到输出端口处理,再到排队和调度。路由器是网络层的核心设备,理解它的工作原理对理解整个网络至关重要。

  如果你觉得这篇笔记对你有帮助,欢迎点赞收藏~有问题也欢迎留言讨论,我们一起进步!

相关推荐
Shadow(⊙o⊙)1 小时前
Linux网络——文件与网络的连接桥梁struct sock {
linux·运维·网络
李永奉1 小时前
中科蓝讯SDK开发-提示音音频文件格式转换和压缩教程
网络·单片机·嵌入式硬件·mcu·物联网
sunoo-2291 小时前
【网络编程 + 数据库】select 与 epoll 核心区别详解 + SQLite 入门到 C 接口全攻略
linux·网络·数据库·vscode·学习·sqlite
长脖鹿Johnny1 小时前
游戏输入系统框架设计(三):网络输入权威与可验证性
网络·游戏·游戏开发·架构设计·输入系统·网络同步
Mortalbreeze2 小时前
深入理解 Linux IO 模型(二):多路复用——select
linux·运维·服务器·网络·tcp/ip
xieliyu.2 小时前
计算机网络:Fiddler 抓包工具使用教程 + HTTP 协议报文格式详解
java·笔记·计算机网络·测试工具·http·java-ee·fiddler
SamChan902 小时前
PDF翻译服务端到端基准测试:4款主流方案的吞吐量、延迟、内存占用对比
服务器·网络·python·ai·pdf·wpf
Sagittarius_A*2 小时前
CVE-2026-42271:从 MCP stdio 测试接口看 LiteLLM 的命令执行风险与防御闭环
网络·windows·安全·cve·rce
DLYSB_2 小时前
旧上位机不肯改怎么办:原生 TCP 字节帧接入声光语音终端的改造实录
网络·网络协议·tcp/ip·报警灯