← 网络基础学习第 2 / 55 章入门30 分钟

模块零 · 全景与基础

为什么要分层

「分层」是网络里被说得最多、也最含糊的词。这一章用一个你熟悉的场景说明为什么必须分层,以及分了层之后到底解决了什么问题、又付出了什么代价。

本章要解决的问题:「分层」是网络里被说得最多、也最含糊的词。这一章用一个你熟悉的场景说明为什么必须分层,以及分了层之后到底解决了什么问题、又付出了什么代价。

本章的证据来源:历史实测记录(网卡上实际绑定了哪些协议组件、各接口的 MTU)。分层模型与各层职责出自 ISO/IEC 7498-1(OSI 参考模型)与 RFC 1122(TCP/IP 分层)。

先从一个例子理解概念

寄一件快递,要装物品、写地址、选线路、送到门口。把这些工作分给不同环节,比让一个人处理所有细节更容易维护。网络也这样分工。

按职责分工:层与分层

层是一组职责相近的工作,例如解释网页请求或沿线路发送数据。分层是把整体通信拆成这些职责,通过约定的交接方式协作;不是每层只能做一件小事。

工作怎样交接:接口

这里的接口是两部分交接工作的约定,不只是网线插口。例如上层交下一层一份数据,下层按约定负责发送。接口让上层不必知道每条线怎样产生信号。

分工怎样画出来:参考模型

模型是帮助理解复杂系统的简化图。OSI七层和TCP/IP四层是两种常用分工方式;OSI、TCP/IP的英文缩写先当作名字,重点看各层负责什么。

先认四种职责

网络接口层处理相邻链路上的传输;网络层按地址跨网络选择下一步;传输层服务程序间通信;应用层解释网页、域名查询等具体消息。这四个名字后面反复使用。

下面再用这些概念看原理、命令和结果。规范与官方资料列在本章末尾,类比只帮助理解,不代替协议规则。

先假设不分层

如果把「把数据从这台电脑传到那台电脑」当成一个整体问题来解决,会立刻撞上一堆互相纠缠的麻烦:

  • 物理上用铜线、光纤还是无线电?三种的编码方式完全不同
  • 信号可能出错,谁来发现?
  • 数据可能丢失,谁负责重发?
  • 多台设备共用一条通道,怎么分给谁?
  • 两台设备可能隔着几十台路由器,路径怎么选?
  • 到达目的地后,交给哪个程序?
  • 数据格式对方认不认得?

七个问题,每一个都足够复杂。如果写成一个大程序去处理全部,那么改动任何一处都可能破坏其他地方。

分层做了什么:把问题切给不同的人

分层的核心思想只有一句:

每一层只解决一个问题,并且只依赖下一层提供的服务,不关心下一层怎么实现。

用寄快递类比:

层次谁负责关心什么不关心什么
你寄件人装盒、写清地址走陆运还是空运
快递公司运输怎么送到目的地城市盒子里是什么
当地网点末端派送送到具体门牌包裹从哪来

你不需要知道快递公司的路线规划,快递公司也不需要知道你寄的是书还是鞋。各层之间只需要约定一个「交接方式」,也就是接口。

网络里的分层:OSI 七层与 TCP/IP 四层

教科书上最常见的是 OSI 七层模型(国际标准化组织 ISO 提出):

层名称一句话职责
7应用层你的程序要干什么(浏览网页、发邮件)
6表示层数据格式转换、加密、压缩
5会话层管理「对话」的建立与结束
4传输层端到端传输与分用;是否可靠取决于具体协议
3网络层跨网络的寻址与选路(IP 在这一层)
2数据链路层同一段链路上怎么传(MAC、以太网)
1物理层电信号 / 光 / 电磁波怎么发出去

描述 TCP/IP 协议族时可使用 RFC 1122 的四层划分;工程中也常借用 OSI 层号或五层教学模型。下面按四层组织内容:

TCP/IP 四层对应 OSI实际例子
应用层5 + 6 + 7HTTP、DNS、HTTPS、SSH
传输层4TCP、UDP
网络层3IP、ICMP
网络接口层1 + 2以太网、Wi-Fi、网卡驱动

四层和七层是不同体系的抽象划分,不是七层被历史上简单删成四层。 TCP/IP 的应用层通常承担 OSI 表示、会话和应用层中的多种功能;表中的对应关系只是教学近似。

每层只解决一个问题

把四层各自的问题写清楚。这张表是后面所有内容的骨架,每章都挂在其中一条上。

网络接口层(L1–L2):数据怎么在同一段线路上从 A 传到 B?

  • 帧长什么样(以太网帧)
  • 怎么标识设备(MAC 地址)
  • 怎么避免冲突、怎么转发(交换机)

网络层(L3):数据怎么跨越多个网络,从起点到终点?

  • 地址怎么分配(IP 地址、子网划分)
  • 走哪条路(路由、最长前缀匹配)
  • 传输出问题怎么通报(ICMP)

传输层(L4):数据怎么可靠地交给对方设备上的某个程序?

  • 怎么区分程序(端口)
  • 丢了怎么办(重传)
  • 发太快压垮对方怎么办(流量控制、拥塞控制)

应用层(L5–L7):这些数据到底是什么意思?

  • 域名怎么变成 IP(DNS)
  • 网页怎么请求和响应(HTTP)
  • 怎么保证不被偷看(TLS)

分层最大的好处:可以单独换掉某一层

这是分层真正的价值,用一个具体例子说明:

你家用 Wi-Fi 上网,看网页用的是 HTTP。
后来把 Wi-Fi 换成网线 —— 网页照样能看,HTTP 一个字都不用改。
再后来宽带从电信换成联通,IP 地址全变了 —— HTTP 还是不用改。

因为 HTTP 只依赖「传输层能可靠地把数据送到」,不关心底下是 Wi-Fi 还是有线、是电信还是联通。

反过来也一样:网卡厂商升级万兆网卡,不需要通知浏览器开发者。

分层的代价:包头

分层不是免费的。许多协议会在数据前后增加控制信息,叫包头(header)。

应用层的数据(比如一个 HTTP 请求)
  ↓ 传输层加上 TCP 头(至少 20 字节)
  ↓ 网络层加上 IP 头(至少 20 字节)
  ↓ 链路层加上以太网头(14 字节)和帧尾(4 字节)

一个原本 100 字节的请求,实际在线路上传输的可能是 100 + 20 + 20 + 18 = 158 字节。超过三分之一的带宽花在了「分层本身」上。

这笔开销值不值得?值得 —— 可靠传输、跨网络寻址、设备标识这些能力,都是靠这些头部字段实现的。而且大部分包的载荷远大于 100 字节,包头的占比会降到很低。

实测:本机各接口的 MTU

InterfaceAlias                     NlMtu
-------------                      -----
WLAN                                1500
以太网                                1500
以太网 3                              1200
FlClash                             9000
vEthernet (WSL (Hyper-V firewall))  1500

同一个 MTU 概念,在不同接口上是不同的值:这些是当时查询到的接口 IP MTU。TUN 的 9000 不证明物理链路支持巨型以太网帧;1200 的具体设置原因也不能仅由数值确定。

MTU 不是"越大越好":路径上任何一段的 MTU 更小,整条路就得按最小的来。 这也是《网络层》模块要讲的"分片"问题的根源。

动手:在自己机器上看到协议栈

分层不是教科书上的抽象概念,操作系统里真的有一份「协议栈」清单。

示例powershell
Get-NetAdapterBinding -Name "WLAN" | Where-Object Enabled -eq $true | Select-Object -ExpandProperty DisplayName

历史实测记录输出(WLAN 网卡,启用中的组件共 11 个):

Microsoft 网络客户端
Microsoft 网络的文件和打印机共享
Rawether NDIS 6.X SPR Protocol Driver
QoS 数据包计划程序
Internet 协议版本 4 (TCP/IPv4)
嵌套网络虚拟化
Microsoft LLDP 协议驱动程序
链路层拓扑发现响应程序
Internet 协议版本 6 (TCP/IPv6)
链路层拓扑发现映射器 I/O 驱动程序
桥驱动程序

这是一张接口绑定组件清单,不是每层对应一个开关的分层模型。 注意:

  • TCP/IPv4 和 TCP/IPv6 是两个独立的网络层组件,可以分别启用
  • 网络的文件和打印机共享 是应用层组件,关掉它不影响你上网
  • 链路层拓扑发现 属于链路层

组件与层不一一对应:一个组件可能涉及多层,同一层也可能有多个实现。组件可单独配置说明系统有模块划分,不能由此证明每层恰好一个开关。

常见误解

误解一:「分层是理论,实际网络不分层」

恰好相反。上面那个命令的输出就是证据:操作系统包含可独立配置的组件,但不能把组件清单和协议层一一对应。抓包时你看到的也是逐层的头。

误解二:「OSI 七层是实际标准」

OSI 参考模型本身是 ISO 标准;本教程介绍的互联网协议族是 TCP/IP,不能把“参考模型”理解为“不是标准”。说"这是三层问题"是借用了 OSI 的编号习惯。

误解三:「层数越少越简单」

层数少不等于简单,只是把复杂度压进了一层。不分层的话,换一种网线编码就要重写全部逻辑。

本章小结

结论性质
分层通过服务接口划分功能,便于实现与演进架构概括
OSI 与 TCP/IP 是不同模型,层间对应是近似关系模型说明
158/1518 字节计算限定无选项 IPv4/TCP 与无标签以太网 MAC 帧计算假设
TUN IP MTU 不等于物理以太网巨型帧能力适用边界
网卡组件清单不能证明各层可一一开关证据限制

自测题

6 题 · 先自己答,再展开对照

  1. 把家里的 Wi-Fi 换成网线,为什么浏览器的代码不需要改?
    因为 HTTP 只依赖传输层提供的「可靠送达」服务,不关心底层是 Wi-Fi 还是有线。 换掉物理介质只影响最下面两层,上面的层感知不到。这就是解耦。
  2. OSI 模型的哪两层在 TCP/IP 四层里被合并掉了?为什么可以合并?
    TCP/IP 应用层大致覆盖 OSI 的会话、表示和应用功能;这是模型之间的近似对照,不能解释成相关功能或独立实现从未存在。
  3. 一个 100 字节的 HTTP 请求,经过 TCP/IP 和以太网封装后在线路上大约多少字节?多出来的是什么?
    假设无选项 IPv4/TCP、无 VLAN,MAC 帧为 100+20+20+14+4=158 字节。完整介质占用还涉及前导码、SFD、帧间隙;Wi-Fi 帧不能直接套此格式。
  4. 如果让你把网络简化成"两层",会遇到什么问题?
    复杂度会挤在一层里。 比如只留"物理 + 应用"两层,应用层就必须自己处理寻址、重传、乱序、分片、介质差异。任何一项要改(比如换一种网线编码),都可能牵动整个程序。层数多少本身不是目标,每层职责是否单一才是。
  5. 为什么说"分层让互联网能长到今天这个规模"?
    因为没有人能一次性升级全世界的设备。 分层让各层独立演进:有人升级光纤,有人升级协议版本,有人升级浏览器,彼此不必协调。可演进性 —— 而不是性能 —— 才是分层最大的贡献。
  6. 本机 FlClash 接口的 MTU 是 9000,WLAN 是 1500。一个包从 FlClash 出去再经 WLAN 转发,实际能一次传多少字节的数据?
    不能由这两个接口值断定实际发送方式。TUN 代理可能终止原连接并重新建立 TCP 连接、按其 MSS 分段;只有同一 IP 包经过更小 MTU 时,才按 IPv4 DF 或 IPv6 规则处理。

参考资料与适用范围

修订核对日期:2026-10-13。规则按所列协议与实现范围理解;文中的原始命令输出是历史观察,不表示本次重新实测。跨版本、代理/隧道及不同捕获位置需要另行核对。

正文源自 m0-02-为什么要分层.md · 共 12 节 · 6 道自测题