OSI 七层模型和 TCP/IP 四层模型是什么?
一句话回答
OSI 七层模型从下到上是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,是一个理论上的参考模型。实际互联网使用的是 TCP/IP 四层模型:网络接口层、网络层、传输层、应用层,OSI 中会话层、表示层的功能并入了应用层。讲原理时还常用折中的五层模型。发送数据时每一层都给数据加上自己的首部(封装),接收方再逐层拆开(解封装)。
详细解析
三种模型的对应关系
| OSI 七层 | TCP/IP 四层 | 五层模型 |
|---|---|---|
| 应用层、表示层、会话层 | 应用层 | 应用层 |
| 传输层 | 传输层 | 传输层 |
| 网络层 | 网络层(也叫网际层) | 网络层 |
| 数据链路层、物理层 | 网络接口层(也叫链路层) | 数据链路层、物理层 |
五层模型把 OSI 下面两层和 TCP/IP 上面三层结合起来,既贴近实际,又能把物理层和数据链路层讲清楚,所以教学中很常用。
每一层做什么
| 层 | 作用 | 常见协议、设备 |
|---|---|---|
| 应用层 | 为应用程序提供服务,定义报文格式和交互规则 | HTTP、HTTPS、DNS、FTP、SMTP、SSH、WebSocket |
| 传输层 | 端口到端口(进程到进程)的通信 | TCP、UDP |
| 网络层 | 主机到主机的通信,负责 IP 寻址和路由选择 | IP、ICMP;路由器工作在这一层 |
| 数据链路层 | 在同一链路上相邻节点之间传输帧,用 MAC 地址寻址 | 以太网;交换机工作在这一层 |
| 物理层 | 在介质上传输比特流 | 网线、光纤等传输介质;集线器 |
OSI 中的表示层负责数据格式转换、压缩和加密,会话层负责建立和管理会话。TCP/IP 没有单独设置这两层,相关工作由应用层协议自己完成,比如 HTTP 用 Content-Encoding 声明压缩方式。
TLS 位于应用层和传输层之间:它运行在 TCP 之上,为 HTTP 等应用层协议提供加密和身份认证。HTTPS 就是 HTTP 跑在 TLS 上,TLS 再跑在 TCP 上(见 HTTPS)。
数据的封装和解封装
以一次 HTTP 请求为例,发送方自上而下,每一层给上一层交下来的数据加上自己的首部:
应用层 [应用数据]
传输层 [TCP 头][应用数据] 段(segment)
网络层 [IP 头][TCP 头][应用数据] 包(packet)
数据链路层 [帧头][IP 头][TCP 头][应用数据][帧尾] 帧(frame)
物理层 0110 1001 0011 ... 比特流
接收方自下而上,每一层拆掉对应的首部,把剩下的部分交给上一层,最终把应用数据交给应用程序。
- 用 UDP 时传输层加的是 UDP 头,这一层的数据单元一般叫数据报
- 帧尾是用来检测传输错误的校验序列
- 传输途中,IP 头里的源 IP 和目的 IP 一般保持不变(经过 NAT 时除外),帧头里的 MAC 地址则每经过一个路由器就重写一次:源 MAC 换成这个路由器出口的地址,目的 MAC 换成下一跳的地址。路由器要拆到网络层看 IP 来决定往哪转发,交换机只看数据链路层的 MAC 地址
"四层"和"七层"负载均衡
这两个说法就来自 OSI 模型的层号:四层负载均衡工作在传输层,只根据 IP 和端口转发;七层负载均衡工作在应用层,能解析 HTTP 内容,可以按 URL、请求头、Cookie 转发。详见 反向代理和负载均衡。
面试官可能追问
ping 用的是什么协议?
ICMP,属于网络层,直接封装在 IP 包里,不经过 TCP 或 UDP,所以 ping 没有端口的概念。ping 发出 ICMP 回显请求(Echo Request),对方回复回显应答(Echo Reply)。ping 得通只说明网络层可达,不代表某个端口上的服务正常;反过来,服务器禁用了 ICMP 时 ping 不通,网站也可能照常访问。
HTTP、TCP、IP 分别属于哪一层?
HTTP 属于应用层,TCP 属于传输层,IP 属于网络层。顺带记住几个容易混的:DNS 是应用层协议,只是通常用 UDP 承载;端口是传输层的概念,IP 地址属于网络层,MAC 地址属于数据链路层。
ARP 是做什么的?
根据 IP 地址查找同一局域网内对应设备的 MAC 地址。主机先查本地的 ARP 缓存;查不到就在局域网内广播"谁是 192.168.1.1",拥有这个 IP 的设备回复自己的 MAC 地址。如果目标 IP 不在同一网段,主机要查的是网关(路由器)的 MAC 地址,把帧交给网关转发。IPv6 不使用 ARP,改用邻居发现协议(NDP)。
易错点
- DNS 是应用层协议,不要因为它常用 UDP 就把它归到传输层
- 路由器工作在网络层,普通交换机工作在数据链路层;集线器只是把信号转发到所有端口,属于物理层
- OSI 是理论参考模型,实际互联网使用的是 TCP/IP 模型
AI 模拟面试官
用自己的话回答,AI 对照参考答案打分、指出遗漏,再追问,最多 3 轮
这道题你掌握了吗?
选一个最接近的状态,没掌握的题会出现在"我的进度 · 待复习"里。
学习记录暂存在本机浏览器。登录后自动同步到账号,换设备也能看到。