Skip to content

体系结构与参考模型

2026 大纲 一(二)1 分层结构2 协议、接口、服务等概念3 ISO/OSI 与 TCP/IP 参考模型。一次具体报文的逐跳追踪在《数据包的网络之旅》。

一、为什么非要分层

上一节把线路资源怎么分配这件事解决了:切成分组,动态分配。但"让两台机器能对话"远不止于此——寻址、差错、重传、拥塞、进程识别、数据格式,全都还没有着落。一次性设计一个能同时处理这些的协议,没人写得出来,写出来也没人改得动。

办法是:把这个大问题切成若干个小问题,每个小问题交给一层,每层只关注自己的功能,向上层提供服务、使用下层的服务。换来的是模块化(改一层不动别层)、接口标准化(不同厂商能互操作)、可逐层排查(问题出在哪一层就查哪一层)。

拆成几层?这里有上下界,而且两边都是有代价的:

  • 太少,层内会自发长出子结构——复杂度没有消失,只是被藏进了某一层内部,分层的好处也就随之消失。
  • 太多,每层都要多一次封装(吃带宽)与一次跨层调用(吃处理时间),而且职责开始重叠,"这个功能该归谁"变成扯皮。

判据是一句话:这个功能有没有窄到能独立标准化的接口边界。OSI 的表示层与会话层就是没守住这条边界的反例——功能太弱,撑不起独立一层。

还有一个从一开始就要划清的界线:体系结构是抽象的,实现是具体的。体系结构描述的是"分几层、每层完成什么功能、每层用什么协议";协议内部怎么实现,不属于体系结构描述的内容。教材的比方很准:可以走进一座明代建筑,但走不进"明代建筑风格"。所以"某台路由器是一个体系结构"这种说法必错。

二、OSI、TCP/IP 与五层

OSI 七层(应表会传网数物)概念清楚、理论完整却没被市场采纳,败因是三件事同时发生:标准出得太晚(TCP/IP 已在 ARPANET 上跑起来并随 UNIX 免费分发)、协议实现效率低、表示层与会话层功能过弱——后一条也解释了 TCP/IP 为什么把这两层并进应用层。

TCP/IP 分应用层、运输层、网际层、网络接口层,但实质上只有最上面的三层:链路层没有属于 TCP/IP 体系的具体协议,它用的局域网标准由 IEEE 802 制定,与其说是"一层",不如说是"IP 需要的一个与网络的接口"。正因为这层是空壳,讲原理时综合两者优点用五层模型——它不是标准(OSI 七层是国际标准、TCP/IP 四层是事实标准),但它是本站与答题的默认框架。

TCP/IP 协议族的沙漏形状:应用层协议众多,运输层收敛为 TCP 与 UDP,网际层收敛为唯一的 IP,往下又发散成多种网络接口。

图源:谢希仁《计算机网络》(第 8 版)图 1-22,印刷版 p37。腰部只允许有一个协议:Everything over IPIP over Everything 让两边的创新彼此解耦,代价是 IP 本身极难演进。背后是"核心越简单越好,把复杂的部分让边缘去实现"这条理念。

对比项OSI 七层TCP/IP 四(五)层
制定组织ISOIETF
实际使用仅作为参考模型因特网实际采用
设计顺序先有模型,后制定协议,通用性好但可能脱离实际先有协议栈,后归纳出模型,实用但通用性差
表示层/会话层独立设置合并到应用层
🔴 网络层面向连接与无连接都支持仅无连接(IP)
🔴 传输层仅面向连接面向连接(TCP)+ 无连接(UDP)
服务/接口/协议明确区分三者未清晰区分(对它的常见批评)

带 🔴 那两行容易记反,抓手是:TCP/IP 把选择权交给了端(传输层给你 TCP 和 UDP 两个选项),OSI 把选择权留在网络里(网络层两种服务都支持,传输层反而只有面向连接一种)。

三、五层各自做什么

层次PDU核心功能(一句话)关键设备寻址典型协议
应用层报文通过应用进程间的交互完成特定网络应用HTTP、FTP、SMTP/POP3/IMAP、DNS、DHCP
运输层报文段 / 用户数据报向进程之间提供通用的数据传输服务,做复用与分用端口号TCP、UDP
网络层IP 数据报 / 分组主机到主机寻址;两个任务是生成转发表、按表转发路由器、三层交换机IP 地址IP、ICMP、IGMP、ARP(按教材归此层)、OSPF、RIP
数据链路层相邻节点间成帧 + 差错检测 + 介质访问控制;只检错不纠错,发现差错就丢弃网桥、二层交换机MAC 地址以太网、PPP、IEEE 802.11
物理层比特透明传输比特流,规定机械/电气/功能/规程四大特性中继器、集线器RS-232、SONET/SDH

表里每一行都有几处值得展开,而它们恰恰是选项爱下手的地方。

应用层是最高层,交互的数据单元称为报文。它定义的是应用进程间通信和交互的规则。

运输层的关键词是"通用"——它不针对某个特定网络应用,多种应用可共用同一个运输层服务。一台主机同时跑多个进程,所以运输层必须有复用(多个应用进程同时使用下面运输层的服务)与分用(把收到的信息分别交付上面相应的进程)功能,二者靠端口号实现。TCP 面向连接、可靠、有流量控制与拥塞控制,单位是报文段;UDP 无连接、尽最大努力交付、开销小,单位是用户数据报

两个术语坑:教材用"运输层"而非"传输层",理由是 OSI 第 4 层的原词是 Transport 不是 Transmission,两个译名指同一层,答题时都可用;另外运输层的"用户数据报(UDP)"与网络层的"IP 数据报"是两回事,只是中文都带"数据报"三个字。

网络层把运输层交下来的报文段或用户数据报封装成分组。它的任务只有两个:① 通过一定的算法在每台路由器上生成转发表(路由选择);② 收到分组时依据转发表转发到下一个路由器(分组转发)。它提供的是无连接、不可靠的数据报服务——这一条在 TCP/IP 体系里是死的,不像 OSI 那样两种都支持。

数据链路层把 IP 数据报组装成帧,在两个相邻节点之间的链路上传送,做三件事:封装成帧(加首部和尾部,让接收端知道一帧从哪个比特开始、到哪个比特结束)、差错检测(发现差错就简单丢弃这个帧,免得它继续在网络里浪费资源)、介质访问控制。标准的数据链路层只检错、不纠错——要改正差错就得在其上采用可靠传输协议,那会让链路层复杂不少,而互联网选择了不这么做。

物理层在传输介质上传送比特流,规定四大特性:机械特性(接口形状、引脚数目与排列)、电气特性(用多大电压代表 1 或 0)、功能特性(各引脚的功能定义)、规程特性(各种功能可能出现的事件顺序)。它的任务是透明传输比特流——解释比特代表什么意思不是它的事。

传输媒体(双绞线、光纤等)不在物理层之内,而在物理层协议的下面,所以有人把物理传输媒体称为"第 0 层"。物理层规定的是接口的四大特性,不是介质本身。

两条线索把这张表串起来:PDU 是报文 → 报文段 → IP 数据报 → 帧 → 比特;寻址是三级跃迁进程间(端口)→ 主机间(IP)→ 相邻节点间(MAC)

寻址这条线索还顺带解决了一类陷阱:同一个名字的功能会出现在不止一层,靠作用范围区分。流量控制在数据链路层是相邻结点间的、在运输层是端到端的;差错控制在链路层只覆盖一跳、在运输层覆盖全程。题目问"实现两个相邻结点间流量控制的是哪一层",答案是数据链路层而不是运输层,靠的就是"相邻结点"这四个字。

同理,OSI 里自下而上第一个提供端到端服务的是传输层——会话层、表示层、应用层也都是端到端的,但它们不是"第一个";数据链路层虽然也做流量控制,但它管的是节点到节点。

四、协议、接口与服务

三个概念的定义都建立在"实体"这个词上——实体指任何可发送或接收信息的硬件或软件进程。有了它,三者的界线才干净:

  • 协议:控制两个对等实体(或多个实体)进行通信的规则的集合,是水平的。三要素为语法、语义、同步。
  • 服务:下层为紧邻的上层提供的功能,是垂直的。第 n 层向上提供的服务已经包括了它以下各层所提供的服务。上层使用下层服务要交换一些命令,这些命令在 OSI 中称为服务原语
  • 接口(SAP,服务访问点):同一系统中相邻两层实体交互的地方,是一个逻辑接口,有点像邮政信箱——可以把邮件放入信箱和从信箱中取走邮件,但它与两个设备之间的硬件接口不是一回事。

图里第 n 层和第 n+1 层用的是不同的协议——每一层都有自己的协议,对等实体之间只按本层协议对话。还要注意"对等层通信"是逻辑上的:数据物理上只能逐层下行、过链路、再逐层上行,对等层之间并没有直接的物理连接,所谓"与对方第 n 层通信"指的是双方用相同的协议处理数据。

这里有一条最容易被忽略、却直接决定对错的规定:并非层内的全部功能都叫服务,只有那些能够被高一层实体"看得见"的功能才叫服务。重传、序号、校验和是协议的实现细节,上层根本感知不到。所以"TCP 提供可靠传输服务"对,"TCP 提供三次握手服务"错——下面的协议对上面的实体是透明的

协议的三要素:语法(数据与控制信息的结构或格式)、语义(需要发出何种控制信息、完成何种动作、做出何种响应)、同步(事件实现顺序的详细说明)。注意教材说的"同步"不是狭义的同频或同频同相,而是广义的时序——所以一张画着"发送方发一条、接收方回一条、再发一条、再回一条"的交互图,描述的是三要素里的同步(时序),既不是语法也不是语义。

服务分三个正交的维度,随便组合:

分类方式类型说明
按连接方式面向连接服务通信前建立连接、分配资源,结束后释放(如 TCP)
无连接服务无须建立连接,各分组独立传输,"尽最大努力交付"(如 UDP、IP)
按可靠性可靠服务具备检错、纠错、应答机制,确保数据正确送达
不可靠服务仅"尽最大努力交付",可靠性由高层保障
按应答方式有应答服务接收方自动返回确认(如文件传输)
无应答服务接收方不自动返回应答(应答由高层应用完成,如浏览网页)

三个维度正交意味着"面向连接"不等于"可靠"。这不是抠字眼——OSI 的网络层就支持面向连接的不可靠服务。

协议要把不利条件都估计到:两军问题

协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的。 教材的反例:两个朋友约好下午 3 时在公园门口碰头,并约定"不见不散"——任何一方临时来不了又无法通知对方时,另一方就必须永远等下去。

顺着这条思路是两军问题:

占据东、西两个山顶的蓝军 1 与蓝军 2 要协同攻击山谷中的白军。单独任一支蓝军打不过白军,两军协同则能取胜。蓝军 1 拟于次日正午发起攻击,用不可靠的信道发电文给蓝军 2,要求收到者回确认,但确认本身也可能丢失。能否设计出一种协议,使双方 100%(而不是 99.999…%)确保协同?

推演:蓝军 2 收到并回了确认,但它不知道这个确认对方收到没有——没收到的话蓝军 1 不敢进攻,此时蓝军 2 单独进攻必败,于是要等蓝军 1 的"对确认的确认";而蓝军 1 同样关心自己这个确认有没有被收到,于是要"对(确认的确认)的确认"……无限循环。结论:在给定条件下不存在这样的协议。

这个结论划出了一条下界:任何基于不可靠信道的握手协议,都无法做到"双方对最后一条消息的到达达成共识"。TCP 连接管理里"为什么是三次而不是两次、四次"由此就不再是一条要背的结论——三次握手不是解决了两军问题,而是在第三次主动截断了那条无限的确认链条

五、判定一个动作属于哪一层

判据只有一条:这个动作处理的最小数据单元是什么。比特 → 物理层;帧 → 数据链路层;分组 / IP 首部 → 网络层;报文段 / 端口 → 运输层;应用语义 → 应用层。真正有分歧的只有 ARP、DNS、DHCP 三个。

行为 / 协议 / 设备所属层依据
TCP 三次握手、端口号 80运输层"建立连接"发生在两端进程之间;端口是运输层的寻址概念
给分组加目的 IP 并选下一跳、丢弃 TTL = 0 的分组网络层处理 IP 首部、做路由选择;TTL 是 IP 首部字段
交换机按 MAC 表自学习转发数据链路层处理帧、看 MAC 地址
把以太帧切成比特加电平、集线器广播信号物理层最小单元是比特;集线器不识别帧,只放大转发
TLS / SSL 加密应用层(五层模型下)OSI 归表示层,TCP/IP 把表示层并入应用层
🔴 ARP 把 IP 解析成 MAC网络层(按教材)被 IP 转发流程直接调用,且 ARP 报文不封装在 IP 数据报里
🔴 DNS 域名解析、DHCP 分配 IP应用层处理的是网络层信息,但自己是跑在 UDP 上的一次完整应用层请求-响应
ICMP 差错报告(ping)网络层报文虽封装在 IP 数据报里,但它是 IP 的配套协议

带 🔴 的两行是同一个道理:"这个协议处理的是什么"与"这个协议被谁使用"是两回事

六、设备能力对照

设备工作层能识别隔离冲突域隔离广播域
中继器 / 集线器物理层信号
网桥 / 二层交换机数据链路层帧(看 MAC)否(除非划 VLAN)
路由器 / 三层交换机网络层分组(看 IP)
网关 / 协议转换器高层应用语义

这张表不必死记,两条推法就能现推。隔离冲突域 = 会不会存储转发:集线器收到信号立刻向所有端口放大转发,两路信号照样撞在一起;交换机必须先收下整帧、查表、再发出去,两个端口的传输在时间上天然分开。隔离广播域 = 会不会转发广播帧:交换机对目的 MAC 全 1 的帧一律泛洪,路由器只按目的 IP 查路由表,广播帧根本进不了它的转发流程。一句话:层越高,"切"得越狠——物理层什么都切不开,路由器两个域都切。

七、封装:PDU、SDU、PCI 与它的开销

分层落到数据上就是封装:每层把上层交下来的整块内容当作自己的载荷,前面(有时后面还)加一段控制信息。

加载可视化中...

三个术语要分清:PDU 是对等层之间传送的单位SDU 是相邻层之间经服务访问点交换的单位PCI 就是首部(有时还有尾部)。常规关系是

n-SDU+n-PCI=n-PDU=(n1)-SDU

但这条恒等式有反例:一个 SDU 可以划分成多个 PDU(IP 分片、TCP 按 MSS 切分),多个 SDU 也可以合成一个 PDU(攒包再发)。所以"n 层 SDU 一定等于 n+1 层 PDU"这类绝对说法必错。

封装还有两条边界:只发生在上四层,物理层不加控制信息;只有数据链路层既加首部又加尾部——FCS 必须放在数据之后,因为接收端要先收完整帧才算得出校验值来比对。

分层要付多少代价

分层不是白给的,每层一份首部就是它的账单。算法只有一条:把各层各自加的开销累起来,除进去

场景一:OSI 七层。 应用层要发 400 B 数据(不拆分),除物理层和应用层之外其他各层封装 PDU 时均引入 20 B 开销。加了开销的是表示层、会话层、传输层、网络层、数据链路层,共 5 层:

总长=400+5×20=500 B,传输效率=400500=80%

数错层数是这道题唯一的失分点:题面把物理层和应用层排除在外,七层减二等于五层

场景二:以太网上的真实数字。 固定开销是 TCP 首部 20 B + IP 首部 20 B + 帧首部 14 B + 帧尾 FCS 4 B。注意帧首尾要合并成 18 B 的链路层开销,因为它们同属数据链路层的 PCI。

应用数据 100 B 时,帧长 100+20+20+18=158 B,有效载荷率 100/15863.29%;应用数据 1460 B 时,帧长 1460+20+20+18=1518 B,有效载荷率 1460/151896.18%

1518 B 正是以太网帧的最大长度,1460 B 也正是以太网上 TCP 的典型 MSS(15002020)。这组数字不是巧合——MSS 就是按"把帧撑到刚好不分片"倒推出来的

固定开销 58 B 是常数,载荷越大占比越小:大文件传输时分层开销约 4%,可以忽略,这是分层这套设计能被接受的经济前提;小报文(键盘输入、ACK、DNS 查询)开销占比可达三分之一甚至更高——一个只带 1 字节数据的 TCP 段,帧长仍有 59 B,有效载荷率不到 2%。这正是 Nagle 算法、TCP 延迟确认这类"攒一攒再发"机制存在的理由:它们不是在优化带宽本身,而是在摊薄固定的分层开销

本节小结

  1. 分层的判据是接口边界够不够窄。OSI 七层因标准太晚、实现低效、表示层与会话层过弱而落败;TCP/IP 实质只有上三层,讲原理用五层模型;沙漏腰部只有一个 IP,换来两端解耦,代价是 IP 极难演进。体系结构不描述协议的内部实现细节。
  2. 协议水平、服务垂直,且只有被上层看得见的功能才叫服务——重传、序号、校验和是实现细节,所以协议对上层透明。协议三要素里的"同步"是广义时序。两军问题给出下界:不可靠信道上无法就最后一条消息达成共识,三次握手是截断而非解决。
  3. 封装只发生在上四层,只有数据链路层既加首部又加尾部n-SDU+n-PCI=n-PDU 只描述不分片、不合并的常见情形。定位动作看最小数据单元,但要区分"处理什么"与"被谁使用";设备能力由"会不会存储转发""会不会转发广播帧"现推。

考点速记

本节在真题里被考过的形式,按问法分四类:

① 层序题——问"第几层""相邻下层""直接为谁提供服务"(cn-2013-33、cn-2014-33、cn-2019-33、cn-2021-33)。四道题问法不同、动作完全一样:先把模型认准(OSI 七层还是 TCP/IP 四层),再定位那一层,最后答它的核心功能。OSI 自下而上是物、数、网、传、会、表、应;"应用层的相邻下层"是表示层,功能是数据格式转换;"直接为会话层提供服务的"是它的下一层即传输层;"OSI 第 5 层(自下而上)"是会话层,功能是会话管理;"TCP/IP 中传输层相邻的下一层"是网际层,功能是路由选择。

② 各层职责的边界题(cn-2009-33、cn-2022-33)。同名功能出现在多层,靠作用范围区分:问"自下而上第一个提供端到端服务的层"答传输层(会话层以上也是端到端的,但不是第一个);问"实现两个相邻结点间流量控制的层"答数据链路层(运输层的流量控制是端到端的)。

③ 概念判断题(cn-2010-33、cn-2011-33、cn-2020-33)。分别考三处:体系结构描述协议的内部实现细节;TCP/IP 的网络层提供无连接不可靠的数据报服务;一张只画消息来回次序的交互图描述的是三要素中的同步(时序)

④ 封装开销计算(cn-2017-33)。数清楚有几层加了开销,累加后除进去。

设备工作在第几层的判定(cn-2016-33)也挂在本节的练习区,但那道题给的是一整张网络拓扑,完整的逐跳分析在数据包的网络之旅

易错OSI 的传输层只支持面向连接,网络层两种都支持;TCP/IP 反过来——网络层只有无连接,传输层两种都有。 这两行最容易记反,抓手是"TCP/IP 把选择权交给了端"。

易错:只有被上层看得见的功能才叫服务。"TCP 提供三次握手服务""IP 提供路由选择服务"这类说法把实现细节当成了服务,是错的。

易错"面向连接"不等于"可靠"。 连接、可靠、应答是三个正交维度,可以任意组合。

易错n-SDU+n-PCI=n-PDU 只在不分片、不合并时成立。凡选项里出现"一定""必然"地把 SDU 与 PDU 一一对应,先想 IP 分片这个反例。

易错:ARP 归网络层(它不封装在 IP 数据报里),DNS 与 DHCP 归应用层(虽然处理的是网络层信息,但自己是跑在 UDP 上的完整请求-响应)。判据是"这个协议处理什么"而非"被谁使用"。

教材出处
  • 谢希仁《计算机网络》(第 8 版)印刷版 p29 给出协议的定义与三要素:"这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议";三要素为"语法,即数据与控制信息的结构或格式;语义,即需要发出何种控制信息,完成何种动作以及做出何种响应;同步,即事件实现顺序的详细说明"。同页说明这里的同步"不是狭义的(即同频或同频同相)而是广义的……因而同步含有时序的意思"。
  • 同书印刷版 p31 区分体系结构与实现:"体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件",并以"可以走进一个明代的建筑物中,但却不能走进一个明代的建筑风格之中"作比。同页说明 TCP/IP"从实质上讲……只有最上面的三层,因为最下面的链路层并没有属于 TCP/IP 体系的具体协议",以及讲授原理时"综合 OSI 和 TCP/IP 的优点,采用……五层协议的体系结构"。
  • 同书印刷版 p31–p33 逐层给出五层职责:运输层"负责向两台主机中进程之间的通信提供通用的数据传输服务"并具有复用与分用功能(p32);网络层的两个任务是"生成一个用来转发分组的转发表"与"依据转发表中指明的路径把分组转发到下一个路由器"(p32);数据链路层"如发现有差错,数据链路层就简单地丢弃这个出了差错的帧"(p32);物理层"解释比特代表的意思,不是物理层的任务",且传输媒体"并不在物理层协议之内,而是在物理层协议的下面。因此也有人把物理层下面的物理传输媒体当作第 0 层"(p33)。
  • 同书印刷版 p34(1.7.4 实体、协议、服务和服务访问点)给出本篇三概念辨析的全部依据:实体"表示任何可发送或接收信息的硬件或软件进程";"协议是'水平的'……但服务是'垂直的'";"并非在一个层内完成的全部功能都称为服务。只有那些能够被高一层实体'看得见'的功能才能称之为'服务'";"下面的协议对上面的实体是透明的";服务访问点 SAP"实际上就是一个逻辑接口,有点像邮政信箱"。同页明确 SDU 与 PDU 的关系不是一一对应:"可以是多个 SDU 合成为一个 PDU,也可以是一个 SDU 划分为几个 PDU"。
  • 同书印刷版 p35 给出"协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的",并以"不见不散"为反例;同页【例 1-1】即两军问题,结论是"在本例题给出的条件下,没有一种协议可以使蓝军 1 和蓝军 2 能够 100% 地确保胜利"。
  • 同书印刷版 p37 解释沙漏形状:"IP 层可以支持多种运输层协议……而不同的运输层协议上面又可以有多种应用层协议(所谓的 everything over IP),同时 IP 协议也可以在多种类型的网络上运行(所谓的 IP over everything)",并指出该图"反映出互联网的一个十分重要的设计理念,这就是网络的核心部分越简单越好,把一切复杂的部分让网络的边缘部分去实现"。
  • 同书印刷版 p36 列出对 TCP/IP 体系结构的批评:"这个体系结构没有清晰地阐明区分开服务、接口和协议之间的关系,而链路层并非真正的一个层次,而仅仅是强调了 IP 层需要这样一个与网络的接口。"
  • 同书印刷版 p33–p34 说明 PDU 术语来历:"OSI 参考模型把对等层次之间传送的数据单位称为该层的协议数据单元 PDU",并给出"每经过一层就包上一个新的信封,写上必要的地址信息"的封装比喻。

相关知识

计算机网络概述数据包的网络之旅性能指标TCP 与 UDP 对比TCP 连接管理

真题练习