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. 第十二章 WEB渗透

    Web技术发展 • 静态WEB• 动态WEB • 应用程序 • 数据库 • 每个人看到的内容不同 • 根据用户输入返回不同结果 WEB攻击面• Network• OS• WEB Server• App ...

  2. 初学JavaScript正则表达式(五)

    范围类 [ ] 例: 'a1b1c1s1v1d1f1'.replace(/[a-z]/g,'q') //q1q1q1q1q1q1q1 将a-z范围内的字符替换为q 'a1b1c1s1v1d1f1AKS ...

  3. ACM-单向链表的操作

    数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个数然后输入成对的index和value值,以空格隔 ...

  4. 3.git 远程

    首次拉取代码的话.可以使用 git clone 这个指令 git clone https://github.com/guohongze/adminset.git 带密码方式 git clone htt ...

  5. mysql 高级查询二

    各种showshow columns from my_student;show grants for root;show aviables;show processlist;show table st ...

  6. url中的20%、22%、26%、28%、29%怎么解析还原成真实的字符

  7. eclipse 错误日志地址

    我们用eclipse插件的时候,有时插件会报错误,那么这些错误日志在哪儿放着呢? 这些错误日志的存放位置是:“你的workspace名称\.metadata\.log”,如果我们的eclipse报错了 ...

  8. 使用Python写yaml用例

    1.打开cmd,进入本机安装python的目录,执行   pip install pyyaml ,安装pyyaml第三方包. 2.在Pycharm中新建一个项目(已有的话就不需要啦) 新建yaml文件 ...

  9. 在Azure DevOps Server (TFS)的流水线中编译和测试Xcode移动应用(iPhone)

    概述 Xcode是开发基于苹果macOS系统的桌面应用和移动应用的主要IDE工具.使用Azure DevOps Server (原名TFS)系统中的pipelines流水线功能,可以方便的集成Xcod ...

  10. JAVAWeb入门之JSP基础知识

    也是到了考试周,很多课都结了,准备去学点新东西.随后就开始自学JAVAWeb. 要学习JAVAWeb,首先需下面的知识: a)      HTML/CSS/JS(前端页面),XML,JSON,vue ...