如何使用 tcpdump 和 Wireshark 分析网络流量?

本文是通过学习倪朋飞老师的《Linux性能优化实战》 :怎么使用 tcpdump 和 Wireshark 分析网络流 量?

如何使用 tcpdump 和 Wireshark 分析网络流量?

tcpdump 和 Wireshark 就是最常用的网络抓包和分析工具,更是分析网络性能必不可少的利器。

  • tcpdump 仅支持命令行格式使用,常用在服务器中抓取和分析网络包。
  • Wireshark 除了可以抓包外,还提供了强大的图形界面和汇总分析工具,在分析复杂的 网络情景时,尤为简单和实用。

因而,在实际分析网络性能时,先用 tcpdump 抓包,后用 Wireshark 分析,也是一种常用的方法。

安装 tcpdump、wireshark 工具,如:

yum install -y tcpdump wireshark

由于 Wireshark 的图形界面,并不能通过 SSH 使用,所以我推荐你在本地机器(比如 Windows)中安装。你可以到 https://www.wireshark.org/ 下载并安装 Wireshark。

tcpdump

tcpdump 也是最常用的一个网络分析工具。它基于 libpcap ,利用内核中的 AF_PACKET 套接字,抓取网络接口中传输的网络包;并提供了强大的过滤规则,帮你从 大量的网络包中,挑出最想关注的信息。

tcpdump,它的基本使用方法,还是比较简单的,也就是 tcpdump [选 项] [过滤表达式]。当然,选项和表达式的外面都加了中括号,表明它们都是可选的。

查看 tcpdump 的 手册 ,以及 pcap-filter 的手册,会发现,tcpdump 提供了大量的选项以及各式各样的过滤表达式。不过不要担心,我们只需要掌握一些常用选项和过滤表达 式,就可以满足大部分场景的需要了。

# -nn ,表示不解析抓包中的域名(即不反向解析)、协议以及端口号。
# tcp port 53 ,表示只显示 TCP 协议的端口号(包括源端口和目的端口)为 443 的包。
# host 1.83.124.224 ,表示只显示 IP 地址(包括源地址和目的地址)为 1.83.124.224 的包。
# 这两个过滤条件中间的“ or ”,表示或的关系,也就是说,只要满足上面两个条件中的 任一个,就可以展示出来。
tcpdump -nn tcp port 443 or host 1.83.124.224

dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:31:45.315901 IP 1.83.124.224.56054 > 172.31.36.80.443: Flags [P.], seq 816:1595, ack 891, win 2048, options [nop,nop,TS val 2213015457 ecr 2327793360], length 779
16:31:45.318687 IP 172.31.36.80.443 > 1.83.124.224.56054: Flags [P.], seq 891:1748, ack 1595, win 297, options [nop,nop,TS val 2327818282 ecr 2213015457], length 857
16:31:45.405744 IP 1.83.124.224.56054 > 172.31.36.80.443: Flags [.], ack 1748, win 2034, options [nop,nop,TS val 2213015542 ecr 2327818282], length 0

这次输出中,前两行,表示 tcpdump 的选项以及接口的基本信息;从第三行开始,就是抓取到的网络包的输出。这些输出的格式,都是 时间戳 协议 源地址. 源端口 > 目的 地址. 目的端口 网络包详细信息(这是最基本的格式,可以通过选项增加其他字段)

为了帮我们更快上手 tcpdump 的使用,下面整理了一些最常见的用法,并且绘制成了表格,我们可以参考使用。
在这里插入图片描述
其他常用的过滤选项,也整理成了下面这个表格。
在这里插入图片描述
最后,再次强调 tcpdump 的输出格式:

  • 时间戳 协议 源地址. 源端口 > 目的地址. 目的端口 网络包详细信息

tcpdump 虽然功能强大,可是输出格式却并不直 观。特别是,当系统中网络包数比较多(比如 PPS 超过几千)的时候,你想从 tcpdump 抓取的网络包中分析问题,实在不容易。

对比之下,Wireshark 则通过图形界面,以及一系列的汇总分析工具,提供了更友好的使 用界面,让你可以用更快的速度,摆平网络性能问题。接下来,我们就详细来看看它。

Wireshark

Wireshark 也是最流行的一个网络分析工具,它最大的好处就是提供了跨平台的图形界面。跟 tcpdump 类似,Wireshark 也提供了强大的过滤规则表达式,同时,还内置了一 系列的汇总分析工具。

比如,拿刚刚的 socket 案例来说,你可以执行下面的命令,把抓取的网络包保存到 ping.pcap 文件中:

tcpdump -nn tcp port 443 or host 1.83.124.224 -w /home/socket.pcap

接着,把它拷贝到你安装有 Wireshark 的机器中,比如你可以用 scp 把它拷贝到本地来:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值