计算机网络分层模型通俗指南 (OSI vs TCP/IP)
如果说前面的 HTTPS 是"押运公司"的内部操作手册,那么计算机网络分层模型就是整个全球物流系统的运作标准。
为了让全世界不同厂商生产的计算机能顺畅交流,ISO(国际标准化组织)制定了 OSI 七层模型。通过将复杂的网络通信过程拆解成一层层的工序,就像把"寄快递"这件事拆解成打包、贴单、运输、路况等不同环节。
本文将通过 "CEO 寄礼物" 的类比,为你拆解这七层协议,以及现实中更常用的 TCP/IP 四层模型。
一、 OSI 七层模型:CEO 寄礼物的全过程
假设 A 公司的 CEO (张三) 要送一份机密礼物给 B 公司的 CEO (李四)。这个过程需要经过公司内部的一层层处理。
1. 应用层 (Application Layer) - 第7层
- 场景:CEO 张三说:"我要送这瓶'82年的拉菲'给李四。"
- 作用 :为应用软件提供服务。直接和用户打交道,决定了你要传什么(是网页 HTTP,还是文件 FTP,还是邮件 SMTP)。
- 常见协议:HTTP, FTP, SMTO, DNS。
2. 表示层 (Presentation Layer) - 第6层
- 场景 :秘书小王接过酒,心想:"这酒不能直接寄,得包装一下。" 于是他把酒用精美的礼盒包好(格式化 ),并为了安全在外面贴了封条(加密 ),如果礼物太大还得压缩一下(压缩)。
- 作用 :数据格式转换、加密、压缩。确保对方能看懂,且数据安全、体积小。
- 关键词:编码, SSL/TLS (部分功能), JPEG/MPEG。
3. 会话层 (Session Layer) - 第5层
- 场景:行政主管老赵打电话给 B 公司:"喂,我们这边有东西要发过去,你们准备好接收了吗?别到时候没人签收。"
- 作用 :建立、管理和维护会话。控制两个应用程序之间的对话连接。
- 关键词:RPC, Session 管理。
- > 注:在实际开发中,第5、6、7层经常在代码里合在一起处理。
4. 传输层 (Transport Layer) - 第4层
- 场景 :物流经理大刘接过包裹。
- 他决定用"顺丰特快"(TCP):必须保证送到,如果丢了得重发,还要按顺序送(可靠传输)。
- 或者决定用"普通平邮"(UDP):只管发出去,丢了不管,快就行(不可靠传输)。
- 他还在单子上写了"请交给财务部前台"(端口号),区分收件人具体是哪个部门。
- 作用 :端到端的传输控制。关注的是数据怎么传(可靠还是快速)以及传给谁(端口)。
- 协议:TCP, UDP。
5. 网络层 (Network Layer) - 第3层
- 场景 :快递分拣中心。工作人员给包裹贴上具体的地址单:"北京市朝阳区xx路xx号"(IP 地址 )。并且规划路线:"虽然要去北京,但先发到天津中转站比较快"(路由选择)。
- 作用 :寻址和路由。决定数据包在网络中怎么走,从哪条路走。
- 协议:IP, ICMP (Ping), ARP (部分)。
6. 数据链路层 (Data Link Layer) - 第2层
- 场景 :长途货车司机。司机不管包裹里是什么,也不管最终去哪,他只负责:"我现在要把车从'上海'开到'南京'的中转站"。他关注的是两个相邻节点之间的传输,依靠车牌号(MAC 地址)识别车辆。
- 作用 :相邻节点间的可靠传输。物理寻址(MAC)和错误检测。
- 协议:Ethernet (以太网), Wi-Fi (802.11)。
7. 物理层 (Physical Layer) - 第1层
- 场景:公路、光缆。这是最底层的物理设施,是柏油马路还是泥土路?是用光传信号还是用电传信号?
- 作用 :传输比特流 (0和1)。定义电压、接口形状、线缆标准。
- 关键词:双绞线, 光纤, 4G/5G电波。
二、 现实与理想:TCP/IP 四层模型
OSI 七层模型是教科书里的"理想模型",但在实际工业界(互联网),大家觉得分得太细太麻烦了。
于是,TCP/IP 模型(或称 DoD 模型)成为了实际的标准。它把 OSI 进行了简化和合并:
| OSI 七层模型 | TCP/IP 四层模型 | 对应关系说明 | 现实类比 |
|---|---|---|---|
| 应用层 (7) | 应用层 (Application) | 包含了 OSI 的应用层、表示层、会话层 | CEO + 秘书 + 行政 (不用分那么细,反正都是公司内部要把货准备好) |
| 表示层 (6) | ^ | ^ | ^ |
| 会话层 (5) | ^ | ^ | ^ |
| 传输层 (4) | 传输层 (Transport) | 对应 OSI 传输层 | 物流经理 (负责选顺丰还是平邮,负责分发到具体部门/端口) |
| 网络层 (3) | 网际层/网络层 (Internet) | 对应 OSI 网络层 | 分拣中心 (负责贴地址 IP,负责规划路线) |
| 数据链路层 (2) | 网络接口层 (Network Access) | 包含了 OSI 的数据链路层、物理层 | 司机 + 道路 (反正就是要把货运到下一站,底层硬件合在一起算) |
| 物理层 (1) | ^ | ^ | ^ |
为什么 TCP/IP 赢了?
因为在实际写代码(Socket 编程)时,程序员通常只关心:
- 应用层:我要发什么数据?(HTTP报文)
- 传输层:我要怎么发?(TCP还是UDP)
- 网络层:发给哪个 IP?
至于下面的硬件细节(网卡、光缆),操作系统和硬件厂商已经帮我们搞定了。
总结
- OSI 7层:学术界的严谨标准,适合学习原理,分工极细。
- TCP/IP 4层:工业界的实战标准,简单高效,是我们日常开发真正用到的模型。
理解这个模型,你就知道当网络不通时该怎么排查:
- 先看网线灯亮不亮(物理层/网络接口层)?
- 再看 Ping 不 Ping 得通 IP(网络层)?
- 再看端口通不通(传输层)?
- 最后看 HTTP 报文对不对(应用层)?