目录
科普原理

网络分层模型:OSI 七层与 TCP/IP 四层一次讲清

网络为什么要分层,OSI 七层每一层管什么,实际互联网使用的 TCP/IP 四层如何对应,以及一个数据包在各层被「装信封、拆信封」的完整过程。

最后更新:

网络通信被拆成好几层,每一层只负责一件事,并且只和相邻的层打交道。最常用的两种模型是 OSI 七层模型(理论参考)和 TCP/IP 四层模型(实际互联网使用的)。发送数据时,从上往下每经过一层就加上一个「信封」(报头);接收时再从下往上一层层拆开。理解了分层,就能看懂「三层交换机」「七层代理」「加密隧道工作在第三层」这类说法。

插图:左边把信装进信封、再装进纸箱、再装上货车,右边按相反顺序卸车、开箱、拆信
  1. ① 应用层:写好的信信的内容,相当于 HTTP 等应用数据
  2. ② 传输层:装进信封加上 TCP 头,写明交给哪个程序(端口)
  3. ③ 网络层:装进纸箱加上 IP 头,写明送到哪台设备(IP 地址)
  4. ④ 链路层与物理层:装车上路加上帧头,变成电信号或无线电发出
  5. ⑤ 接收方:逐层拆开按相反顺序拆箱、拆信封,最后读到信

为什么要分层?

拿寄快递来类比:

  • 你只管写信,不关心快递怎么运;
  • 快递员只管收件、贴面单,不关心信里写了什么;
  • 分拣中心只看面单上的城市,决定发往哪里;
  • 货车司机只管把车开到下一站。

每个角色各管一摊,彼此之间只通过「信封」「面单」这些约定好的格式交接。网络分层也是这个思路,好处是:

  1. 各层可以独立替换:从网线换成 Wi-Fi,只影响最下面两层,浏览器完全不用改;
  2. 问题好定位:网络不通时,可以一层层排查,是线没插好(物理层)、IP 不对(网络层),还是网站本身出错(应用层);
  3. 分工开发:写网页的人不需要懂光纤,做路由器的人也不需要懂 HTML。

OSI 七层逐层说明

OSI 模型由国际标准化组织提出,从下往上一共七层:

层名称负责什么常见协议 / 标准数据单位
7应用层为程序提供网络服务:网页、邮件、域名查询HTTP、DNS、SMTP、FTP数据
6表示层数据的格式、编码、压缩和加密TLS 的加密、UTF-8、JPEG数据
5会话层建立、维持、结束一次「会话」会话管理、RPC数据
4传输层端到端传输:用端口区分程序,保证可靠或追求低延迟TCP、UDP段(Segment)
3网络层用 IP 地址跨网络寻址,选择路径(路由)IP、ICMP包(Packet)
2数据链路层在同一个局域网内,用 MAC 地址把数据交给相邻设备以太网、Wi-Fi(802.11)帧(Frame)
1物理层把 0 和 1 变成电信号、光信号或无线电波网线、光纤、无线电比特(Bit)

一个容易记的口诀:物、链、网、传、会、表、应。

TCP/IP 四层:实际互联网用的这一套

OSI 分得很细,但真正在互联网上跑的是 TCP/IP 协议族,它把七层合并成四层:

TCP/IP 四层对应 OSI代表协议
应用层应用层 + 表示层 + 会话层(5–7)HTTP、DNS、TLS
传输层传输层(4)TCP、UDP
网络层(网际层)网络层(3)IP、ICMP
网络接口层(链路层)数据链路层 + 物理层(1–2)以太网、Wi-Fi

日常交流时两套说法会混着用:讲协议怎么工作时用四层,说某个设备或技术「工作在第几层」时,习惯用 OSI 的编号。

封装与解封装:每一层加一个「信封」

发送数据时,每往下经过一层,这一层就在前面加上自己的报头,写上这一层需要的信息;链路层还会在末尾加一个校验用的帧尾:

应用层 HTTP 数据 数据 传输层 TCP 头 HTTP 数据 段:加上了端口号 网络层 IP 头 TCP 头 HTTP 数据 包:加上了 IP 地址 链路层 帧头 IP 头 TCP 头 HTTP 数据 帧尾 帧:加上 MAC
越往下,包在外面的「信封」越多;真正的内容(HTTP 数据)始终在最里面。
报头写了什么谁会看
TCP 头源端口、目标端口、序号、确认号收发两端的操作系统
IP 头源 IP、目标 IP、存活时间(TTL)沿途的每一台路由器
帧头 / 帧尾源 MAC、目标 MAC;帧尾是校验码同一局域网内的下一台设备

一个数据包在各层走过的完整过程

把发送方、中途的一台路由器和接收方放在一起看,就能清楚地看到每一层在什么时候做了什么:

发送方(电脑) 路由器 接收方(服务器) 发送方:从上往下逐层封装 应用层:生成 HTTP 请求 1 传输层:加 TCP 头(端口) 2 网络层:加 IP 头(IP 地址) 3 链路层:加帧头(MAC 地址) 4 物理层:变成电信号发出 5 路由器:只拆到网络层 拆掉帧头,读 IP 头 6 查路由表,换上新帧头 7 转发给下一跳 8 接收方:从下往上逐层拆开 链路层:核对 MAC,拆帧头 9 网络层:核对 IP,拆 IP 头 10 传输层:按端口交给程序 11 应用层:读到 HTTP 请求 12
发送方从上往下逐层「加头」,路由器只拆到网络层,接收方从下往上逐层「拆头」。
步骤在哪里做了什么
① 生成 HTTP 请求发送方 · 应用层浏览器写好「请把首页给我」的请求内容
② 加 TCP 头发送方 · 传输层写上源端口和目标端口(如 443),以及用于保证顺序和重传的序号
③ 加 IP 头发送方 · 网络层写上自己的 IP 和网站的 IP,决定这个包要去往哪台设备
④ 加帧头发送方 · 链路层写上自己的 MAC 和下一跳(通常是家里路由器)的 MAC
⑤ 发出信号发送方 · 物理层网卡把整个帧变成电信号或无线电发出去
⑥ 拆帧头、读 IP 头路由器收到后去掉帧头,只看 IP 头里的目标地址;路由器不看 TCP 和 HTTP
⑦ 查路由表、换帧头路由器决定下一跳,换上新的帧头(新的源和目标 MAC),同时把 TTL 减 1
⑧ 转发路由器 → 下一站这一步会在沿途每台路由器上重复,直到到达目标网络
⑨ 核对 MAC、拆帧头接收方 · 链路层确认是发给自己的,校验无误后去掉帧头帧尾
⑩ 核对 IP、拆 IP 头接收方 · 网络层确认目标 IP 是自己,去掉 IP 头
⑪ 按端口交给程序接收方 · 传输层根据目标端口 443 交给网站程序,按序号重组数据、回复确认
⑫ 读到 HTTP 请求接收方 · 应用层网站程序拿到完整的请求,开始准备网页

注意第 ⑥–⑦ 步:路由器只拆到网络层,它关心的只是「这个包要去哪」,不需要也不会去读里面的网页内容。这正是分层的意义所在。

各层常见设备与技术对照

层典型设备说明
物理层网线、光纤、光猫、集线器只传信号,不理解内容
数据链路层交换机、网卡、无线 AP认 MAC 地址,在局域网内转发
网络层路由器、三层交换机认 IP 地址,在不同网络之间转发
传输层及以上防火墙、负载均衡器、代理服务器能看端口甚至应用内容,按规则放行、分发或转发

后面要讲的代理和加密隧道,也可以用这张表来定位:代理大多工作在应用层或会话层,加密隧道常见的是在网络层把整个 IP 包包起来。

相关阅读

常见问题

OSI 七层和 TCP/IP 四层,到底以哪个为准?

实际的互联网用的是 TCP/IP 这套协议,所以讲「实际怎么运作」时看四层模型;OSI 七层是更细的参考框架,大家在描述「工作在第几层」时仍习惯用 OSI 的编号,例如「三层交换机」「七层负载均衡」。

HTTPS 里的 TLS 属于哪一层?

不同资料说法不一。TLS 位于 TCP 之上、HTTP 之下,在 TCP/IP 模型里通常归入应用层;按 OSI 的分工,它承担的加密工作属于表示层,也有人把它归到会话层。理解它的位置(TCP 和 HTTP 之间)比纠结编号更重要。

「二层」「三层」设备是什么意思?

指设备处理数据时看到哪一层为止。二层设备(如普通交换机)只看 MAC 地址,在同一个局域网内转发;三层设备(如路由器)会看 IP 地址,能在不同网络之间转发。

还没有安装穿山甲?

支持 iPhone / iPad、Mac、Windows 与 Android。新用户注册即送 7 天会员体验。

下载客户端
← 全部文章