网络协议基础:OSI七层模型与TCP/IP四层模型、数据包封装与解封装过程、MAC地址与IP地址

说实话,很多人学抓包一上来就开软件,抓了一堆数据包却看不懂。为什么?因为不知道这些包是怎么来的,又往哪儿去。我个人习惯,在讲抓包技巧之前,先把网络协议这张地图画清楚。你手里有地图,抓包才不是瞎抓。

OSI七层模型:理论上的完美蓝图

OSI七层模型,全称是开放系统互连参考模型。它是国际标准化组织在1984年提出的。说白了,就是把网络通信这件事拆成了七个步骤。每一层只管自己的事,上下层之间通过接口沟通。

我刚开始学的时候,觉得七层太多了,记不住。后来在项目里排查一个跨网段丢包的问题,一层一层剥开看,才发现这七层设计得真巧妙。每一层都有明确的分工,出了问题也好定位。

层级 名称 核心功能 常见协议/设备
7 应用层 为用户提供网络服务接口 HTTP、FTP、SMTP、DNS
6 表示层 数据格式转换、加密、压缩 SSL/TLS、JPEG、ASCII
5 会话层 建立、管理、终止会话 NetBIOS、RPC
4 传输层 端到端可靠传输、流量控制 TCP、UDP
3 网络层 路由寻址、逻辑地址 IP、ICMP、路由器
2 数据链路层 帧封装、物理地址、差错检测 以太网、交换机、MAC
1 物理层 比特流传输、电气信号 网线、光纤、集线器
我的经验:抓包分析最常用到的是第2层到第7层。物理层的问题通常靠硬件工具排查,抓包软件帮不上忙。所以,你重点掌握数据链路层到应用层就够了。

TCP/IP四层模型:实战中的精简版

OSI七层模型太理想化了,实际互联网用的是TCP/IP四层模型。它把七层合并成了四层:应用层、传输层、网络层、网络接口层。你想想看,OSI的会话层和表示层,在TCP/IP里都被揉进了应用层。为什么?因为实际开发中发现,那两层没那么必要,合并了反而更高效。

我记得有一次给团队新人培训,有人问:既然TCP/IP只有四层,为什么还要学七层?我的回答是:七层是理论框架,帮你理解每一层的职责;四层是实战工具,你抓包时看到的每一层都对应着四层模型里的具体位置。两者不矛盾,是互补的。

核心对比:

  • OSI七层:理论完整,适合教学和协议设计
  • TCP/IP四层:实际应用,互联网标准模型
  • 抓包分析:以TCP/IP四层为主,参考OSI理解细节

数据包封装与解封装过程

这是抓包分析里最核心的概念。什么叫封装?就是数据从上层往下层走的时候,每一层都往数据前面加一个头部。就像寄快递,你写一封信(应用层数据),先装进信封(传输层加TCP头),再写上地址(网络层加IP头),最后贴上快递单(数据链路层加MAC头)。

解封装就是反过来。数据到达目的地后,从下层往上层走,每一层剥掉自己的头部,直到还原出原始数据。

我曾经在排查一个HTTP请求超时的问题时,抓包发现数据包在网络层就丢了。为什么?因为IP头里的TTL字段变成了0,路由器直接丢弃了。如果不理解封装过程,你根本不知道TTL是在哪一层、干什么用的。

封装过程(发送方):
应用层数据 → [HTTP头 + 数据]
传输层     → [TCP头 + HTTP头 + 数据]
网络层     → [IP头 + TCP头 + HTTP头 + 数据]
数据链路层 → [MAC头 + IP头 + TCP头 + HTTP头 + 数据 + FCS]

解封装过程(接收方):
数据链路层 → 去掉MAC头,检查FCS
网络层     → 去掉IP头,检查目标IP
传输层     → 去掉TCP头,检查端口
应用层     → 拿到原始HTTP数据
避坑指南:我曾经在分析一个慢速攻击时,只盯着应用层看,死活找不到原因。后来才发现是传输层TCP窗口太小,导致数据发送被阻塞。记住,问题可能出现在任何一层,不要只盯着你熟悉的那一层。

MAC地址与IP地址

这两个地址是网络通信的基石。MAC地址是物理地址,出厂就烧死在网卡里,48位,用十六进制表示。IP地址是逻辑地址,可以手动配置或自动获取,IPv4是32位,IPv6是128位。

打个比方:MAC地址就像你的身份证号,一辈子不变;IP地址就像你的家庭住址,搬家了就变了。数据包在局域网里靠MAC地址找到具体设备,跨网络通信靠IP地址找到目标网络。

对比项 MAC地址 IP地址
长度 48位(6字节) IPv4: 32位 / IPv6: 128位
表示方式 十六进制,如 AA:BB:CC:DD:EE:FF 点分十进制,如 192.168.1.1
作用范围 局域网内唯一 全球唯一(公网)或局域网唯一
是否可变 通常固定(可软件修改) 可动态分配
所在层级 数据链路层 网络层
抓包小技巧:当你看到ARP协议时,它就是在问:谁有这个IP地址?请告诉我你的MAC地址。这是IP地址和MAC地址之间的桥梁。我经常用ARP请求的数量来判断局域网内是否有设备扫描行为。

知识体系结构图

下面这张图把本章的核心知识点串起来了。你可以看到数据从应用层一路封装到物理层,再解封装回去。MAC地址和IP地址分别在数据链路层和网络层发挥作用。

网络协议基础核心知识体系 OSI七层模型 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 理论框架 教学与协议设计 TCP/IP四层模型 应用层 HTTP / FTP / DNS (合并OSI 5/6/7层) 传输层 TCP / UDP 网络层 IP / ICMP 网络接口层 以太网 / MAC 实际应用 互联网标准模型 核心概念 封装与解封装 发送方:逐层加头 接收方:逐层去头 每层只处理本层头部 MAC地址 物理地址,48位 数据链路层使用 局域网内寻址 IP地址 逻辑地址,32位/128位 网络层使用 跨网络寻址 抓包分析基础 理解每一层的数据

嗯,这张图你看懂了,网络协议的基础就算打牢了。后面我们讲抓包实战的时候,你会反复用到这些知识。每一层的数据长什么样,头部字段怎么解析,都离不开今天的内容。