1. 网络基础与协议栈概述:OSI七层模型、TCP/IP四层模型、数据封装与解封装过程
做网络数据采集,第一件事就是搞懂数据在网络上到底是怎么跑的。我见过不少新手,上来就抓包,结果看到一堆十六进制就懵了——说白了,就是没搞懂协议栈的分层逻辑。
这一章,咱们把地基打牢。我会结合自己踩过的坑,把OSI七层、TCP/IP四层、数据封装这三个核心概念讲透。
1.1 为什么需要分层?
你想想看,如果让你设计一套全球通用的网络通信系统,要处理光纤、Wi-Fi、蓝牙、卫星……各种物理介质,还要保证消息、网页视频、邮件都能跑,你会怎么做?
答案就是分层。每一层只干自己的事,层与层之间通过标准接口通信。这样好处很明显:
- 解耦:底层换了光纤,上层应用不用改一行代码
- 标准化:不同厂商的设备可以互联互通
- 可维护:排查问题可以逐层定位,不用从头翻到尾
我的经验:有一次排查视频卡顿,我习惯性地先看应用层,折腾了半天。后来直接看网络层,发现是路由表配错了。分层思维能帮你快速缩小问题范围——别像我一样走弯路。
1.2 OSI七层模型(理论上的完美蓝图)
OSI模型是国际标准化组织(ISO)在1984年提出的。说实话,它太理想化了,实际落地时没人完全照着它来。但作为学习框架,它无可替代。
| 层级 | 名称 | 核心功能 | 常见协议/设备 |
|---|---|---|---|
| 7 | 应用层 | 为用户提供网络服务接口 | HTTP、FTP、SMTP、DNS |
| 6 | 表示层 | 数据格式转换、加密、压缩 | SSL/TLS、JPEG、ASCII |
| 5 | 会话层 | 建立、管理、终止会话 | NetBIOS、RPC |
| 4 | 传输层 | 端到端可靠传输、流量控制 | TCP、UDP |
| 3 | 网络层 | 路由寻址、逻辑地址(IP) | IP、ICMP、路由器 |
| 2 | 数据链路层 | 帧封装、MAC地址、差错检测 | 以太网、交换机、PPP |
| 1 | 物理层 | 比特流传输、电气信号 | 网线、光纤、集线器 |
记忆口诀(我当年就是这么背的): 物、数、网、传、会、表、应。或者用英文首字母:Please Do Not Throw Sausage Pizza Away。
1.3 TCP/IP四层模型(实际工业标准)
OSI是教科书,TCP/IP才是现实。互联网就是建立在TCP/IP之上的。它把七层压缩成了四层:
- 应用层:对应OSI的5、6、7层,直接面向用户。HTTP、DNS、FTP都在这里。
- 传输层:对应OSI的第4层。TCP保证可靠,UDP追求速度。
- 网络层:对应OSI的第3层。IP协议负责把数据包从源地址送到目的地址。
- 网络接口层:对应OSI的1、2层。处理物理传输和MAC地址。
注意:TCP/IP模型没有独立的表示层和会话层。这些功能被合并到应用层里了。比如加密(表示层功能)在HTTPS中由应用层的TLS实现。别搞混了。
1.4 数据封装与解封装(数据到底怎么穿衣服?)
这是我最喜欢讲的部分。数据从应用层往下走,每一层都会给它加一个头部(Header),就像打包快递一样。我习惯把这个过程叫做「穿衣服」。
封装过程(发送端)
- 应用层:原始数据(比如HTTP请求报文)
- 传输层:加上TCP/UDP头部,变成数据段(Segment)
- 网络层:加上IP头部,变成数据包(Packet)
- 数据链路层:加上MAC头部和尾部(FCS校验),变成数据帧(Frame)
- 物理层:转换成比特流,通过网线发出去
解封装过程(接收端)
反过来,每一层剥掉自己的头部,把剩下的交给上一层。就像拆快递一样,一层一层剥开。
关键点:每一层只认识自己层的头部。网络层不会去读TCP端口号,传输层也不会关心MAC地址。这就是分层的好处——各司其职。
数据单元名称对照表
| 层级 | 封装后的名称 | 核心头部信息 |
|---|---|---|
| 应用层 | 报文(Message) | 无(原始数据) |
| 传输层 | 数据段(Segment) | 源端口、目的端口、序列号 |
| 网络层 | 数据包(Packet) | 源IP、目的IP、TTL |
| 数据链路层 | 数据帧(Frame) | 源MAC、目的MAC、类型 |
| 物理层 | 比特流(Bits) | 电信号/光信号 |
避坑指南:我曾经在抓包分析时,看到TCP段里有个奇怪的标志位,死活想不通。后来才发现,我一直在看网络层的IP头部,根本没切到传输层。记住:Wireshark里每一层都可以展开,别只看第一层。
1.5 核心知识体系图
下面这张图,把OSI、TCP/IP、数据封装的关系画清楚了。我建议你把它存下来,每次遇到网络问题,先对着图定位一下问题出在哪一层。
1.6 本章小结
这一章,我们搞清楚了:
- OSI七层模型是理论框架,TCP/IP四层模型是实际标准
- 数据封装就是逐层加头,解封装就是逐层去头
- 分层思维是排查网络问题的核心方法论