尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Wireshark入门实验:从HTTP抓包到TCP三次握手全解析
如果你正准备开始学习网络协议分析第一次接触到 Wireshark 的 Introduction 实验这篇文章就是为你准备的。Wireshark 是目前最主流的图形化抓包工具它能把网卡上经过的每一个数据包“拍下来”并解析成人类能看懂的协议字段。这个入门实验的真正目标不是让你记住几十个按钮而是帮你建立一套完整的抓包思维从选择接口、发起流量、过滤定位到读懂一个 HTTP 请求背后的三次握手全程走通一次。看完之后你不仅能完成这个 Lab还能搞懂每一步背后的原理遇到问题也知道从哪里入手排查。1. Wireshark 入门实验到底在练什么1.1 抓包的基本原理很多人第一次接触 Wireshark 都会有个疑问它是怎么把网卡上的数据“抓”下来的其实原理并不复杂。正常情况下网卡接收到数据帧后只会把目标 MAC 地址是本机的帧交给操作系统其余的直接丢弃这是硬件层面的过滤机制。但 Wireshark 会借助底层抓包驱动把网卡切换到一种特殊模式也就是常说的混杂模式Promiscuous Mode。在这个模式下网卡不再挑三拣四所有经过的数据帧都会被复制一份交给 Wireshark 做解析。这个特性对于网络排障和协议分析非常重要但也要留意一个限制现代交换机采用点对点转发通常只会把帧发给真正的目标端口所以你在普通办公网络里能抓到的大多还是自己设备产生的流量而不是整个局域网的所有流量。想抓取别人设备的流量需要借助交换机镜像端口之类的额外手段这属于更进阶的实验内容。Wireshark 的强项在于“解析”。它内置了上千种协议解析器拿到原始字节流后会按照协议规范逐层拆解链路层的 MAC 地址、网络层的 IP 地址、传输层的端口号、应用层的请求内容每一层都拆得明明白白。这也是为什么它被称为“协议分析神器”而不是简单的“抓包工具”。1.2 这个实验适合谁Wireshark 的 Introduction Lab 通常出现在计算机网络课程的早期阶段但也完全适合自学网络的人当作第一课。如果你属于下面这几类人这个实验会特别对口刚学完 TCP/IP 理论、想看看真实报文长什么样的学生做前后端开发时被网络问题折磨想自己定位是请求没发出去还是响应没回来刚开始接触网络安全想理解抓包工具的基本用法对网络一窍不通但想从零开始建立数据包视角的纯新人。我把这个实验的难度定位在“半个小时内能上手但要真正理解需要一下午”的级别。它不需要你背命令不需要写代码只需要你会打开浏览器会用鼠标点击基本就能完成。1.3 动手前的环境准备我见过太多人在实验开始后才发现环境有问题当场卡住。这里先列一个检查清单照着做能省掉很多麻烦Wireshark 本体。官网下载安装即可Windows 下安装过程中会提示安装 Npcap这是底层抓包驱动必须勾选后续很多问题都出在这个驱动上。macOS 首次抓包时系统会弹出权限请求需要允许 Wireshark 访问网络。Linux 下一般通过包管理器安装运行时要确保当前用户对抓包接口有权限最简单的方法是用 sudo。浏览器。实验里最常见的流量来源就是 HTTP 访问你需要一个能随便打开网页的浏览器。Chrome、Edge、Firefox 都可以无所谓。Python 3。我会建议你用本地 HTTP 服务来产生流量而不是直接访问外部网站。原因后面会详细说。你先确认本机能运行 python3 -m http.server 这条命令即可。一台能上网的电脑。外部流量作为对比观察用比如看 DNS 解析、HTTPS 加密流量。这些准备都做好之后就可以开始正式抓包了。2. 把 Wireshark 界面变成你的仪表盘2.1 五大区域的用途拆解打开 Wireshark 后第一眼看到的主界面可以分成几块功能区。很多人嫌它复杂其实核心就五块。最上方是主工具栏抓包开始、停止、重启、打开文件、保存文件这些高频操作都在这里。中间是过滤器栏这里要区分一下你直接在这条栏里输入的其实是显示过滤器它只影响已经抓到的包的展示不会影响正在抓的内容。这个特点非常实用因为你不用提前预判看到什么只管“先抓再看”。默认布局的核心部分有三块最上面是封包列表区每一行代表一个数据包列项包括编号、时间、源地址、目的地址、协议、长度、摘要信息。中间是封包详情区选中某个包后这里会按协议层展开显示解析结果。最下面是字节视图区以十六进制和 ASCII 码两种形式展示包的原始字节内容。初次看这三块区域可以记住一个操作习惯你在列表区选包在详情区看这层的字段在字节区验证原始数据。三者联动是理解协议结构的入口。另外要留意封包列表区第一列的颜色。Wireshark 默认有着色规则TCP 包偏浅红DNS 包偏浅蓝HTTP 包偏浅绿等等。别小看这个颜色几百个包混在一起颜色能帮你瞬间定位常见协议的分布。2.2 列设置与时间显示默认列设计够用但可以按需调整。比如做 HTTP 分析时Info 列会直接显示 GET / HTTP/1.1 这样的摘要非常直观。假如你抓到了大量加密流量屏幕上可能全是 TLS 字样这就说明流量不是明文需要换个思路。时间列值得专门说一句。默认情况下Wireshark 显示的时间是相对时间也就是以第一个数据包为基准的秒数偏移。对分析交互过程来说相对时间反而更好用你能看出客户端发出 SYN 后隔了多久收到 SYN-ACK这个延迟就是 RTT 的直观体现。如果你想看具体时刻可以在视图菜单里切换时间显示格式有绝对日期和时间、时分秒等选项。我个人的建议是抓包过程用相对时间导出报告前再切换成绝对时间方便对照日志。如果觉得默认列太少可以右键点击列标题在弹出的菜单里选择“列首选项”添加自定义字段。比如你想重点关注 TCP 窗口大小就可以单独加一列。不过这个入门实验阶段默认列已经完全够用。2.3 保存与导出很多新手第一次抓完包看完列表就关掉程序下次想复盘发现数据没了只能重新抓。Wireshark 默认保存格式是 .pcapng它会完整保留数据包内容和所有元信息下次打开还能继续过滤、查看详情。强烈建议每次实验结束把抓到的包保存一份到本地。保存路径上有一个细节Wireshark 支持“只导出当前过滤结果”。比如你抓了 2000 个包经过过滤只剩下 10 个 HTTP 包这时在“文件 导出特定分组”里可以把过滤后的包单独存成一个文件。这样做的好处是文件更小分享给别人的时候不会让对方淹没在无关流量里。如果只是临时退出不想保存原始流量只保存过滤结果也够用。但对于初学者我建议至少完整保存一次原始 pcapng因为你在排查问题时很可能需要回头重新看一些细节而过滤后的包已经把“上下文”丢掉了。3. 第一次完整抓包用本地 HTTP 服务练手3.1 为什么要先练本地流量Wireshark 入门实验最常见的流量来源是浏览器访问某个网站。但这里有个容易劝退新手的问题现在大部分网站都启用了 HTTPS你在抓包里看到的全是 TLS 加密包根本看不到 HTTP 明文请求。如果从一开始就遇到这种情况实验体验会非常糟糕你甚至搞不清自己抓的到底是什么。所以我的建议是先用本地 HTTP 服务产生流量。本机访问本机的回环接口流量不经过任何物理线缆也不经过外部网络Wireshark 可以直接抓取而且协议一定是明文 HTTP非常适合第一次练习。从原理上看回环流量走的是虚拟网络接口在 Linux/macOS 上通常叫 lo在 Windows 上一般叫 Loopback Adapter 之类的名字。它模拟了一个网络路径让本机发出的包还能被本机收到。Wireshark 支持在这种虚拟接口上抓包这也是为什么你能抓到“自己发给自己的包”。3.2 起一个最简单的 HTTP 服务如果你的机器上有 Python 3打开终端执行python3 -m http.server 8080 --bind 127.0.0.1这行命令会在本机的 8080 端口起一个极简 HTTP 服务根目录是当前文件夹。服务启动后不要关这个终端。用浏览器访问http://127.0.0.1:8080/浏览器会显示当前目录的文件列表这就算成功访问了一次 HTTP 服务。没有 Python 的环境也可以用任何一种你熟悉的静态服务器思路完全一样一定要是 HTTP 明文协议端口要固定便于后面过滤。尽量不要用文件管理器直接双击打开的 file:// 地址那种方式根本不产生网络流量Wireshark 什么也抓不到。3.3 选择接口和过滤启动抓包前关键一步是选对接口。点击 Wireshark 主界面的“捕获”菜单进入“选项”会列出当前机器所有可用接口。每个接口旁边还有实时流量波形如果有数据经过波形会跳动。这种图形化的方式比看接口名更直观。这次实验我们选回环接口。不同系统上名称不太一样macOS/Linux 一般直接叫 Loopback: loWindows 上可能在名称里包含 Loopback。如果你不确定可以在不关闭这个页面时浏览器刷新一下 127.0.0.1:8080哪个接口的波形突然跳动那就是它。选好接口后不要急着设置任何捕获过滤器直接点“开始”。然后在浏览器里刷新一次本地 HTTP 服务页面。刷新后切回 Wireshark点工具栏上的“停止”按钮。此时界面应该已经有了一组数据包。在过滤器栏输入tcp.port 8080按回车剩下的包就全是这次 HTTP 访问相关的流量了。如果你看到大约 7-10 个包里面有 TCP 三次握手、HTTP GET 请求、HTTP 200 响应还有后面的四次挥手包说明这次抓包已经成功。这组数据就是后续所有分析的原材料。4. 跟着一个 HTTP 请求读懂关键报文4.1 怎么识别 TCP 三次握手现在你有了一组本地 HTTP 流量按编号从第一个包开始看。最开始的三个包就是教科书里反复强调的“三次握手”。第一个包通常 Info 列显示为[SYN]表示客户端向服务器发起连接。它有个标志位是 TCP 头部的 SYN 位被置 1。这个包的作用是告诉服务器我想建立连接我的初始序列号是多少。在详情区展开 TCP 层你会看到 Sequence Number 的值为 0。这里有一个非常贴心的设计Wireshark 默认开启了“相对序列号”显示把真实的初始序列号映射成了容易阅读的 0。这是一个很关键的功能实验时不要被这个大数字吓到。第二个包Info 列显示为[SYN, ACK]这是服务器的回应。它等于说收到你的连接请求我同意同时我的初始序列号也给你。同一个包里出现了两个标志位这在 TCP 里很常见。第三个包Info 列显示为[ACK]客户端确认收到服务器的序列号。到这里连接建立完成可以开始传数据了。这三行包的价值在于它把教科书里的状态迁移图变成了真实可见的报文交互。你在阅读每一行时都可以在详情区展开 TCP 头看 Flags 标志位下的各项布尔值非常直观。4.2 HTTP 请求报文逐字段拆解三次握手完成之后的下一个包就是客户端发出的 HTTP 请求。在封包列表里找到 Protocol 列显示 HTTP 的那一行选中它在详情区展开应用层的 HTTP 协议部分你会看到一个完整的请求结构。先是 Request Line里面有 MethodGET、Request URI/、Request VersionHTTP/1.1。接着是各类请求头字段比如 Host、User-Agent、Accept 等。这些都是客户端在 HTTP 层告诉服务器的信息。和 TCP 头部全是二进制二进制位不同HTTP 报文是纯文本可见的这在字节视图里能直接看到 ASCII 字符串。可以自己点一下字节视图按 Ctrl1 切换显示模式把字符显示出来你会很直观地看到 GET / HTTP/1.1 这样的原文。紧接着的下一行是响应包状态行通常是 HTTP/1.1 200 OK。它后面跟着响应头比如 Content-Type、Content-Length、Date 等。在本地静态文件服务里Content-Type 一般是 text/html 或 application/octet-stream取决于你目录下有什么文件。响应体的内容在后续的 TCP 分段里传输Wireshark 会通过重组机制把分散的 TCP 段拼好你可以在详情区看到完整的 HTML 内容或者使用“追踪 TCP 流”功能在弹出的窗口里直接看到请求和响应的完整正文。追踪 TCP 流是一个极其实用的功能右键任意一个 HTTP 包选择“追踪 TCP 流”Wireshark 会把属于同一条 TCP 连接的所有包按顺序拼接成一个完整会话并把请求和响应用不同颜色标出来。入门实验做这一步能帮你在宏观上建立“一次请求对应一段数据流”的概念。4.3 为什么很多网站抓不到明文用本地 HTTP 服务练手顺理成章之后你可能顺手就打开一个日常用的网站、刷新一下再切回 Wireshark 一看列表里清一色是 TLS根本没有 HTTP 明文Info 列写的都是 Application Data、Client Hello、Server Hello 之类。这是正常的。现代网站基本全站 HTTPSHTTP 层的内容已经被 TLS 协议加密。你在 Wireshark 里看到的 TCP 包真实存在细节也对但应用层的真实请求内容没法直接看到只能看到一堆看起来无意义的加密字段。这不是 Wireshark 的缺陷而是 TLS 设计的目的。如果你想分析日常网站流量要么靠浏览器插件导出 TLS 密钥配合 Wireshark 解密要么就用本地 HTTP 服务这类明文流量来学习协议。这篇实验的重点是理解协议交互明文流量完全够用。但这件事带来一个反面教学的收获你在真实网络环境里抓包看到大片 TLS 包时应该意识到应用层内容不可见这本身就是排查问题的一个重要判断线索。比如你怀疑某个接口请求失败如果看到 TLS 协商成功但应用层无响应问题范围就能缩小到应用而非传输层。5. 过滤器从几百个包里快速定位目标5.1 捕获过滤器与显示过滤器Wireshark 里的过滤器分成两种很多人一开始就混淆实际上它们的使用时机不同。捕获过滤器在“开始抓包前”设置作用是在源头就把不想要的包丢掉。它的优点是能大幅降低抓到的包量、减少磁盘写入压力缺点是如果设置太严可能会把想要的包一起过滤掉。它的语法是 tcpdump 传统风格比如host 192.168.1.1、port 8080、tcp port 80。入门阶段我基本不建议你动它先全量抓取最重要。显示过滤器是“已经抓到之后”再进行过滤它不会删除任何包只是把不符合条件的包在界面上隐藏起来。你随时可以修改、清空非常灵活。它的语法是 Wireshark 自定义的字段表达式比如tcp.port 8080。这是需要重点掌握的技能。如果你在过滤器栏输入了内容但背景变成红色说明语法有误Wireshark 无法解析。这时候别急着找原因先观察括号和等号是不是写反了。是比较是赋值显示过滤器里必须用。5.2 常用过滤表达式入门实验最常用的过滤条件其实不多我用一段时间后总结下来有这几条覆盖大部分场景过滤目标表达式示例说明只看某个主机的流量ip.addr 192.168.1.10源或目的地址满足都会匹配只看来自某主机的流量ip.src 192.168.1.10只匹配发出来的包只看某个端口的流量tcp.port 8080源或目的端口匹配只看 HTTP 请求包http.request过滤出真正的 HTTP 请求行只看某类 DNS 查询dns.qr 0qr 为 0 表示查询、1 表示响应组合条件http ip.addr 192.168.1.10使用、有一个容易踩的坑ip.addr匹配的是源或目的任意一个地址所以当你想找“从主机A发出的包”时应该用ip.src A如果用了ip.addr A会把发给 A 的包也一起列出来。初学者经常因为这个条件太宽而看不到重点。在实验里我最推荐先加http过滤一遍把所有 HTTP 包挑出来然后用“追踪 TCP 流”看完整请求。对于入门者这两步能让你最快理解一次 HTTP 事务的网络结构。5.3 把零散包串成完整会话抓包时的数据是一行一行的但真实的“对话”其实是双向交错的。用 Wireshark 看单个包只看到局部想把一次 HTTP 请求从头到尾看完整就得把属于同一条 TCP 连接的包串成一个会话。这就用到前面提过的“追踪 TCP 流”。右键任意一个 HTTP 请求包选择“追踪 TCP 流”弹窗里的内容就是完整会话。上方能看到客户端到服务器的方向用蓝色标出服务器回包用红色标出中间是完整的 HTTP 请求和响应正文。这个视图特别适合检查你到底发出的请求头里有什么、服务器返回的状态码和正文是什么。进阶一点你可以在“统计 会话”菜单里查看所有 TCP 会话的列表包括每个会话的字节数、包数、持续时间。对于一次简单的本机 HTTP 访问你会看到一个客户端端口随机高位端口和一个服务器端口8080之间的完整会话记录。如果实验要求你分析流量特征这些数值可以直接写进报告里。6. 常见问题与排坑速查6.1 高频问题对照表做这个实验时我前前后后帮人排查过不少问题常见的就那么几个。整理成一张速查表方便你对照解决现象可能原因解决办法接口列表里没有想要的网卡抓包驱动未安装或权限不足Windows 重装 NpcapLinux 检查权限macOS 允许网络访问开始抓包后列表一片空白接口选错或捕获过滤器误设先清空捕获过滤器再确认回环接口地址解析显示成 MAC 地址抓包机未做 IP 解析这是正常现象Wireshark 会尝试解析主机名不影响分析看到包但全是 TLS访问的是 HTTPS 网站换成本地 HTTP 服务或用显示过滤器精确过滤过滤器栏变红且无结果表达式语法错误检查字段名确认比较符号是 本地 HTTP 访问抓不到包选了物理网卡而不是回环抓回环流量必须选 lo 或 Loopback 接口抓包时整个电脑很卡流量太大磁盘写入太多停止抓包添加捕获过滤器缩小范围关闭后台大流量应用其中“接口选错”是压倒性的头号问题。很多同学在 Wireshar 主界面默认选中了以太网或 Wi-Fi 网卡抓了半天看到的全是周边背景流量却看不到自己访问本地 127.0.0.1 的包因为回环流量根本不会经过物理网卡。6.2 几个值得坚持的操作习惯排掉具体问题后我发现几个操作习惯能让你少走很多弯路。第一抓包前清空浏览器缓存并新开一个无痕窗口。否则你访问本地服务时浏览器可能直接复用了缓存的响应网络层根本没有任何 HTTP 请求你会看着空列表干瞪眼。无痕窗口能保证每次刷新都真实发出网络请求。第二抓包前关闭不需要的后台程序。下载工具、聊天软件、系统更新都会往网卡上制造大量流量干扰你的分析。如果用回环接口抓本机 HTTP 服务这点还好但如果抓物理网卡周围设备也参与转发流量就很嘈杂。第三每轮抓包前先停止上一轮并且给文件起好名。Wireshark 的存储全部在内存里数据量大时持续抓包会占用大量内存。抓完一轮立刻停止保存是保护工作成果最简单的操作。第四抓包时尽量使用相对时间显示记录问题发生的时间点靠“绝对时间”反而容易和日志对不上具体用什么取决于场景。如果你同时在抓系统日志建议用相对时间加起始标记的方式定位更直观。另外养成随时添加显示过滤器的习惯。抓到几百上千个包的时候老版本默认界面可能因为渲染原因稍显卡顿一秒钟按几百个包其实没事但千万不要一边抓一边反复点“开始/停止”每次重启都会丢失当前界面记忆。先把过滤器写好再一次性停止再慢慢分析。写在最后做完 Wireshark 的 Introduction 实验我最想分享的一条个人体会是这个实验的门槛不在工具操作而在思维的转换。第一次看到数据包列表时绝大多数人都会觉得信息量爆炸根本不知道从哪里看起。但只要你跟着一个 HTTP 请求从头走到尾从三次握手到请求报文从响应状态到四次挥手把每一步和教科书上的图对应起来你会发现整个 TCP/IP 协议栈突然变得具体了。后续再做过滤、统计、追踪流不过是把这个核心流程变成肌肉记忆而已。实验本身不难关键是别急着往下赶进度多花点时间把每一个字段点开看一眼。那些看起来枯燥的报文结构才是你以后排错时真正依赖的直觉来源。
RELATED

相关推荐

大厂实习机试攻略:算法题型、高频考点与备考时间线

大厂实习机试攻略:算法题型、高频考点与备考时间线

每年三四月份,大批同学开始投暑期实习简历,其中通信和终端行业头部厂商的机试环节,是很多计算机相关专业学生绕不开的一道坎。我当时参加的就是2021届的暑期实习机试,整体感受是:题量不大但时间紧,表面考算…

📅 2026/10/14 23:01:56
Wireshark入门实验全解析:抓包看懂TCP、DNS与HTTP协议

Wireshark入门实验全解析:抓包看懂TCP、DNS与HTTP协议

第一次打开 Wireshark 做 “Lab 1 : Introduction” 的时候,很多人其实根本不知道这个工具到底要我们干什么。我也是从计算机网络的第一堂实验课开始接触它,当时只被告诉一句话:“用它抓包,看里面的协议。” 这句话听起来平平无奇…

📅 2026/10/14 23:01:56
Python词云实战:jieba分词与wordcloud参数调优指南

Python词云实战:jieba分词与wordcloud参数调优指南

1. 从一堆杂乱文本到一张有信息量的词云,中间到底隔着什么很多人第一次接触词云,是看到别人用几百行评论生成了一张花花绿绿的图片,觉得这事挺简单——把文本丢进去,调个库,图片就出来了。但真正动手做过的人都知道&am…

📅 2026/10/14 22:56:55
MORE NEWS

更多资讯

📰

AI专利撰写与布局实战:从可专利性判断到权利要求避坑指南

1. 当“AI专利”四个字摆在面前,真正该拆解的是什么 “AI专利”这个标题乍一看像是一个宏大叙事,但真正落到实操层面,它其实指向一个非常具体的问题: 当一项技术成果同时具备“人工智能”和“可专利性”两个属性时,从…

📰

Tcl脚本驱动FPGA工程自动化:从创建到编译全流程实战

1. 为什么要用Tcl脚本搭建易灵思工程:从痛点说起做FPGA开发有一段时间的朋友,大概率都经历过这种场景:明明只是改了一个引脚约束,结果打开工程GUI,等它加载完,点开约束编辑器,翻半天找到那行配置…

📰

Qt5.13 TCP服务端与客户端开发实战:信号槽与粘包处理

简介:一份基于 QT5.13.0 的 TCP 通信完整示例,面向初学 Qt 网络编程的开发者,用于理解服务端与客户端的建立、多客户端接入以及聊天消息的收发,既适合课程设计参考,也能作为入职前 Qt 网络模块的练手项目。资源内置可运…

📰

论文降重还在同义词替换?Okbiye 带你避开学术双重检测的坑

每年毕业季,总有一批同学在最后关头翻车:查重率降下来了,结果 AIGC 检测却亮起红灯;AI 痕迹消除了,语句又变得生硬不通顺。如今高校普遍实行 "查重 AIGC" 双重审核,单纯靠同义词替换降重的老方法…

📰

AI专利实战指南:从技术方案到专利布局的完整流程

1. 从“AI 专利”这个标题说起:它到底在聊什么“AI 专利”这四个字,乍一看像是一个法律或者知识产权话题,但真正在一线做技术、做产品的人看到它,脑子里浮现的往往不是法条,而是一连串非常具体的问题:我做的…

📰

KKSwarm多机协同框架实践:从架构选型到部署避坑

简介:开源机器人集群项目KKSwarm由易科机器人实验室与阿木实验室联合打造,面向机器人研究者、开发者及高校学生,提供一套基于开源理念的多机器人协同工作系统。项目涵盖群体通信、协调、导航与任务分配等核心技术,适用于工业生产、…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬