强调: 注意区分'选项参数'和'过滤条件'
本文继上篇 网卡没有开启混杂模式 tcpdump默认开启混杂模式
--no-promiscuous-mode --> 可以指定在'非混杂'模式抓包
① -vv 控制详细内容的输出
② -s
-s 长度: 可以只抓取'每个报文'的'一定'长度
常用:-s 74 --> 'tcp'
细节: 不同'tcpdump'默认抓取的长度不一样
补充: -s0 截取所有,防止'包截断'
备注:一个包由'若干个字节'组成,默认只抓取'部分'字节
-s len:设置tcpdump的数据包抓取'长度'为len
1、如果不设置默认将会是'262144'字节
2、对于要抓取的数据包'较大'时,长度设置不够可能会产生'包截断'
3、若出现包截断,'输出行'中会出现"[|proto]"的标志(proto实际会显示为协议名)
4、但是抓取len越长,包的'处理时间'越长,并且会减少tcpdump可缓存的数据包的数量
5、从而会导致数据包的丢失,所以在能抓取我们'想要的包'的'前提'下,抓取长度'越小越好'
③ -w 小写
格式: -w /tmp/test.cap 生产环境'注意'抓包'保存'的目录权限
常用: 抓包并写入'临时文件'以便下载分析 -s0 -w /tmp/$(date +'%T %F').cap
作用: 把报文'保存'到文件中,'不在'终端分析和打印
说明: '读取'后,我们'照样可以'使用'上述的过滤器语法'进行'过滤'分析
④ -c 小写
作用: 抓取'指定数量'的报文后'自动结束'抓包过程
目的: 避免'长时间'抓包把系统抓'崩溃了'(考虑系统负载),够'分析'使用即可
⑤ -C 、-W 大写
场景: 把'报文'按照指定的'大小'保存到文件中,同时限制保存文件的'个数'
案例讲解: '-C、-W、-w' 三者配合
⑥ -Q、-I 了解
⑦ -e、-p
含义: -e 用来显示'源、目标ip'的mac地址
场景: 在有'ip冲突'、'ping不通'之类与'入出mac'相关的问题时,最好使用这个选项。
解读: 如正常的ping消息,request和reply的源和目的地址是'相互互换'的
续: 若'不是',ping的'发起方'有可能显示'time out',这是用-e选项,很容易'看出问题'
补充: -i any监视所有端口的icmp消息,这时使用-e抓到包'不会显示'目的mac地址
强调: 要显示'目的mac',必须在'-i'后面使用'网卡label'或者'编号'
⑧ -X 大写 显示数据包的头部
以'16进制'和 'ASCII码 [报文解析]' 形式打印出每个包的数据(但'不包括连接层'的头部)
场景: 这在分析一些'新协议的数据包'很方便,尤其想看'应用层'的数据
⑨ -r 读取抓包文件
读取'抓包文件'并在'命令行界面'输出结果
tcpdump -nn -vv -r /tmp/test.cap | less
⑩ -t 控制时间的显示
-t: 在每行的输出中'不输出'时间
-tt: 在每行的输出中会'输出'时间戳
-ttt: 输出'每两行'打印的时间间隔(以'毫秒'为单位)
-tttt:在每行打印的时间戳'之前'添加日期的打印 --> 此种选项,输出的时间'最直观'
⑪ 补充
-F: 使用 'file 文件'作为'过滤条件表达式'的输入,此时命令行上的输入将被'忽略'
-S : 使用'绝对'序列号,而不是'默认的相对序列号'
-D : 显示所有'可用网络接口'的列表
-l : 使'标准输出'变为'缓冲行'形式
-A : 以可读的'ASCII'码形式打印 --> '常用'