一、网络基础与抓包原理:OSI模型、TCP/IP协议栈、Wireshark核心原理、抓包过滤器的使用
各位好,我是老张。干网络抓包这行十几年了,今天咱们聊聊最基础但也最关键的东西——网络模型和抓包原理。你别看这些概念书上都有,但真正用起来,很多人还是懵的。我见过不少同事,抓了一堆包,却不知道数据在哪个层级出了问题。
说白了,抓包分析就像医生看病。你得先知道人体结构,才能判断是哪个器官出了毛病。网络也一样,不懂分层模型,你连问题出在哪一层都搞不清楚。
1.1 OSI七层模型——网络世界的解剖图
OSI模型,全称开放系统互连参考模型。1984年由ISO提出,把网络通信分成七层。虽然实际用的不多,但它是理解网络通信的“思维框架”。
我个人习惯,把这七层分成两组:
- 上三层(应用层、表示层、会话层):跟用户打交道,处理数据格式、会话管理。
- 下四层(传输层、网络层、数据链路层、物理层):负责数据怎么传、走哪条路、怎么封装成比特流。
你想想看,数据从应用层一路往下,每层加个头,这叫“封装”。到了接收端,再一层层剥开,这叫“解封装”。
核心要点:抓包时,Wireshark展示的就是各层协议头。你看到TCP层,那是传输层;看到IP层,那是网络层。别搞混了。
我在项目中遇到过一件事:有个同事抓包发现HTTP请求发不出去,查了半天,最后发现是物理层网线松了。嗯,有时候最底层的问题,反而最容易被忽略。
1.2 TCP/IP协议栈——实际在用的模型
OSI是理论,TCP/IP才是实战。它只有四层:
| TCP/IP层 | 对应OSI层 | 常见协议 | 抓包关注点 |
|---|---|---|---|
| 应用层 | 5-7层 | HTTP、DNS、FTP | 请求/响应内容、状态码 |
| 传输层 | 第4层 | TCP、UDP | 端口号、序列号、重传标志 |
| 网络层 | 第3层 | IP、ICMP | 源/目的IP、TTL、分片 |
| 网络接口层 | 1-2层 | 以太网、ARP | MAC地址、帧类型 |
为什么TCP/IP只有四层?说白了,OSI太理想化了,实际工程不需要那么细。比如表示层和会话层的功能,在TCP/IP里直接合并到应用层了。
我建议你重点掌握传输层和网络层。因为90%的网络问题,都出在这两层。重传、丢包、延迟,全跟TCP/IP的传输层和网络层有关。
1.3 Wireshark核心原理——抓包工具怎么工作的
Wireshark的前身叫Ethereal,2006年改的名。它工作的原理其实不复杂:
- 网卡设置为混杂模式:默认网卡只收发给自己的包。混杂模式下,所有经过的包都收。
- libpcap/WinPcap驱动捕获:底层驱动把数据包从网卡拷贝到内存缓冲区。
- Wireshark解析展示:按协议规范,把二进制数据解析成人类可读的字段。
小技巧:抓包时如果发现某些包没抓到,先检查网卡是不是在混杂模式。我遇到过好几次,问题就出在这里。
Wireshark的界面分三块:
- 包列表区:显示所有抓到的包,按时间排序。
- 协议树区:选中一个包,这里展示各层协议头的详细字段。
- 原始数据区:十六进制和ASCII码显示原始字节。
我记得刚学Wireshark时,盯着协议树区看了半天。每一层展开,都能看到具体的字段值。比如TCP层的Sequence Number、Acknowledgment Number,这些就是判断重传的关键。
注意:Wireshark只能抓它自己能解析的包。遇到加密流量(如HTTPS),它只能看到TCP层,看不到应用层内容。别指望它能解密所有东西。
1.4 抓包过滤器的使用——只抓你想要的
网络流量太大了,不设过滤器,你抓到的包可能几万甚至几十万个。找问题就像大海捞针。
Wireshark有两种过滤器:
- 捕获过滤器:抓包前设置,只抓符合条件的包。语法基于BPF(Berkeley Packet Filter)。
- 显示过滤器:抓包后设置,从已抓到的包中筛选显示。语法更灵活,支持协议字段。
我常用的几个捕获过滤器:
# 只抓某个IP的流量
host 192.168.1.100
# 只抓TCP流量
tcp
# 只抓某个端口的流量
port 80 or port 443
# 抓某个网段的流量
net 192.168.1.0/24
显示过滤器更强大,可以直接写协议字段:
# 显示TCP重传包
tcp.analysis.retransmission
# 显示HTTP GET请求
http.request.method == "GET"
# 显示源IP为某个地址的包
ip.src == 192.168.1.100
实战建议:抓包前先用捕获过滤器缩小范围,抓完再用显示过滤器精确定位。两步走,效率最高。
我曾经帮一个同事排查慢速问题。他抓了半小时,包文件1.2GB。我一看,没设过滤器,什么包都抓了。后来我让他只抓目标服务器的IP和端口,文件瞬间降到50MB,问题也很快定位了——TCP窗口太小导致传输慢。
你想想看,如果一开始就设好过滤器,能省多少时间?
知识体系总览
下面这张图,把本章的核心知识点串起来了。你可以把它当作一张“地图”,后续章节都会围绕这些展开。
这张图从左到右、从上到下,展示了本章的知识脉络。先理解网络模型,再掌握Wireshark原理,最后学会用过滤器精准抓包。每一步都是下一步的基础。
好了,第一章就到这里。记住:基础不牢,地动山摇。后面讲重传定位时,你会发现这些知识全用得上。