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

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 ]

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

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

参数说明

tcp: 协议类型,用来过滤数据报的协议类型
-i bond0: 只抓取经过接口bond0的包
-tttt: 使用格式 2019-02-02 10:37:37.120297,便于分析
-s 0: 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
-c 100: 只抓取100个数据包
dst port ! 22: 不抓取目标端口是22的数据包
src net 10.10.1.0/24: 数据包的源网络地址为10.10.1.0/24
-w 20190131.tcpdump: 保存成tcpdump文件中,方便使用wireshark分析抓包结果
-D: 列出所有可用的网络接口
-n: 禁用域名解析,让tcpdump直接输出IP地址.
-e: 每行的打印输出中将包括数据包的数据链路层头部信息
-X: 以16进制格式输出数据包的内容,不加该参数,会只输出iptcp/udp头部信息。加上该选项会将整个数据包输出。-vvvv 该参数其实是-v与-vvv的组合。-v会输出稍微详细一点的信息包括校验和ttl之类的;-vvv会尝试解析应用层协议,输出详细信息。二者组合就能完整的详细信息。-A:以ASCII值显示抓到的包,比如和MySQL的交互时,可以通过-A查看包的文本内容.

例子

# 监听指定网络接口的数据包
tcpdump -i eth0 #截获所有的主机收到和发出的所有数据包
tcpdump host 192.168.1.134 #截获主机 192.168.0.212 和主机 192.168.1.134 或 192.168.1.135 的通信
tcpdump host 192.168.0.212 and \(192.168.1.134 or 192.168.1.135 \) #获取主机 192.168.0.212 除了和主机 192.168.1.134 之外所有主机通信的ip包,使用命令:
tcpdump ip host 192.168.0.212 and ! 192.168.1.134 #截获主机hostname发送的所有数据
tcpdump -i eth0 src host 127.0.0.1 #监视所有送到主机hostname的数据包
tcpdump -i eth0 dst host 127.0.0.1 #获取主机192.168.1.134接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 and host 192.168.1.134 #对本机的udp 123 端口进行监视 123 为ntp的服务端口
tcpdump udp port 123 # 抓取经过所有eth0,且数据包源网络地址为192.168.1.0/24,不显示时间戳,除了 22 端口,保存为 target.cap
tcpdump tcp -i eth0 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

eg:

[root@localhost ~]# tcpdump -n -s 0 port 80 -c 10 -tttt
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
2019-10-30 11:53:41.838176 IP 192.168.2.177.50241 > 192.168.0.216.http: Flags [.], seq 4068299219:4068299220, ack 755692383, win 8212, length 1: HTTP
第一列是时间: 2019-10-30 11:53:41.838176
第二列 IP是网络协议名称
192.168.2.177.50241 > 192.168.0.216.http 表示 数据包发送的源端十进制地址和接收端的ip地址192.168.2.177和端口号50241。其中 > 表示数据包的流向。
Flags [.] 包的状态标志:S=SYN 发起连接标志;P=PUSH 传送数据标志;F=FIN, 关闭连接标志;ack, 表示确认包。RST=RESET,异常关闭连接;.,表示没有任何标志。
seq 4068299219:4068299220 请求同步的序列号,注意 4068299220 - 4068299219 = 1 表示数据包的大小和后面的length的大小一致
ack 755692383 确认已经同步的序列号+1
win 8212 当前可用的窗口大小
length 1: HTTP 包体的长度

TCP 结构

tcpdump 介绍的更多相关文章

  1. Tcpdump的详细用法

    1. TCPDump介绍 TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来 ...

  2. Wireshark和TcpDump抓包分析心得

    Wireshark和 TcpDump抓包分析心得  1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Window ...

  3. android下tcpdump抓包

    tcpdump是最快捷方便的抓包方式,还可以加深对网络协议的理解.android下可以通过如下方式抓包: 1 Android上启动tcpdump Android设备可以把tcpdump的可执行文件上传 ...

  4. tcpdump 使用

    例子: 首先切换到root用户 tcpdump -w  aaa.cap   -i eth7   -nn -x  'port  9999'  -c  1 以例子说明参数: -w:输出到文件aaa.cap ...

  5. 转 Wireshark和TcpDump抓包分析心得

    1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话 ...

  6. (转) tcpdump参数解析及使用详解

    tcpdump介绍 原文:http://blog.csdn.net/hzhsan/article/details/43445787 tcpdump 是一个运行在命令行下的抓包工具.它允许用户拦截和显示 ...

  7. tcpdump抓包工具

    tcpdump抓包工具 一:TCPDump介绍 ​ TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and ...

  8. tcpdump截帧工具使用

    一.tcpdump介绍 ​ tcpdump是Linux下功能强大的截帧工具,相当于windows下的wireshark一下,只是操作方式是命令行的,需要熟悉Linux命令行操作. ​ 常用的Linux ...

  9. 【Linux】tcpdump

    tcpdump介绍 tcpdump 是一个运行在命令行下的抓包工具.它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包.tcpdump 适用于 大多数的类Unix系统操作系统 ...

随机推荐

  1. Multi-touch (MT) Protocol 小结

    1, 两种多点触摸协议: A类: 处理无关联的接触: 用于直接发送原始数据: B类: 处理跟踪识别类的接触: 通过事件slot发送相关联的独立接触更新. 2, 触摸协议的使用: A类协议: A类协议在 ...

  2. [日常] lscpu查看cpu的详细信息

    查看自己电脑的cpu的详细信息 root@tao-PC:/home/tao# lscpu Architecture: x86_64 CPU op-mode(s): -bit, -bit Byte Or ...

  3. 5-1可视化库Seabon-整体布局风格设置

    In [1]: import seaborn as sns import numpy as np import matplotlib as mpl import matplotlib.pyplot a ...

  4. Pwn-pwn-100

    题目地址http://www.whalectf.xin/files/2779dd8a2562a1d5653c5c6af9791711/binary_100 32位 ,没有防护 上IDA 很简单的栈溢出 ...

  5. pycharm安装pymysql包

    1.为什么? 每个程序连接数据库,python开发2.*版本可以直接使用MySQL,python3.*版本需要下载使用PyMySQL包才能连接数据库... 2. 怎么做? 2.1. 更改源:pycha ...

  6. django获取某一个字段的列表 values values_list flat=true

    1.values() print(Question.objects.values('title')) #得到的是一个字典 <QuestionQuerySet [{'title': '查询优化之s ...

  7. 肖哥讲jquery:

    jquery 是一个模块 一个库 js封装的一个库 导入jq  <script src="jquery.js"></script>   <script ...

  8. CF455C Civilization 树的直径

    问题描述 LG-CF455C 题解 首先,题目给出了 \(m\) 条边,对这 \(n\) 个点, \(m\) 条边组成的森林,跑出每棵树的直径,同时使用并查集维护树的连通性. 考虑合并两棵树的情况:设 ...

  9. Python 基础排序算法

    冒泡排序(bubble sort) 思路 以升序为例: 从第一个数开始向后两两对比,将大的数一直向后移动,直至最大的数移到最后,再找第二大的数 最好情况:O(n) 一般情况:O(n^2) 最坏情况:O ...

  10. JDK的小Bug你了解么?

    ​用了这么长时间的JDK了,有没有老铁发现JDK的bug呢?从最早版本的JDK1.2到现在普及开的JDK1.8以来,JAVA经历了这么多年的风风雨雨,依然坚持在一线上,是不是感觉很神奇,但是,有没有多 ...