Wireshark基本使用

本文会对Wireshark做简单介绍,带大家熟悉一下Wireshark的界面,以及如何使用过滤器。

接着会带大家查看TCP五层模型下,带大家回顾各层首部的格式。

最后会演示 Wireshark 如何抓取三次握手和四次挥手包的过程。

目录

一.Wireshark简介

[二. 界面介绍](#二. 界面介绍)

[三. 过滤器](#三. 过滤器)

[1. 捕获过滤器](#1. 捕获过滤器)

[2. 显示过滤器](#2. 显示过滤器)

[四. 保存流量包](#四. 保存流量包)

[五. 协议数据包详解](#五. 协议数据包详解)

[1. 物理层](#1. 物理层)

[2. 数据链路层](#2. 数据链路层)

[3. 网络层](#3. 网络层)

[4. 传输层](#4. 传输层)

三次握手

四次挥手


一.Wireshark简介

大家可能之前用过 BurpSuite,Wireshark和它相比有哪些区别呢?

Burpsuite 只是抓的应用层数据包,而 Wireshark 七层网络模型都能抓。

不过Wireshark不是入侵检测系统,对于网络上的异常流量,Wireshark不会警示或提示。

且无法对流量包进行更改,只能查看流量包。

下载地址:Wireshark · Download


二. 界面介绍

共分为五大块:菜单栏,工具栏,显示过滤器,捕获过滤器和网卡模块。

显示过滤器是对抓到的包进行过滤;

捕获过滤器是提前设置好想抓的对象。

抓包界面也分三大块:

从上到下分别是数据包列表,数据包的详细信息和详细信息十六进制表示。

在编辑-首选项-外观,也可以按自己习惯修改布局。


三. 过滤器

功能列表不可能一一介绍完,这里介绍最重要的过滤器。

1. 捕获过滤器

前面说过,捕获过滤器是提前设置好捕获的对象

点击捕获-选项:

这里的混杂模式 是指不仅抓本机MAC地址的包,所有经过网卡的包都会捕获。

捕获过滤器就在下方的框内输入即可

比如想捕获端口为443的包:输入 port 443

还有很多选项,比如

地址:host、src、dst 协议:ip、tcp、http、ftp

如查找目的地址为本机且协议是tcp的包:dst 127.0.0.1 && tcp

这里再举些例子:

python 复制代码
src host 192.168.2.11 && dst port 80 #抓取源地址为192.168.2.11,并且目的端口为80
的流量
host 192.168.2.11 || host 192.168.2.22 #抓取192.168.2.11或者192.168.2.22的流量
数据
!broadcast #不抓取广播包
src ether host 98:1a:35:98:09:6f #抓取源mac地址为98:1a:35:98:09:6f的数据包

2. 显示过滤器

显示过滤器是对抓完的包再进行过滤

这里也列出一些例子:

python 复制代码
http、tcp #按照协议搜索
ip.src_host=192.168.2.16 #src_host按照源ip地址进行搜索
ip.src_host=192.168.2.16 or ip.dst_host=192.168.2.1 # dst_host是目标主机ip地址
tcp.flags.ack == 0 and tcp.flags.syn == 1 # 这是过滤出,tcp请求中ack标记为0,syn标记为1的包
ip.addr=192.168.2.33 # 是要ip地址为192.168.2.33的全部展示出来,不管是目标地址还是源地址。
tcp.srcport == 443 # 源端口为443的数据包
not arp # 不获取arp数据
tcp.port == 443 # 过滤端口443的数据包

这里还有一种过滤器选择方法:

我们选择一项右击,选择作为过滤器应用,也可以进行显示过滤。


四. 保存流量包

比如我们想导出特定几个流量包,怎么导出呢?

选中我们要标记的包右键标记或者 Ctrl + M

再点击 文件 - 导出特定分组,选择最下面的 Marked packets only


五. 协议数据包详解

OSI 七层模型和 TCP/IP 五层模型相信大家并不陌生:

Wireshark 呈现出的方式是五层模型方式:

我们依次来看一下:

1. 物理层

2. 数据链路层

数据链路层抓的是以太网MAC帧,格式如下:

细心的同学会发现,为什么Wireshark这个没有FCS字段

因为 Wireshark 抓取的MAC帧直接丢掉了帧尾,默认丢弃了这个校验字段。

3. 网络层

IP层咱先回顾一下IP首部字段:

再来对比看一下:

4. 传输层

传输层协议主要是TCP和UDP,我们这里先看TCP:

对应看下包:这里的1000就是数据偏移,保留位是 ....

数据偏移其实就是表示这个TCP的首部长度,以4B为单位,所以为32B

标志位字段展开就是六个标志

各个标志位的含义如下:


下面演示三次握手和四次挥手的抓包过程:

三次握手

首先看下三次握手的过程图:

具体的三次握手细节可以看湖科大计网

实验过程如下:

我们随便访问一个网站,通过 源地址、目标地址和info能找到三次握手的包

也可以设置显示过滤器为tcp.flags.syn == 1进行查找

然后存储下来,我们来进行分析:

第一个包,开始时服务器端处于监听状态,客户端发送TCP连接请求报文段

并设置 seq=x,SYN=1,进入 SYN-SENT 状态


第二个包,服务器端接收到后,向客户端发送确认消息

设置 SYN=1,ACK=1,seq=y,ack=x+1,并进入 SYN-RCVD 状态


第三个包,客户端收到后,向服务器端发送TCP确认报文段表示收到

设置ACK=1,seq=x+1,ack=y+1,进入 ESTABLISHED 状态

最后,服务器收到确认请求,就知道可以进行通信了,也进入 ESTABLISHED 状态。

四次挥手

四次挥手的过程图:

实验过程如下:

我们搜索 tcp.flags.fin == 1

搜到两条先标记,然后搜 tcp.flags,就能找到四次挥手的四个包了,标记保存。

第一个包,客户端向服务器发送FIN请求,并确认收到之前的数据

设置 FIN=1,ACK=1,seq=u,ack=v,并进入终止等待1状态


第二个包, 服务器收到客户端的包,返回确认包

设置 ACK=1,seq=v,ack=u+1,服务器端进入关闭等待状态,客户端进入终止等待2状态


第三个包,主要是为了防止第二包发完后,服务器端还有数据要发送给客户端

发送完后,服务器端也告知客户端自己要请求断开连接,并确认收到了之前的数据包

设置FIN=1,ACK=1,seq=w,ack=u+1,服务器端进入最后确认状态


第四个包,客户端确认收到服务器端的释放请求

设置 ACK=1,seq=u+1,ack=w+1,客户端进入时间等待状态,因为怕服务器端没收到这个确认包。客户端等待2MSL看服务器端是否会超时重传,没反应就进入关闭状态。

感谢你能看到这 o(* ̄▽ ̄*)ブ

相关推荐
Dream Algorithm2 分钟前
路由器WAN口和LAN口
网络·智能路由器
从零开始学习人工智能4 分钟前
探索网络设备安全:Shodan 的原理与合法应用
网络·安全·php
KAXA_1 小时前
AGV通信第3期|AGV集群智能应急响应系统:从故障感知到快速恢复
网络·自动化·硬件工程·工业通信
朝新_1 小时前
【Linux操作系统】第一弹——Linux基础篇
linux·服务器·网络
测试工程喵1 小时前
Bearer Token的神秘面纱:深入解析HTTP认证头的设计哲学
网络·功能测试·网络协议·http·接口测试·模块测试·登录认证
海尔辛1 小时前
学习黑客光猫-路由器-交换机
网络·学习·智能路由器
JAVA学习通2 小时前
[JAVAEE]HTTP协议(2.0)
网络·网络协议·http
Johny_Zhao2 小时前
堆叠、MLAG、VPC、VSS 技术对比及架构建议
linux·网络·人工智能·python·网络安全·ai·信息安全·云计算·cisco·等保测评·huawei·系统运维
我尽力学3 小时前
BIO/NIO/AIO
网络
光电大美美-见合八方中国芯3 小时前
【平面波导外腔激光器专题系列】1064nm单纵模平面波导外腔激光器‌
网络·数据库·人工智能·算法·平面·性能优化