首页/新闻资讯/正文详情

Wireshark抓包实战:HTTP协议分析从入门到精通

发布时间:2026/9/24 11:52:17 来源:云帆数科 栏目:资讯中心
Wireshark抓包实战:HTTP协议分析从入门到精通
简介这份资源是计算机网络原理课程的Wireshark实验报告面向正在学习HTTP协议与网络抓包分析的高校学生及网络初学者。报告以访问百度为例完整记录了WLAN端口抓包、清空浏览器缓存以观察三次握手、定位HTTP报文等实验过程并给出请求报文与响应报文的实际内容及格式解析。资源包内含1个docx文档压缩包约223KB篇幅精炼便于直接参考撰写实验报告。文档重点拆解了请求行、请求头部、空行与请求正文的结构以及状态行、响应头部、响应体各数据单元含义同时归纳了Host、User-Agent、Connection、Content-Type、Content-Length等常用请求头与响应头的作用并附有POST请求与200 OK响应的逐字段说明。目前已有9260人学习下载适合需要理解HTTP请求/响应模型、掌握Wireshark过滤与报文分析方法的读者对照练习与查漏补缺。1. 从一次“网页打不开”说起Wireshark 抓 HTTP 到底在抓什么浏览器地址栏敲下回车页面转圈三秒后报错刷新又好了。这种玄学问题日志里往往什么都没有但网卡上一定留下了痕迹。Wireshark 实验里最经典的一课就是拿 HTTP 协议开刀它把“网页加载”这件抽象的事拆成一条条能看见的请求行、响应头、状态码和 TCP 分段。做完这个实验你收获的不是一份实验报告而是一种能力——任何 HTTP 层面的异常你都能定位到是客户端没发、服务端没回还是中间被谁截断。适合正在上计算机网络实验课的学生也适合刚接触抓包、想搞懂“协议分析”到底分析什么的开发者。这一章先把 HTTP 在 Wireshark 里的样子讲清楚后面再动手。HTTP 是明文协议这是它适合入门抓包的根本原因。TCP 握手之后客户端发的那串GET /index.html HTTP/1.1会原封不动出现在 Wireshark 的 Packet Details 面板里不需要证书、不需要密钥。相比之下 HTTPS 只能看到 SNI 和加密记录对新手不友好。所以实验选 HTTP不是因为它简单而是因为它把“协议分析”的完整链路暴露得最彻底你能看到请求方法、URI、版本号、头部字段、空行、消息体也能看到 TCP 的序号、确认号、窗口和重传。一次抓包同时复习了应用层和传输层。很多人第一次打开 Wireshark 会被满屏彩色报文吓到觉得无从下手。其实只要抓住一个过滤条件就能安静下来http。它会把所有 HTTP 请求和响应筛出来剩下的 TCP 握手、ACK、FIN 虽然还在但已经不影响主线阅读。实验报告里常要求回答“请求了几个对象”“响应状态码是什么”“有没有使用持久连接”这些答案全在过滤后的报文里。接下来几章我会按“装好、抓对、读透、排错”的顺序把每个环节的参数和坑讲明白。2. 抓包前的环境准备Wireshark 安装与网卡选择2.1 安装 Wireshark 时那两个必须勾选的组件Windows 上装 Wireshark安装向导走到组件选择页时默认只勾了 Wireshark 本体。这里有两个东西必须手动勾上Npcap和USBPcap如果做 USB 抓包才需要HTTP 实验可不勾。Npcap 是抓包驱动没有它 Wireshark 根本看不到网卡列表。安装 Npcap 的过程中会弹出一个选项页其中“Install Npcap in WinPcap API-compatible Mode”建议勾选兼容老教程里的过滤语法“Support loopback traffic”也建议勾这样抓本机127.0.0.1的 HTTP 请求才看得到。Linux 下简单得多Debian/Ubuntu 系一条命令sudo apt update sudo apt install wireshark # 安装过程中会问是否允许非 root 用户抓包选 Yes # 装完把自己加入 wireshark 组避免每次 sudo sudo usermod -aG wireshark $USER装完注销重登普通用户就能直接抓包。macOS 用 Homebrew 装但要注意 macOS 的权限管理会拦一次需要在“系统设置 → 隐私与安全性”里放行。提示安装包只从官网或系统软件源获取不要用来路不明的“汉化版”“绿色版”抓包工具本身能看到全部流量来源不可控的版本风险极高。2.2 选错网卡是新手第一个翻车点Wireshark 首页的网卡列表里一台笔记本通常有 Ethernet、Wi-Fi、Loopback、还有一堆 VMware/VirtualBox 虚拟网卡。选哪块取决于你的 HTTP 流量走哪条路。浏览器访问外网走的是当前联网的那块Wi-Fi 或以太网如果访问的是本机起的服务比如http://localhost:8080那流量走 Loopback选 Wi-Fi 是抓不到的。判断方法很直接看网卡后面的实时波形图有流量波动的那块就是正在用的。或者先随便选一块抓十秒在浏览器刷新一个网页看有没有包进来。选错网卡的表现是抓了半天一个包都没有不是 Wireshark 坏了。选定网卡后先别急着点开始把捕获选项里的几个参数过一遍参数建议值说明混杂模式Promiscuous勾选抓本机所有经过网卡的帧实验环境建议开捕获过滤器留空或tcp port 80在抓之前就过滤减少文件体积显示过滤器抓完再设http在抓之后过滤灵活推荐新手用这个缓冲区大小默认 2MB 起抓大文件时调大避免丢包保存文件可选按大小分卷长时间抓包建议开防止内存爆掉捕获过滤器和显示过滤器是两套语法别混。捕获过滤器用 BPF 语法写错了直接不让你开始显示过滤器用 Wireshark 自己的语法写错了只是标红。新手统一用显示过滤器抓全量再筛容错率高。3. 抓一个完整的 HTTP 请求从 TCP 握手到响应体3.1 用显示过滤器把 HTTP 报文从噪声里捞出来开始抓包后在浏览器访问一个纯 HTTP 的测试站点很多教学站点提供 http 入口或者自己用 Python 起一个本地服务。抓十几秒后停止在显示过滤器栏输入http回车后列表里只剩下 HTTP 请求和响应。如果一条都没有先检查是不是访问了 HTTPS 站点——HTTPS 的报文协议列显示的是 TLSv1.2 或 TLSv1.3不是 HTTP。这是最常见的“抓不到”原因。想进一步只看请求用http.request只看响应http.response想看某个具体主机的流量http.host contains example.com这几个过滤器覆盖了实验报告里 90% 的筛选需求。注意contains是子串匹配是精确匹配域名带端口时用contains更稳。3.2 逐层展开一个 GET 请求报文里每一行对应什么选中第一条GET报文Packet Details 面板会展开成几层。以一次典型的请求为例逐层看Frame 12: 512 bytes on wire Ethernet II: 源 MAC、目的 MAC Internet Protocol Version 4: 源 IP、目的 IP、TTL Transmission Control Protocol: 源端口、目的端口、Seq、Ack、Flags Hypertext Transfer Protocol GET /index.html HTTP/1.1\r\n Host: example.com\r\n User-Agent: Mozilla/5.0 ...\r\n Accept: text/html,application/xhtmlxml\r\n Connection: keep-alive\r\n \r\n [Full request URI: http://example.com/index.html]这里有几个实验报告必答点。请求方法是 GETURI是/index.html版本是 HTTP/1.1。Host头是 HTTP/1.1 强制要求的因为一个 IP 上可能挂多个站点服务端靠 Host 区分。Connection: keep-alive表示希望复用 TCP 连接这是 HTTP/1.1 的默认行为HTTP/1.0 要显式写才有。响应报文对应看HTTP/1.1 200 OK\r\n Date: ... Server: ... Content-Type: text/html; charsetUTF-8\r\n Content-Length: 1256\r\n Connection: keep-alive\r\n \r\n [Response body]状态码 200 表示成功Content-Type告诉浏览器怎么解析Content-Length是消息体字节数。如果响应是304 Not Modified说明浏览器缓存生效服务端没返回 body这也是实验里常考的点。3.3 跟着 TCP 流看完整会话Follow HTTP Stream 的用法单看一个报文只能看到片段想看一次请求响应的完整对话右键任意 HTTP 报文选Follow → HTTP Stream。Wireshark 会把这条 TCP 连接上的所有 HTTP 数据拼成一个窗口请求在上、响应在下红色标客户端、蓝色标服务端。这个功能在实验报告里非常有用因为你可以直接数出一次页面加载发了几条请求、每条请求的 URI 是什么、响应状态码分别是什么。如果开了持久连接多个请求会出现在同一个 Stream 里中间用空行分隔。数请求数量时注意图片、CSS、JS 都是独立请求一个 HTML 页面往往对应十几条 HTTP 记录。注意Follow HTTP Stream 只对未加密的 HTTP 有效。如果协议列显示 TLS这个选项会变成 Follow TCP Stream看到的是密文这是正常的不是操作错误。4. 把实验报告写扎实状态码、持久连接与缓存分析4.1 状态码分布统计用过滤器快速分类实验报告常要求统计本次抓包中出现的状态码。与其一条条数不如用过滤器分类计数。Wireshark 底部状态栏会显示当前过滤结果的报文数。http.response.code 200 http.response.code 304 http.response.code 404 http.response.code 400分别输入记下每条过滤器对应的报文数就是状态码分布。200 是正常返回304 是缓存命中404 是资源不存在5xx 是服务端错误。如果一次页面加载里出现大量 304说明浏览器缓存策略生效这正好可以用来分析Cache-Control和Expires头的作用。想直接看某个响应带了哪些缓存头选中响应报文在 HTTP 层找Cache-Control、Expires、ETag、Last-Modified。ETag配合If-None-Match请求头实现协商缓存Last-Modified配合If-Modified-Since。这两对头在实验里经常被拿来出题抓包时能直接看到请求头里带了If-None-Match响应就是 304。4.2 持久连接与非持久连接的判断依据HTTP/1.1 默认持久连接判断方法是看一次 TCP 连接上是否承载了多个 HTTP 请求。操作上先找到 TCP 三次握手的那三个包Flags 列显示 SYN、SYN/ACK、ACK然后看这条连接后续跟了几个 HTTP 请求。tcp.stream eq 0 httptcp.stream eq 0锁定第一条 TCP 流加上http只看 HTTP 报文。如果结果里有多条 GET就是持久连接如果每个请求前都有新的 SYN就是非持久连接。实验报告里可以画一张表TCP 流编号请求数是否持久连接依据05是一次握手后跟 5 个 GET11否每个请求独立握手Connection: close出现在请求或响应头里表示这条连接用完就关是判断非持久连接的直接证据。4.3 用 IO Graph 看请求的时间分布实验报告如果只列报文会显得单薄。加一张时间分布图立刻有分析深度。Wireshark 菜单Statistics → I/O Graph可以画出每秒报文数或字节数。把过滤条件设成httpY 轴选 Packets就能看到页面加载时请求集中在哪个时间段。典型现象是HTML 请求先发几百毫秒后图片和静态资源请求密集出现这是浏览器解析 HTML 后并发拉取资源的结果。如果某个资源请求明显滞后可能是它被前面的 JS 阻塞了。这个观察写进报告比单纯罗列报文有说服力得多。提示I/O Graph 的 X 轴时间间隔默认 1 秒抓包时间短的话调成 100ms曲线才看得出细节。5. 排查 HTTP 抓包中的常见问题5.1 抓不到包现象、原因、解决现象点开始后列表一直空白浏览器明明在访问网页。原因网卡选错或者访问的是 HTTPS 站点或者捕获过滤器写得太严把包滤掉了。解决先清空捕获过滤器换网卡重试确认地址栏是http://开头用tcp.port 80代替http看有没有 TCP 流量有 TCP 没 HTTP 说明是加密流量。5.2 只看到请求看不到响应现象过滤http后只有 GET没有对应的 200 OK。原因抓包在响应回来之前就停止了或者响应走了另一条网卡多网卡机器常见或者响应被分片、显示过滤器没匹配上。解决多抓几秒再停用tcp.stream eq N锁定同一条流看全部报文检查是否有 TCP 重传导致响应延迟。5.3 报文显示为 TCP 而不是 HTTP现象协议列全是 TCP展开只有端口号没有 HTTP 层。原因Wireshark 没把这段流量识别成 HTTP常见于非标准端口比如 8080、8000或 HTTP/2。解决右键报文选Decode As → HTTP手动指定端口HTTP/2 在 Wireshark 里显示为 HTTP2需要另开过滤器http2。5.4 中文乱码或响应体显示不全现象Follow HTTP Stream 里中文变成问号或者 body 被截断。原因字符集不是 UTF-8或者响应用了 chunked 传输编码Wireshark 默认不重组。解决看Content-Type里的 charset对 chunked 响应在 TCP 层看Transfer-Encoding: chunkedbody 需要手动拼接分块实验报告里说明这一点即可不必强行还原。5.5 抓包文件太大打不开现象抓了几分钟文件几百 MBWireshark 卡死。原因没设捕获过滤器把视频流、下载流量全抓进来了。解决下次抓包前设捕获过滤器tcp port 80已经抓好的大文件用editcap按时间或包数切分editcap -c 10000 big.pcapng part.pcapng # -c 10000 表示每个分卷最多 10000 个包6. 进阶技巧用 tshark 批量提取 HTTP 字段做实验数据图形界面适合观察但实验报告如果要统计几十条请求的 URI 和状态码手工抄太慢。Wireshark 自带的命令行工具tshark能直接把这些字段导成表格。这是我认为这个实验最值得多花十分钟掌握的技巧。先确认 tshark 可用tshark -v # 输出版本信息即正常Windows 下在 Wireshark 安装目录里从已保存的抓包文件里提取 HTTP 请求方法和 URItshark -r http.pcapng -Y http.request \ -T fields -e http.request.method -e http.request.uri -e http.host # -r 读文件-Y 显示过滤器-T fields 输出指定字段 # -e 后面跟字段名可重复输出用制表符分隔提取响应状态码和内容类型tshark -r http.pcapng -Y http.response \ -T fields -e http.response.code -e http.content_type -e http.content_length把结果重定向到文件用 Excel 或 Python 做透视表状态码分布、资源类型占比一目了然。字段名不用背在 Wireshark 图形界面里选中某个字段底部状态栏会显示它的过滤名比如http.request.uri直接拿来用。再进一步可以统计每个 TCP 流上的请求数判断持久连接比例tshark -r http.pcapng -Y http.request \ -T fields -e tcp.stream | sort | uniq -c | sort -rn # 输出每条纹路上的请求数降序排列如果某条纹路请求数明显大于 1就是持久连接。这个统计比手工数快得多而且不会漏。最后说一个我自己的习惯每次做完抓包实验我都会把 pcapng 文件和对应的 tshark 导出结果放在同一个目录文件名带上日期和场景比如20250101-http-persistent.pcapng。过几周回头写报告或复习不用重新抓直接看导出表就能回忆起来当时的现象。抓包这件事现场感很强但记忆很弱留好原始文件比记笔记管用。希望帮到你。本文还有配套的精品资源点击获取

相关推荐

ST7701S屏幕不亮?从SPI到MIPI DSI的完整排查思路与实战复盘
ST7701S屏幕不亮?从SPI到MIPI DSI的完整排查思路与实战复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:52:17

移动百事通R3300-L刷机全攻略:晶晨S905L盒子救砖与固件烧录教程
移动百事通R3300-L刷机全攻略:晶晨S905L盒子救砖与固件烧录教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:52:17

ESP32-S3驱动3.5寸触摸屏:LVGL GUI开发实战指南
ESP32-S3驱动3.5寸触摸屏:LVGL GUI开发实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:52:11

科大讯飞语音链路 Demo:从唤醒到播报的完整抽离
科大讯飞语音链路 Demo:从唤醒到播报的完整抽离

在一个桌面类 Android 项目里,语音助手经常会越写越“粘”:首页要显示状态,悬浮窗要同步状态,业务指令要启动系统设置,通话页面又要暂停麦克风。最后真正想复用的那条链路,反而被 Launcher 业务包住了。 一… · 2026/9/24 15:42:51

2026年杭州亨得利腕表质保政策与官方维保受理门店地址、电话(官方更新版)
2026年杭州亨得利腕表质保政策与官方维保受理门店地址、电话(官方更新版)

随着腕表维保需求持续增长,广大表主对于腕表质保权益、官方维保受理渠道的关注度不断提升,2026年亨得利更新杭州区域腕表质保相关政策,同步公示杭州亨得利服务中心受理门店地址、联络电话,帮助杭州及周边地区表主清晰了解自身腕表… · 2026/9/24 15:42:51

CAN总线调试工具选型指南:CANTest、ZCANPro、USB-CAN Tool对比
CAN总线调试工具选型指南:CANTest、ZCANPro、USB-CAN Tool对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 15:42:50

STM32CubeIDE与ST-LINK下载程序全攻略:从接线到固件更新排查
STM32CubeIDE与ST-LINK下载程序全攻略:从接线到固件更新排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 15:42:44

支付宝App支付后端怎么做?alipay_sdk_cj客户端请求串生成完整教程
支付宝App支付后端怎么做?alipay_sdk_cj客户端请求串生成完整教程

支付宝App支付后端怎么做?alipay_sdk_cj客户端请求串生成完整教程 【免费下载链接】alipay_sdk_cj AliPay Sdk for 仓颉 支付宝接口后端sdk,方便cangjie开发者快速接入支付宝的支付接口(目前只支持最广泛使用的商户直接接入模式,只… · 2026/9/24 15:42:38

PHPStan 错误标识符 `property.readOnly` 全解析:readonly 属性覆盖可读写父类属性时的 LSP 冲突与修复
PHPStan 错误标识符 `property.readOnly` 全解析:readonly 属性覆盖可读写父类属性时的 LSP 冲突与修复

开发工具代码质量静态分析 【免费下载链接】phpstan PHP Static Analysis Tool - discover bugs in your code without running it! 项目地址: https://gitcode.com/gh_mirrors/ph/phpstan 点击查看 免费下载 本篇指南围绕 PHPStan 错误标识符 property.readOnly 展… · 2026/9/24 15:42:38

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码