作为 DBA,你有必要了解一下 tcpdump

栏目: 数据库 · 发布时间: 5年前

内容简介:tcpdump 是一款强大的网络抓包工具,dump the traffice on anetwork,对网络上的数据包进行截获的包分析工具。熟练掌握tcpdump 可以方便我们跟踪解决网络丢包,重传,数据库链路调用等问题。tcpdump的语法如下:

作为 DBA,你有必要了解一下 tcpdump

一 简介

tcpdump 是一款强大的网络抓包工具,dump the traffice on anetwork,对网络上的数据包进行截获的包分析工具。熟练掌握tcpdump 可以方便我们跟踪解决网络丢包,重传,数据库链路调用等问题。

二 使用tcpdump

2.1 语法

tcpdump的语法如下:

Usage: tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
        [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
        [ -i interface ] [ -j tstamptype ] [ -M secret ]
        [ -Q|-P in|out|inout ]
        [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
        [ -W filecount ] [ -y datalinktype ] [ -z command ]
        [ -Z user ] [ expression ]

我们重点说一下表达式 expression ,tcpdump通过表达式对不同类型的网络流量进行过滤,以获取到需要的信息。tcpdump主要支持3种类型的表达式:

Type(类型)选项包括 host,net和port,缺省为host

host(缺省类型): 指明一台主机,如:
host 10.215.20.13
net: 指定网络地址,net 10.215.20.0
port: 指明端口号,port 3306

Direction(方向)选项包括 src 和 dst 以及它们的组合

确定方向的关键字
dst or src(缺省值) 指定源或者目标地址是 10.215.20.13的流量包
src: src 10.9.51.13, 指定源地址是10.9.51.13
dst: dst net 172.0.0.0, 指定目标网络地址是172.0.0.0
dst and src  比如: src host 10.9.51.13   and dst host 10.215.20.13

Proto(协议)包括 tcp 、udp 、ICMP 和 ah 等

协议的关键字:缺省值是监听所有协议的信息包

ip
arp
tcp
udp
icmp
其他关键字 gateway broadcast less greater

常用表达式:多条件时可以用括号,但是要用转义

非 : ! 、not 
且 : && 、 and
或 : || 、 or
例子: 抓取所有经过 bond0,目的地址是 10.10.1.254 或 10.10.1.200 端口是 80 的 TCP 数据
# tcpdump -i bond0 '((tcp) and (port 80) and ((dst host 10.10.1.254) or (dst host
10.10.1.200)))'

2.2 参数

以一个实际例子说明

tcpdump tcp -i bond0 -tttt -s 0 -c 100 and dst port ! 22 and src net 10.10.1.0/24 -w 20190131.tcpdump

解释

(1)tcp: 协议类型,用来过滤数据报的协议类型。
(2)-i bond0 : 只抓取经过接口bond0的包
(3) -tttt : 使用格式 2019-02-02 10:37:37.120297,便于分析。
(4)-s 0: 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
(5)-c 100: 只抓取100个数据包
(6)dst port ! 22: 不抓取目标端口是22的数据包
(7)src net 10.10.1.0/24:数据包的源网络地址为10.10.1.0/24
(8)-w 20190131.tcpdump:保存成tcpdump文件中,方便使用wireshark分析抓包结果。

还有其他常用的参数:

-D:列出所有可用的网络接口
-n:禁用域名解析,让tcpdump直接输出IP地址.
-X:以16进制格式输出数据包的内容,不加该参数,会只输出iptcp/udp头部信息。
                            加上该选项会将整个数据包输出。
-vvvv  该参数其实是-v与-vvv的组合。
       -v会输出稍微详细一点的信息包括校验和ttl之类的;
       -vvv会尝试解析应用层协议,输出详细信息。二者组合就能完整的详细信息。
-A:以ASCII值显示抓到的包,比如和 MySQL 的交互时,可以通过-A查看包的文本内容.  

作为 DBA,你有必要了解一下 tcpdump

tcpdump的功能结合参数排列组合非常多,感兴趣的朋友可以自己多动手实践。毕竟,纸上来得终觉浅,绝知此事要躬行。

三 解析包

知道如何使用tcpdump命令,我们接下来分析抓到的报文。抓包命令:

tcpdump -i bond0 -n -s 0 port 3312 -c 10 -tttt

第一列是时间 2019-02-02 10:46:13.447563 

第二列 IP是网络协议名称。 

10.215.20.13.appman-server > 10.9.51.13.25569表示 数据包发送的源端十进制地址和接收端的ip地址10.9.51.13和端口号25569。 其中 > 表示数据包的流向。

Flags [P.] 包的状态标志,

S=SYN   发起连接标志。
P=PUSH  传送数据标志。
F=FIN, 关闭连接标志。
ack,   表示确认包。
RST=RESET,异常关闭连接。
.,        表示没有任何标志。

seq 3771602051:3771602105 请求同步的序列号,注意3771602105-3771602051=54 表示数据包的大小和后面的length的大小一致。

ack 1872251807 确认已经同步的序列号+1

win 1857 当前可用的窗口大小,

注释:window size:窗口大小,16bits,窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

length 54 tcp 包体的长度。

一图胜千言,tcp结构了解一下

作为 DBA,你有必要了解一下 tcpdump

图片来自 https://www.cnblogs.com/the-tops/p/6587498.html

四 案例分析

利用tcpdump和wireshark分析MySQL交互。利用如下命令收集数据包,

# tcpdump -i bond0  -n -s 0  port 3320   -tttt -A  -w  /tmp/20190202.tcpdump
tcpdump: listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes
32 packets captured
36 packets received by filter
0 packets dropped by kernel

同时在通过其他窗口执行sql,进行抓包。 

作为 DBA,你有必要了解一下 tcpdump

获取 20190202.tcpdump 使用wrieshark进行分析。忽略三次握手啥的,我们直接分析MySQL交互协议。要查看MySQL协议,要使用右键 

作为 DBA,你有必要了解一下 tcpdump

设置MySQL协议 

作为 DBA,你有必要了解一下 tcpdump

确定之后,可以看到协议那部分出现MySQL,info部分有我们比较熟悉的select ,show tables 等语句。

作为 DBA,你有必要了解一下 tcpdump

登陆数据库的 

作为 DBA,你有必要了解一下 tcpdump

执行查询的数据流, 其实我们可以通过26 ,27两个包的时间差计算 sql 的执行时间,用于性能问题分析或者故障排查。  

作为 DBA,你有必要了解一下 tcpdump

执行退出命令 exit 

作为 DBA,你有必要了解一下 tcpdump

上面的举例只是利用tcpdump简单分析MySQL的交互,实际生产中可能更复杂,出现问题的场景不一定稳定复现,要抓很多包来分析定位。所以出现问题的时候抓包和分析包是个体力活。

作为 DBA,你有必要了解一下 tcpdump

五 推荐阅读

[1] https://www.tcpdump.org/

[2] https://zhuanlan.zhihu.com/p/33580437

[3] Tcpdump在数据库中的使用实践 

[4] 通过实例学习 tcpdump 命令 Linux 学习 


以上所述就是小编给大家介绍的《作为 DBA,你有必要了解一下 tcpdump》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Designing Web Navigation

Designing Web Navigation

James Kalbach / O'Reilly Media / 2007-8-15 / USD 49.99

Thoroughly rewritten for today's web environment, this bestselling book offers a fresh look at a fundamental topic of web site development: navigation design. Amid all the changes to the Web in the pa......一起来看看 《Designing Web Navigation》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具