2025-10-06 23:35:47

抓包工具分析

一、网络抓包工具分析

网络抓包是网络分析和故障排查中的一个重要技术,而Wireshark是最常用的网络抓包工具之一。下面我将介绍一下网络抓包的基本概念以及Wireshark的作用。

网络抓包概念

1. 什么是网络抓包?

网络抓包是指通过捕获和分析网络上流动的数据包来监控、诊断和优化网络的过程。网络数据包是网络通信的基本单位,每个数据包包含了从源到目的地的所有通信信息。

2. 为什么要进行网络抓包?

故障排查:识别和解决网络问题,如连接中断、延迟或数据丢失。

性能优化:分析网络性能,找到瓶颈并进行优化。

安全分析:检测恶意活动或数据泄露,增强网络安全。

协议分析:了解和验证网络协议的行为。

3. 数据包的基本组成

头部:包含关于数据包来源、目的地、协议类型等信息。

有效载荷:实际传输的数据内容。

Wireshark概述

1. 什么是Wireshark?

Wireshark是一款开源的网络协议分析工具,用于捕获和分析网络流量。它允许用户查看网络中传输的每一个数据包的详细信息,支持多种网络协议的解码和分析。

2. Wireshark的主要功能

实时捕获:可以在网络中实时捕获数据包。

数据包分析:提供对数据包的详细分析,包括协议层次、字段信息等。

过滤和搜索:允许用户设置复杂的过滤器来仅查看感兴趣的数据包。

可视化:提供多种图表和统计信息来帮助理解网络流量。

导出和保存:可以将捕获的数据导出为多种格式,方便后续分析和分享。

3. 使用Wireshark的基本步骤

启动Wireshark:打开应用程序并选择要监控的网络接口。

开始捕获:点击“开始捕获”按钮,Wireshark将开始记录网络流量。

分析数据包:观察数据包列表,使用过滤器来查找特定的数据包。

查看详细信息:点击某个数据包查看其详细内容和协议层级。

保存和导出:将捕获的数据保存到文件中以便后续分析或分享。

4. 实践建议

熟悉过滤器:Wireshark的过滤器功能非常强大,学会使用过滤器可以更高效地定位问题。

注意隐私和法律:捕获和分析网络流量时需确保符合隐私法规和法律要求,避免未经授权的网络监控。

二、安装

windows:

https://www.wireshark.org/

linux版本:终端输入

sudo apt install wireshark

安装完成之后界面:

tips:在linux下面的Ubuntu中,在ubuntu中启动时,由于wireshark需要管理员才能抓取网口数据,因此需要使用 sudo 在命令行终端启动,输入:

gec@ubuntu:~$ sudo wireshark

1.基本使用步骤

初次使用 wireshark 都会感觉其功能强大,界面复杂,学习门槛高,但如果仅限于使用其来抓取对应网卡数据包,用于学习、验证各种不同网络协议通过真实物理设备时的数据封装形式,则其应用并不困难。总体而言,只需掌握如下几点便可:

1.选择正确的监控网络接口

2.编写正确的捕获、显示过滤器

3.认识如何查看数据包,尤其是通信协议的内容

一)网络接口的选取

在wireshark的起始界面,首先要选择需要监控的网卡:

假设在A同学的虚拟机ubuntu-1中运行一个网络通信测试用例,在另一位B同学的虚拟机ubuntu-2中运行对端网络通信测试用例,那么它们之间的网络数据必然会通过物理机中的真实网卡,那么只需在windows版本的wireshark中监控某个网卡即可。具体而言:

如果虚拟机是桥接模式,那么就监控虚拟机所桥接的网卡

如果虚拟机是NAT模式,那么就监控VMnet8

如果是某同学自己的同一台虚拟机ubuntu中,启动了两个网络通信测试用例,那么这些网络数据将不会通过任何物理真实网卡,甚至也不会通过任何虚拟网卡,而仅仅通过虚拟机ubuntu中的本地回环设备 lo 进行传递,因此这种情况下如果想要抓包分析,那么一般需要安装ubuntu的wireshark,并且使之监控ubuntu中的 lo 网卡。

二)筛选表达式的编写

如下图所示,在指定某个监控网卡之后,如果该网卡处于活跃状态,一般会发现从网卡通过的数据包会非常多,使得目标数据包难以被发现,因此一般需要编写 过滤器表达式 来捕获符合条件的数据包。

wireshark支持两种过滤器,一是捕获过滤器,一是显示过滤器,顾名思义,捕获过滤器在过滤之前就做出筛选,直接无视不符合要求的数据包,这样能节约大量磁盘空间资源,而显示过滤器则是在捕获了的数据包的基础上,再对显示列表做进一步筛选,这两种过滤器的位置如下图所示:

wireshark两种常用过滤器

示例1:

设置捕获过滤器,使之只捕获TCP协议且端口号包含50001(即源端端口或目的端端口)的数据包:

tcp port 50001

设置捕获过滤器

示例2:

设置显示过滤器,使之只显示TCP协议且端口号包含50001(即远端端口或目的端端口)的数据包

tcp.port == 50001

wireshark显示过滤器

一条基本的过滤器表达式由过滤项、过滤关系和过滤值构成,比如 ip.addr == 192.168.1.100 这个表达式中:

ip.addr 是过滤项

== 是过滤关系

192.168.1.100 是过滤值

整个表达式的意思是:找出所有IP协议中源主机或目标主机的IP地址等于192.168.1.100的数据包。

过滤项:

过滤项一般的构成是由 协议.协议字段 构成。

协议

eth

ip

tcp

udp

snmp

icmp

ftp

http

telnet

oicq

字段(该协议下的关键属性)

addr

port

dstport

payload

ack

因此他们的组合可以是:

tcp.port == 50001

udp.dstport >= 1024

oicq.qqid == 2437231462

过滤关系:

过滤关系就是大于、小于、等于这些逻辑关系,在显示过滤器中有两种写法,一种是英文模式,一种是代码模式,比如过滤端口为50001的写法可以是以下两种写法之一:

tcp.port == 50001

tcp.port eq 50001

具体的写法可以参考官方给定的下图:

过滤值:

过滤值就是设定的过滤项应该满足的标准,一些具体的数值。

wireshark其他更深入的教程,有兴趣的话可以参考官方手册:

https://www.wireshark.org/docs/wsug_html/#DispCompOps

lol大笑快捷键_lol大笑键在哪里改
为什么博主拍照那么清晰