【学习笔记】Wireshark的用法
计算机网络课上,需要我们灵活运用网络协议分析仪wireshark,最近一直在看,感觉有点难,并不是软件本身操作难,而是看懂一大群包的含义难,这个难主要也因为它是全英文的~~。。
好了,大致总结一下,基本都是大神的,引用的,与大家分享。
wireshark 开始抓包
开始界面

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。
点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包

Wireshark 窗口介绍

WireShark 主要分为这几个界面
1. Display Filter(显示过滤器), 用于过滤
2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表
3. Packet Details Pane(封包详细信息), 显示封包中的字段
4. Dissector Pane(16进制数据)
5. Miscellanous(地址栏,杂项)

使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。
过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
过滤器有两种,
一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录
一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置
保存过滤
在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102",

Filter栏上就多了个"Filter 102" 的按钮。

过滤表达式的规则
表达式规则
1. 协议过滤
比如TCP,只显示TCP协议。
2. IP 过滤
比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,
ip.dst==192.168.1.102, 目标地址为192.168.1.102
3. 端口过滤
tcp.port ==80, 端口为80的
tcp.srcport == 80, 只显示TCP协议的愿端口为80的。
4. Http模式过滤
http.request.method=="GET", 只显示HTTP GET方法的。
5. 逻辑运算符为 AND/ OR
常用的过滤表达式
| 过滤表达式 | 用途 |
| http | 只查看HTTP协议的记录 |
| ip.src ==192.168.1.102 or ip.dst==192.168.1.102 | 源地址或者目标地址是192.168.1.102 |
封包列表(Packet List Pane)
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。
你也可以修改这些显示颜色的规则, View ->Coloring Rules.

封包详细信息 (Packet Details Pane)
这个面板是我们最重要的,用来查看协议中的每一个字段。
各行信息分别为
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

TCP包的具体内容
从下图可以看到wireshark捕获到的TCP包中的每个字段。

看到这, 基本上对wireshak有了初步了解, 现在我们看一个TCP三次握手的实例
三次握手过程为

这图我都看过很多遍了, 这次我们用wireshark实际分析下三次握手的过程。
打开wireshark, 打开浏览器输入 http://www.cr173.com
在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",
这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图

图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
第一次握手数据包
客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图

第二次握手的数据包
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图

第三次握手的数据包
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:

就这样通过了TCP三次握手,建立了连接
File菜单介绍
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Open… | Ctr+O | 显示打开文件对话框,让您載入捕捉文件用以浏览。 |
| Open Recent | 弹出一个子菜单显示最近打开过的文件供选择。 | |
| Merg | 显示合并捕捉文件的对话框。让您选择一个文件和当前打开的文件合并。 | |
| Close | Ctrl+W | 关闭当前捕捉文件,如果您未保存,系统将提示您是否保存(如果您预设了禁止提示保存,将不会提示) |
| Save | Crl+S | 保存当前捕捉文件,如果您没有设置默认的保存文件名,Wireshark出现提示您保存文件的对话框。 |
| Save As | Shift+Ctrl+S | 让您将当前文件保存为另外一个文件面,将会出现一个另存为的对话框 |
| File Set>List Files | 允许您显示文件集合的列表。将会弹出一个对话框显示已打开文件的列表。 | |
| File Set>Next File | 如果当前載入文件是文件集合的一部分,将会跳转到下一个文件。如果不是,将会跳转到最后一个文件。这个文件选项将会是灰色。 | |
| File set>Previous Files | 如果当前文件是文件集合 的一部分,将会调到它所在位置的前一个文件。如果不是则跳到文件集合的第一个文件,同时变成灰色。 | |
| Export> as “Plain Text” File… | 这个菜单允许您将捕捉文件中所有的或者部分的包导出为plain ASCII text格式。它将会弹出一个Wireshark导出对话框。 | |
| Export >as “PostScript” Files | 将捕捉文件的全部或部分导出为PostScrit文件。 | |
| Export > as “CVS” (Comma Separated Values Packet Summary)File… | 导出文件全部或部分摘要为.cvs格式(可用在电子表格中)。。 | |
| Export > as “PSML” File… | 导出文件的全部或部分为PSML格式(包摘要标记语言)XML文件。将会弹出导出文件对话框。 | |
| Export as “PDML” File… | 导出文件的全部或部分为PDML(包摘要标记语言)格式的XML文件。 | |
| Export > Selected Packet Bytes… | 导出当前在Packet byte面版选择的字节为二进制文件。 | |
| Ctr+P | 打印捕捉包的全部或部分,将会弹出打印对话框。 | |
| Quit | Ctrl+Q | 退出Wireshark,如果未保存文件,Wireshark会提示是否保存。 |
Edit——包括如下项目:查找包,时间参考,标记一个多个包,设置预设参数。(剪切,拷贝,粘贴不能立即执行。)

Edit菜单项
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Copy>As Filter | Shift+Ctrl+C | 使用详情面版选择的数据作为显示过滤。显示过滤将会拷贝到剪贴板。 |
| Find Packet… | Ctr+F | 打开一个对话框用来通过限制来查找包 |
| Find Next | Ctrl+N | 在使用Find packet以后,使用该菜单会查找匹配规则的下一个包 |
| Find Previous | Ctr+B | 查找匹配规则的前一个包。 |
| Mark Packet(toggle) | Ctrl+M | 标记当前选择的包。 |
| Find Next Mark | Shift+Ctrl+N | 查找下一个被标记的包 |
| Find Previous Mark | Ctrl+Shift+B | 查找前一个被标记的包 |
| Mark ALL Packets | 标记所有包 | |
| Unmark All Packet | 取消所有标记 | |
| Set Time Reference(toggle) | Ctrl+T | 以当前包时间作为参考 |
| Find Next Reference | 找到下一个时间参考包 | |
| Find Previous Refrence… | 找到前一个时间参考包 | |
| Preferences… | Shift+Ctrl+P | 打开首选项对话框,个性化设置Wireshark的各项参数,设置后的参数将会在每次打开时发挥作用。 |
View ——控制捕捉数据的显示方式,包括颜色,字体缩放,将包显示在分离的窗口,展开或收缩详情面版的地树状节点

“View”菜单项
| 菜单项 | 快捷键 | 描述 | |||
|---|---|---|---|---|---|
| Main Toolbar | 显示隐藏Main toolbar(主工具栏) | ||||
| Filter Toolbar | 显示或隐藏Filter Toolbar(过滤工具栏) | ||||
| Statusbar | 显示或隐藏状态栏 | ||||
| Packet List | 显示或隐藏Packet List pane(包列表面板) | ||||
| Packet Details | 显示或隐藏Packet details pane(包详情面板) | ||||
| Packet Bytes | 显示或隐藏packet Bytes pane(包字节面板) | ||||
| Time Display Fromat>Date and Time of Day: 1970-01-01 01:02:03.123456 | 选择这里告诉Wireshark将时间戳设置为绝对日期-时间格式(年月日,时分秒) | ||||
| Time Display Format>Time of Day: 01:02:03.123456 | 将时间设置为绝对时间-日期格式(时分秒格式) | ||||
| Time Display Format > Seconds Since Beginning of Capture: 123.123456 | 将时间戳设置为秒格式,从捕捉开始计时,见 | ||||
| Time Display Format > Seconds Since Previous Captured Packet: 1.123456 | 将时间戳设置为秒格式,从上次捕捉开始计时 | ||||
| Time Display Format > Seconds Since Previous Displayed Packet: 1.123456 | 将时间戳设置为秒格式,从上次显示的包开始计时 | ||||
| Time Display Format > —— | |||||
| Time Display Format > Automatic (File Format Precision) | 根据指定的精度选择数据包中时间戳的显示方式 | ||||
| Time Display Format > Seconds: 0 | 设置精度为1秒 | ||||
| Time Display Format > …seconds: 0…. | 设置精度为1秒,0.1秒,0.01秒,百万分之一秒等等。 | ||||
| Name Resolution > Resolve Name | 仅对当前选定包进行解析 | ||||
| Name Resolution > Enable for MAC Layer | 是否解析Mac地址 | ||||
| Name Resolution > Enable for Network Layer | 是否解析网络层地址(ip地址) | ||||
| Name Resolution > Enable for Transport Layer | 是否解析传输层地址 | ||||
| Colorize Packet List | 是否以彩色显示包 | ||||
| Auto Scrooll in Live Capture | 控制在实时捕捉时是否自动滚屏,如果选择了该项,在有新数据进入时, 面板会项上滚动。您始终能看到最后的数据。反之,您无法看到满屏以后的数据,除非您手动滚屏 | ||||
| Zoom In | Ctrl++ | 增大字体 | |||
| Zoom Out | Ctrl+- | 缩小字体 | |||
| Normal Size | Ctrl+= | 恢复正常大小 | |||
| Resiz All Columnus | 恢复所有列宽
|
||||
| Expend Subtrees | 展开子分支 | ||||
| Expand All | 看开所有分支,该选项会展开您选择的包的所有分支。 | ||||
| Collapse All | 收缩所有包的所有分支 | ||||
| Coloring Rulues… | 打开一个对话框,让您可以通过过滤表达来用不同的颜色显示包。这项功能对定位特定类型的包非常有用 | ||||
| Show Packet in New Window | 在新窗口显示当前包,(新窗口仅包含View,Byte View两个面板) | ||||
| Reload | Ctrl+R | 重新再如当前捕捉文件 |
GO——包含到指定包的功能。

“GO”菜单项
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Back | Alt+Left | 跳到最近浏览的包,类似于浏览器中的页面历史纪录 |
| ForWard | Alt+Right | 跳到下一个最近浏览的包,跟浏览器类似 |
| Go to Packet | Ctrl+G | 打开一个对话框,输入指定的包序号,然后跳转到对应的包。 |
| Go to Corresponding Packet | 跳转到当前包的应答包,如果不存在,该选项为灰色 | |
| Previous Packet | Ctrl+UP | 移动到包列表中的前一个包,即使包列表面板不是当前焦点,也是可用的 |
| Next Packet | Ctrl+Down | 移动到包列表中的后一个包,同上 |
| First Packet | 移动到列表中的第一个包 | |
| Last Packet | 移动到列表中的最后一个包 |
Capture——捕捉数据包
“Capture”菜单项
| 菜单项 | 快捷键 | 说明 |
|---|---|---|
| Interface… | 在弹出对话框选择您要进行捕捉的网络接口 | |
| Options… | Ctrl+K | 打开设置捕捉选项的对话框并可以在此开始捕捉 |
| Start | 立即开始捕捉,设置都是参照最后一次设置。 | |
| Stop | Ctrl+E | 停止正在进行的捕捉 |
| Restart | 正在进行捕捉时,停止捕捉,并按同样的设置重新开始捕捉.仅在您认为有必要时 | |
| Capture Filters… | 打开对话框,编辑捕捉过滤设置,可以命名过滤器,保存为其他捕捉时使用 |
Analyze ——包含处理显示过滤,允许或禁止分析协议,配置用户指定解码和追踪TCP流等功能。

“analyze”菜单项
| 菜单项 | 快捷键 | 说明 |
|---|---|---|
| Display Filters… | 打开过滤器对话框编辑过滤设置,可以命名过滤设置,保存为其他地方使用,见第 6.6 节 “定义,保存过滤器” | |
| Apply as Filter>… | 更改当前过滤显示并立即应用。根据选择的项,当前显示字段会被替换成选择在Detail面板的协议字段 | |
| Prepare a Filter>… | 更改当前显示过滤设置,当不会立即应用。同样根据当前选择项,过滤字符会被替换成Detail面板选择的协议字段 | |
| Firewall ACL Rules | 为多种不同的防火墙创建命令行ACL规则(访问控制列表),支持Cisco IOS, Linux Netfilter (iptables), OpenBSD pf and Windows Firewall (via netsh). Rules for MAC addresses, IPv4 addresses, TCP and UDP ports, 以及IPv4+混合端口 以上假定规则用于外部接口 |
|
| Enable Protocols… | Shift+Ctrl+R | 是否允许协议分析,见第 9.4.1 节 “”Enable Protocols”对话框” |
Statistics ——包括的菜单项用户显示多个统计窗口,包括关于捕捉包的摘要,协议层次统计等等。

| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Summary | 显示捕捉数据摘要 | |
| Protocol Hierarchy | 显示协议统计分层信息 | |
| Conversations/ | 显示会话列表(两个终端之间的通信) | |
| EndPoints | 显示端点列表(通信发起,结束地址) | |
| IO Graphs | 显示用户指定图表,(如包数量-时间表) | |
| Conversation List | 通过一个组合窗口,显示会话列表 | |
| Endpoint List | 通过一个组合窗口显示终端列表 | |
| Service Response Time | 显示一个请求及其相应之间的间隔时间 |
Help——包含一些辅助用户的参考内容。如访问一些基本的帮助文件,支持的协议列表,用户手册。在线访问一些网站,“关于”
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Open… | Ctr+O | 显示打开文件对话框,让您載入捕捉文件用以浏览。 |
| Open Recent | 弹出一个子菜单显示最近打开过的文件供选择。 |
如何进行“简单”的抓包筛选。
其实关于wireshark来说,比较重要的还是数对抓包之后的“查询统计分析”,如何在海量的数据包中,抓取出自己关注的数据包是处理问题的第一步,最后再讲解一下如何进行“简单”的抓包筛选。
为了直观,本篇博文以一次实例进行,我在本地对网卡进行了抓包,登录了一次QQ,与网友聊天,并且,访问了一次我的博客www.zike.me,那我就从海量数据包中,抓取关于这两个操作的相关数据包。
首先,我进行了本地抓包,进行了上述两个操作,stop抓包,仅仅十多秒钟,我抓到了3543个数据包,其中存在有我需要的数据包。(从这里看出了“筛选分析”有多么重要,如果数据流量较大,我试验过,较小的网络中,1分钟左右的抓包,可以获取300万数据包)
原始数据包
抓包分析
输入:oicq进行筛选
oicq协议分析

- oicq统计结果
查看单包的数据,在data处可以看见QQ号码
详细数据包
选取第一个数据包,点击右键,我们可以看见有很多选项,我们选取“follow UDP stream”,即追踪该UDP流,跟踪整个会话
跟踪会话
可以看见,我的得到了该次聊天会话
wireshark抓包分析
同时,我们还可以选择另外一种筛选方式,在详细数据包中,我们选择QQ号码那一栏作为筛选的数据,点击数据包QQ号码处,右键,作为筛选……
wireshark筛选分析
接下来,我们看看由浏览器发起的对www.zike.me的访问,我们主要看进行对dns数据包的筛选
第一步还是选择协议,dns
dns数据包
同时,也可以直接选择所访问的域名:dns.qry.name == “www.zike.me”,直接进行筛选
wireshark抓包筛选分析
下图可以看见,我本机发起了对www.zike.me的查询,我本地的缓存域名服务器是中国电信的61.128.128.68
dns回应包
然后看见DNS服务器进行回应,回复说www.zike.me的IP地址是173.231.1.221
dns服务器回应数据包
同时,我们可以对本次抓包进行统计概况,如下图
wireshark统计汇总
可以看见总述里面,包数,实时流量大小等等。
wireshark summary
对本次抓包的协议总述
也就这么多了,希望对大家有用。
【学习笔记】Wireshark的用法的更多相关文章
- jQuery学习笔记之Ajax用法详解
这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...
- C++学习笔记之pimpl用法详解
原文链接:https://www.jb51.net/article/122557.htm 在编写稳定代码是,管理好代码间的依赖性是不可缺少的一个环节.特别是库文件的编写中,减少代码间的依赖性可以提供一 ...
- seajs教程之seajs学习笔记 seajs.use用法
seajs.use 用来在页面中加载模块.通过 use 方法,可以在页面中加载任意模块. 实例地址:http://www.android100.org/html/201405/23/12807.htm ...
- MVC学习笔记--IEnumerable的用法
IEnumerable的用法 IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现 并支持非泛型方法的简单的 ...
- Oracle学习笔记_06_CASE WHEN 用法介绍
1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 CASE ' THEN ...
- 四、Hadoop学习笔记————各种工具用法
hive基本hql语法 Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库 ...
- Android开发学习笔记-SharedPreferences的用法
SharedPreferences介绍: 做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等 ...
- cocos2d-x 学习笔记之 CCMenuItemToggle用法
想做用cocos2d-x做一个登陆界面,界面有有个记住账号的功能,但是该引擎我没有找到类似checkbox的类,考虑到Toggle也是开关即0和1,故考虑用这个类来实现. CCMenuItemImag ...
- Android学习笔记_72_Spinner的用法
一.普通 1. <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android= ...
- python学习笔记-list的用法
1.list的定义 list = [] list = [1,2,'a','b'](list中的元素不一定是一个类型) 2.list的操作 1)list.append(value) 2)list.ins ...
随机推荐
- InfluxDB学习之InfluxDB的安装和简介
最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...
- MySQL高效分页解决方案集(转)
很久以前的一次面试中,被面试官问到这个问题,由于平时用到的分页方法不多,只从索引.分表.使用子查询精准定位偏移以外,没有使用到其它方法. 后来在看其它博客看到了一些不同的方案,也一直没有整理.今天有时 ...
- python日志模块---logging
1.将日志打印到屏幕 import logging logging.debug('This is debug message---by liu-ke') logging.info('This is i ...
- linux下使用taskset设置进程cpu绑定不起作用
自从大规模使用了虚拟化之后,大流量时soft interrupt在某个cpu很高就是个严重的问题,最近一有时间就研究这个问题,如果网卡本身不支持多队列的话,有没有办法缓解这个问题. 一开始使用rps, ...
- ASP.NET登录控件login。
1.Login控件.通常情况下会出现3个核心元素.用户名文本框.密码输入框.提交凭证的按钮. 1>.比较重要的属性:CreateUserText属性:包含站点注册页的链接文本.CreateUse ...
- 一款很实用的jQuery鼠标悬浮有动画效果的响应式瀑布流插件
一款很实用的jQuery鼠标悬浮有动画效果的响应式瀑布流插件 在线预览 下载地址 实例代码 <!doctype html> <html lang="zh"> ...
- HTML(.js) – 最简单的方式操作 DOM 的 JS 库
HTML(.js) 是一个轻量的(压缩后~2kb) JavaScript 库,简化了与 DOM 交互的方法. 这个 JavaScript 库的方法可读性很好,并具有搜索和遍历 DOM 的方法.相比 j ...
- 高端大气上档次!10个精美的国外HTML5网站欣赏
这篇文章挑选了10个高端大气上档次的 HTML5 网站分享给大家.作为下一代网页语言,HTML5 加入中众多的语义化标签,例如 video.audio.section.article.header.f ...
- 基于jPlayer的三分屏制作
三分屏,这里的三分屏只是在一个播放器里同时播放三个视频,但是要求只有一个控制面板同时控制它们,要求它们共享一个时间轨道.这次只是简单的模拟了一下功能,并没有深入的研究. 首先,需要下载jPlayer, ...
- FormsAuthentication身份认证源代码
使用FormsAuthentication类可以实现身份认证功能,这里提供一个asp.net项目的源代码,项目名称KWS.项目实现了登录.退出和判断身份的功能. 关于项目 点击这里下载源代码 http ...
