【网络分析工具】网络工具wireshark、TCPdump、iperf使用详解

发布于:2025-05-12 ⋅ 阅读:(16) ⋅ 点赞:(0)

1. wireshark

**ip.dst eq 10.0.0.21** 是用于网络流量分析工具(例如 Wireshark 或 tcpdump)的过滤器表达式。 它的作用是筛选出所有目标IP地址为 10.0.0.21 的数据包

IP.addr == 10.0.0.1 搜索指定ip

1.1. 过滤包

会弹出来的

  • 协议过滤

  • quic:过滤所有 QUIC 协议的数据包。

  • udp:过滤所有 UDP 协议的数据包(QUIC 基于 UDP)。

  • tcp:过滤所有 TCP 协议的数据包。

  • http2:过滤所有 HTTP/2 协议的数据包。

  • tls:过滤所有 TLS 协议的数据包。

  • IP 地址过滤

  • ip.src == 192.168.1.1:过滤源 IP 为 192.168.1.1 的数据包。

  • ip.dst == 192.168.1.1:过滤目标 IP 为 192.168.1.1 的数据包。

  • ip.addr == 192.168.1.1:过滤源或目标 IP 为 192.168.1.1 的数据包。

  • 端口过滤

  • udp.port == 443:过滤 UDP 端口为 443 的数据包(QUIC 通常使用 443 端口)。

  • tcp.port == 80:过滤 TCP 端口为 80 的数据包。

  • tcp.srcport == 8080 过滤 TCP 源端口为 8080 的数据包

  • 逻辑运算符

  • &&:与(例如 quic && ip.src == 192.168.1.1)。

  • ||:或(例如 quic || tls)。

  • !:非(例如 !tcp)。

基本 TCP 过滤

  1. tcp 过滤所有 TCP 协议的数据包。
  2. tcp.port == 80 过滤 TCP 端口为 80 的数据包(HTTP 流量)。
  3. tcp.port == 443 过滤 TCP 端口为 443 的数据包(HTTPS 流量)。
  4. tcp.srcport == 8080 过滤 TCP 源端口为 8080 的数据包。
  5. tcp.dstport == 22 过滤 TCP 目标端口为 22 的数据包(SSH 流量)。

TCP 连接状态过滤

  1. tcp.flags.syn == 1 && tcp.flags.ack == 0 过滤 TCP SYN 包(第一次握手)。
  2. tcp.flags.syn == 1 && tcp.flags.ack == 1 过滤 TCP SYN-ACK 包(第二次握手)。
  3. tcp.flags.ack == 1 && tcp.flags.syn == 0 过滤 TCP ACK 包(第三次握手)。
  4. tcp.flags.fin == 1 过滤 TCP FIN 包(断开连接请求)。
  5. tcp.flags.reset == 1 过滤 TCP RST 包(重置连接)。

TCP 数据分析

  1. tcp.payload 过滤包含 TCP 负载的数据包。
  2. tcp.len == 100 过滤 TCP 负载长度为 100 字节的数据包。
  3. tcp.len > 500 过滤 TCP 负载长度大于 500 字节的数据包。

TCP 重传和异常

  1. tcp.analysis.retransmission 过滤 TCP 重传的数据包。
  2. tcp.analysis.zero_window 过滤 TCP 零窗口数据包(接收方缓冲区已满)。
  3. tcp.analysis.window_update 过滤 TCP 窗口更新的数据包。
  4. tcp.analysis.duplicate_ack 过滤 TCP 重复确认的数据包。

组合过滤

  1. tcp && ip.src == 192.168.1.1 && tcp.port == 80 过滤源 IP 为 192.168.1.1 且端口为 80 的 TCP 数据包。
  2. (tcp.flags.syn == 1 && tcp.flags.ack == 0) || (tcp.flags.fin == 1) 过滤 TCP 建立连接和断开连接的数据包。
  3. tcp.analysis.retransmission || tcp.analysis.zero_window 过滤 TCP 重传和零窗口的数据包。

保存过滤结果

  1. 在 Wireshark 中应用过滤后,点击菜单栏的 File -> Export Specified Packets
  2. 选择 All packetsDisplayed
  3. 保存为 .pcap.pcapng 文件。

示例场景

  1. tcp.port == 80 过滤所有 HTTP 流量(TCP 端口为 80)。
  2. tcp.flags.syn == 1 && tcp.flags.ack == 0 过滤 TCP 握手的 SYN 包。
  3. tcp.analysis.retransmission 过滤所有 TCP 重传的数据包。
  4. tcp && ip.src == 192.168.1.1 && ip.dst == 192.168.1.2 过滤源 IP 为 192.168.1.1 且目标 IP 为 192.168.1.2 的 TCP 数据包。
1.2. 常见分析

1,

2,

3,

4,Window Full

61622 109.780413297 10.0.0.1 10.0.0.9 openFlow 194 [TCP Window Full] Type: OFPT EXPERIMENTER

是指的发送端发送的数据已经达到的接受窗口的上限。
继而停止发送,等待新的接收窗口的通告

此时接收端返回的是TCP zero window,表示接收端窗口为0

openflow:表示这个数据包是openflow协议, "TCP Window Full"指示符通常表示接收端TCP接收缓冲区已满。这意味着接收端已经接收了所有能够接收的数据,并且其接收窗口已满,无法再接收更多的数据,直到一些数据被应用程序处理并从缓冲区中移除。 :发送端会根据接收端的接收窗口大小来控制发送的数据量。当接收端的接收窗口为零时,发送端将停止发送新的数据,直到接收端的缓冲区有更多空间。

5,Zero Window

传输层协议TCP—滑动窗口(9)_tcp zerowindow-CSDN博客

Zero Window(0窗口)指的是 TCP 发送方的滑动窗口大小为0,其本质上是因为 TCP 接收方的接收缓存已经满了,没有空间再接收数据。当处于 Zero Window 时,TCP 发送方是不能向对方发送数据的——即使发送也会被对方给怼回来

6,TCP ACKed unseen segment

7,TCP Previous segment not captured

[TCP Previous segment not captured]报文指的是在TCP发送端传输过程中,该Seq前的报文缺失了。一般在网络拥塞的情况下,造成TCP报文乱序、丢包时,会出现该标志。

需要注意的是,[TCP Previous segment not captured]解析文字是wireshark添加的标记,并非TCP报文内容。

例子:

流媒体服务器39.135.135.81,端口80,发送序号Seq=147154的包,长度Len=1360,那么下一个数据包序号应该为Seq=147154+1360=148514,可以看到客户端请求的也是Ack=148514。而服务器下一个包序号为Seq=149874,中间的包丢失了。

8,RST

TCP异常终止的情形

2. tcpdump

你可以使用 host 关键字来筛选目标IP地址。例如:

tcpdump -i eth0 dst host 10.0.0.21

这将捕获所有目标IP地址为 10.0.0.21 的数据包。

tcpdump -i eth0 icmp

筛选eth0端口的icmp包

tcpdump -nni port300781 icmp 这样才能抓到包 用-nni

tcpdump -nni any icmp 抓该节点所有端口的icmp包

tcpdump -nni port300781 icmp -w test.pacp 抓取的数据包保存到文件 **test.pcap** 中 ,导入到wireshark进行分析

还有个抓包工具tshark

21:26:49.013621 IP 172.20.20.1.15605 > 172.20.20.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48

Flags 标识符#

使用 tcpdump 抓包后,会遇到的 TCP 报文 Flags,有以下几种:

  • [S] : SYN(开始连接)
  • [P] : PSH(推送数据)
  • [F] : FIN (结束连接)
  • [R] : RST(重置连接)
  • [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)

使用 **host**基于IP过滤

  • tcpdump host 192.168.10.100
  • 根据源ip进行过滤:tcpdump -i eth2 src 192.168.10.100
  • 根据目标ip进行过滤:tcpdump -i eth2 dst 192.168.10.200

基于网段进行过滤:net

  • tcpdump net 192.168.10.0/24
  • 根据源网段进行过滤$ tcpdump src net 192.168

3. iperf

Iperf是一个网络性能测试工具。Iperf可以测试TCP和UDP带宽质量。Iperf可以测量最大TCP带宽,具有多种参数和UDP特性。

iperf -s -p 12345 -i 1 -M 1460
iperf -c 10.0.0.1 -p 9190 -i 1


网站公告

今日签到

点亮在社区的每一天
去签到