用五层模型理解一次网络请求从浏览器到服务器的过程。

2026-03-02 11:12:31
偶然间翻了一下这篇文章, 有点杂乱无章了。让 ai 润色了一下..

先说结论

网络通信本质上是在解决一个问题:一段数据如何从一台机器准确地到达另一台机器。

网络模型就是把“发数据”这件事拆成几层。每一层只负责一部分问题,处理完之后再交给下一层。

五层模型可以先按一句话理解:

应用层准备内容,传输层找到进程,网络层找到机器,数据链路层找到下一跳,物理层负责真正发送。

为什么会有三种网络模型

刚开始学网络时,经常会看到三种说法:

  • TCP/IP 四层模型
  • 五层模型
  • OSI 七层模型

它们不是三套完全不同的东西,只是拆分粗细不同。

TCP/IP 四层模型 更贴近真实工程, OSI 七层模型 更偏理论, 五层模型 适合学习和理解,因为它既不会太粗,也不会太细。

这篇文章主要使用五层模型。

五层模型分别干什么

应用层:商量说什么话

解决的是:大家用什么格式聊天。

浏览器和服务器之间用 HTTP,发邮件用 SMTP,查域名用 DNS。这一层不关心数据具体怎么走,只关心数据内容应该长什么样。

常见协议:

  • HTTP:浏览器和服务端传输网页、接口数据
  • FTP:文件传输
  • DNS:把域名解析成 IP 地址
  • SMTP:发送邮件
  • POP3 / IMAP:接收邮件

比如浏览器访问一个网页时,会先构造一个 HTTP Request,服务器收到后返回一个 HTTP Response

传输层:把话交给哪个应用

传输层解决的是:这份数据要交给对方机器上的哪个程序。

一台服务器上可能同时跑着网站、数据库、SSH 服务。光知道服务器的 IP 地址还不够,还要知道应该交给哪个端口。

常见协议:

  • TCP:可靠传输,适合网页、接口请求、文件传输等场景
  • UDP:传输更轻量,适合音视频、游戏、DNS 查询等场景

可以简单理解为:

  • TCP 更像打电话,先建立连接,再尽量保证数据按顺序送到。
  • UDP 更像直接发消息,速度快,但不保证对方一定收到。

例如访问 https://baidu.com 时,通常会连接到服务器的 443 端口。

网络层:找到哪台机器

网络层解决的是:目标机器在哪里。

IP 地址 用来定位网络中的一台机器,路由器 负责一站一站地把数据往目标方向送。

核心概念:

  • IP 地址:标识网络中的一台主机
  • 路由器:决定数据包下一步应该发往哪里
  • IP 协议:定义数据包如何在不同网络之间传递

只要源 IP 和目标 IP 确定,网络层就会尝试通过路由把数据包送到目标网络。

数据链路层:找到下一站设备

数据链路层解决的是:当前这一站,下一步该交给谁。

这里最容易和网络层混淆。

IP 负责最终目的地,MAC 负责当前局域网里的下一跳设备。数据不是简单地“把 IP 转成 MAC 地址”就结束了,而是要先根据 IP 判断下一跳在哪里,再在当前链路上找到下一跳设备的 MAC 地址

核心概念:

  • MAC 地址:网卡的硬件地址
  • 交换机:在局域网内根据 MAC 地址转发数据帧
  • ARP:根据 IP 地址查询对应的 MAC 地址

如果目标主机不在同一个局域网,数据通常会先发给网关;如果目标主机就在同一个局域网,才会直接发给目标主机。

物理层:真的把信号发出去

物理层解决的是:怎么把数据真的发出去。

到了这一层,前面的 HTTPTCPIPMAC 都已经不重要了。最终数据都要变成电信号、光信号或者无线信号。

常见介质和设备:

  • 光纤
  • 双绞线
  • 同轴电缆
  • 集线器
  • 无线电波

物理层只关心比特流如何在真实世界中传输。

用一次访问网站串起来

以浏览器访问 https://baidu.com 为例,可以粗略理解为:

  1. 应用层:浏览器构造 HTTP 请求。如果只有域名,会先通过 DNS 查询目标 IP
  2. 传输层:使用 TCP 和服务器建立连接,并通过 443 端口找到对应服务。
  3. 网络层:把数据封装成 IP 数据包,写入源 IP 和目标 IP
  4. 数据链路层:找到下一跳设备的 MAC 地址,并封装成数据帧。
  5. 物理层:把数据帧转换成信号,通过网线、光纤或无线网络发送出去。

接收方收到数据后,会反过来逐层解析:

  1. 物理层收到信号,转换成比特流。
  2. 数据链路层解析数据帧,确认 MAC 地址
  3. 网络层解析 IP 数据包,确认目标主机。
  4. 传输层解析 TCP / UDP 数据,交给对应端口的进程。
  5. 应用层解析 HTTPDNS 等应用协议数据。

这个过程经常被称为「封装」和「解封装」。

每一层解决的问题

层级大白话理解典型概念
应用层数据用什么格式说HTTPDNSSMTP
传输层数据交给哪个程序TCPUDP、端口
网络层数据发到哪台机器IP、路由器
数据链路层当前这一站交给谁MAC、交换机、ARP
物理层数据怎么变成信号发出去光纤、网线、无线电波

最容易混淆的点

网络层和数据链路层最容易混在一起。

简单区分:

  • 网络层看 IP,负责找到最终要去的机器。
  • 数据链路层看 MAC,负责找到当前局域网里的下一跳设备。

可以把它想象成寄快递:

  • IP 像最终收货地址。
  • MAC 像当前站点下一辆要交接的车。
  • 路由器 像中转站,负责决定下一站往哪里走。
  • 交换机 像站内分拣,负责在局域网里把东西交到对应设备。

所以,数据传输不是“一步到达”,而是一站一站往目标方向送。

总结

应用层定义数据格式,传输层定位进程,网络层定位主机,数据链路层定位下一跳设备,物理层负责真实传输。

理解这个分工后,再看 HTTPTCPIPMACARP、路由器、交换机,就会清晰很多。

参考资料