当前位置: 首页 > news >正文

Wireshark基本使用

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

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

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

目录

一.Wireshark简介

二. 界面介绍

三. 过滤器

1. 捕获过滤器

2. 显示过滤器

四. 保存流量包

五. 协议数据包详解

1. 物理层

2. 数据链路层

3. 网络层

 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

这里再举些例子: 

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. 显示过滤器

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

这里也列出一些例子:

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(* ̄▽ ̄*)ブ

相关文章:

  • 基于Qt开发的http/https客户端
  • AWS VPC架构师指南:从零设计企业级云网络隔离方案
  • 学成在线之课程管理
  • 第四章:基于langchain构造一个完整RAG系统
  • C++从入门到实战(十四)初识STL与STL简介
  • 2025年3月电子学会等级考试五级题——4、收费站在哪里
  • ruoyi-flowable-plus 前端框架启动报错修复
  • 【C++游戏引擎开发】第34篇:C++实现反射
  • 神经网络—感知器、多层感知器
  • Azure Databricks:数据创新与智能决策的云端利器
  • 软件工程之需求分析涉及的图与工具
  • 基于大模型的计划性剖宫产全流程预测与方案优化研究报告
  • 案例解读 | IT监控如何重塑财务公司运维体系
  • vue中操作dom,实现元素的拖拉拽
  • Linux系统管理与编程15:vscode与Linux连接进行shell开发
  • 1688代采系统:技术架构与应用实践
  • iOS 模块化开发流程
  • Axios替代品Alova
  • 【计算机网络】用户从输入网址到网页显示,期间发生了什么?
  • RPC、gRPC和HTTP的区别
  • 国防部:奉劝有关国家不要引狼入室,甘当棋子
  • 上海如何为街镇营商环境赋能?送政策、配资源、解难题、强活力
  • 特色业务多点开花,苏州银行擦亮金融为民底色
  • 明查|这是“C919迫降在农田”?实为飞机模型将用于科普体验
  • 美联储宣布维持基准利率不变
  • 关税风暴下,3G资本拟94亿美元私有化美国鞋履巨头斯凯奇,溢价30%