用五层模型理解一次网络请求从浏览器到服务器的过程。
先说结论
网络通信本质上是在解决一个问题:一段数据如何从一台机器准确地到达另一台机器。
网络模型就是把“发数据”这件事拆成几层。每一层只负责一部分问题,处理完之后再交给下一层。
五层模型可以先按一句话理解:
应用层准备内容,传输层找到进程,网络层找到机器,数据链路层找到下一跳,物理层负责真正发送。
为什么会有三种网络模型
刚开始学网络时,经常会看到三种说法:
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 地址
如果目标主机不在同一个局域网,数据通常会先发给网关;如果目标主机就在同一个局域网,才会直接发给目标主机。
物理层:真的把信号发出去
物理层解决的是:怎么把数据真的发出去。
到了这一层,前面的 HTTP、TCP、IP、MAC 都已经不重要了。最终数据都要变成电信号、光信号或者无线信号。
常见介质和设备:
- 光纤
- 双绞线
- 同轴电缆
- 集线器
- 无线电波
物理层只关心比特流如何在真实世界中传输。
用一次访问网站串起来
以浏览器访问 https://baidu.com 为例,可以粗略理解为:
- 应用层:浏览器构造
HTTP请求。如果只有域名,会先通过DNS查询目标IP。 - 传输层:使用
TCP和服务器建立连接,并通过443端口找到对应服务。 - 网络层:把数据封装成
IP数据包,写入源IP和目标IP。 - 数据链路层:找到下一跳设备的
MAC 地址,并封装成数据帧。 - 物理层:把数据帧转换成信号,通过网线、光纤或无线网络发送出去。
接收方收到数据后,会反过来逐层解析:
- 物理层收到信号,转换成比特流。
- 数据链路层解析数据帧,确认
MAC 地址。 - 网络层解析
IP数据包,确认目标主机。 - 传输层解析
TCP/UDP数据,交给对应端口的进程。 - 应用层解析
HTTP、DNS等应用协议数据。
这个过程经常被称为「封装」和「解封装」。
每一层解决的问题
| 层级 | 大白话理解 | 典型概念 |
|---|---|---|
| 应用层 | 数据用什么格式说 | HTTP、DNS、SMTP |
| 传输层 | 数据交给哪个程序 | TCP、UDP、端口 |
| 网络层 | 数据发到哪台机器 | IP、路由器 |
| 数据链路层 | 当前这一站交给谁 | MAC、交换机、ARP |
| 物理层 | 数据怎么变成信号发出去 | 光纤、网线、无线电波 |
最容易混淆的点
网络层和数据链路层最容易混在一起。
简单区分:
- 网络层看
IP,负责找到最终要去的机器。 - 数据链路层看
MAC,负责找到当前局域网里的下一跳设备。
可以把它想象成寄快递:
IP像最终收货地址。MAC像当前站点下一辆要交接的车。路由器像中转站,负责决定下一站往哪里走。交换机像站内分拣,负责在局域网里把东西交到对应设备。
所以,数据传输不是“一步到达”,而是一站一站往目标方向送。
总结
应用层定义数据格式,传输层定位进程,网络层定位主机,数据链路层定位下一跳设备,物理层负责真实传输。
理解这个分工后,再看 HTTP、TCP、IP、MAC、ARP、路由器、交换机,就会清晰很多。