tcpdump 命令简单使用
2016-03-07 10:55
459 查看
常用命令
tcpdump -i eth1 #监视指定网络接口的数据包,不指定则默认监视第一个网络接口,一般是eth0hostname 可为主机名或者IP
tcpdump host 192.168.1.1 #获取所有对此 IP 的主机接收和发出的所有的数据包
tcpdump src host hostname #获取主机hostname发送给本机的所有数据包 (src是source的缩写)
tcpdump dst host hostname #获取本机发送给主机hostname的所有数据包 (dst是destination的缩写)
tcpdump 与 wireshark
Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在 Windows 里分析包。tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
tcp:ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
-i eth1:只抓经过接口eth1的包
-t:不显示时间戳
-s 0:抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
-c 100:只抓取100个数据包,不填默认持续不断的监听
dst port ! 22:不抓取目标端口是22的数据包
src net 192.168.1.0/24:数据包的源网络地址为192.168.1.0/24
-w ./target.cap:保存成cap文件,方便用 wireshark分析
输出信息含义
首先我们注意一下,基本上tcpdump总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数TCP 数据包
通常tcpdump对tcp数据包的显示格式如下:
src > dst: flags data-seqno ack window urgent options
src 和 dst 是源和目的IP地址以及相应的端口.
flags 标志由S(SYN), F(FIN), P(PUSH, R(RST),W(ECN CWT(未知, 需补充))或者 E(ECN-Echo(未知, 需补充))组成, 单独一个
'.'表示没有flags标识.
数据段顺序号(Data-seqno)描述了此包中数据所对应序列号空间中的一个位置(整个数据被分段, 每段有一个顺序号, 所有的顺序号构成一个序列号空间).
Ack 描述的是同一个连接,同一个方向,下一个本端应该接收的(对方应该发送的)数据片段的顺序号.
Window是本端可用的数据接收缓冲区的大小(也是对方发送数据时需根据这个大小来组织数据).
Urg(urgent) 表示数据包中有紧急的数据.
options 描述了tcp的一些选项, 这些选项都用尖括号来表示(如
<mss 1024>).
典型的三次握手流程
1. 连接发起方 发送SYN标志的数据包
2. 接收方 用带有SYN和ACK标志的数据包进行回应
3. 发起方收到接收方回应后再发送带有ACK标志的数据包进行回应
UDP 数据包
UDP 数据包的显示格式,可通过rwho这个具体应用所产生的数据包来说明:
src.port > dst.port: udp 84
其含义为:src主机上的端口port向dst主机上的端口port发送了一个udp数据包(src和dst都是指Internet地址).
这个数据包承载的用户数据为84个字节.
名称服务请求有如下的格式:
src > dst: id op? flags qtype qclass name (len)
比如有一个实际显示为:
h2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)
主机h2opolo 向helios 上运行的名称服务器查询ucbvax.berkeley.edu 的地址记录(qtype等于A).
此查询本身的id号为
'3'.
符号
'+'意味着递归查询标志被设置(dns服务器可向更高层dns服务器查询本服务器不包含的地址记录).
这个最终通过IP包发送的查询请求数据长度为37字节, 其中不包括UDP和IP协议的头数据. 因为此查询操作为默认值(normal one的理解), op字段被省略.
如果op字段没被省略, 会被显示在
'3'和
'+'之间. 同样, qclass也是默认值, C_IN, 从而也没被显示, 如果没被忽略, 她会被显示在
'A'之后.
此处省略各种包各种格式,详情请参考本文底部文章链接。
tcpdump条件表达式
表达式由一个或多个'表达元'组成(primitive, 表达元, 可理解为组成表达式的基本元素).
一个表达元通常由一个或多个修饰符(qualifiers)后跟一个名字或数字表示的id组成(qualifiers id).
有三种不同类型的修饰符: type, dir以及 proto.
由于括号是shell的特殊字符, 所以在shell脚本或终端中使用时必须对括号进行转义, 即
'('与
')'需要分别表达成
'\('与
'\)'
常用的操作符
否定操作 (
'!'或
'not')
与操作(
'&&'或
'and')
或操作(
'||'或
'or')
例如:
获取 helios 与 hot 或者与 ace 之间通信的数据包
tcpdump host helios and \( hot or ace \)
获取主机 210.27.48.1 除了和主机 210.27.48.2 之外所有主机通信的ip包
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
打印所有通过网关snup的ftp数据包 (注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析)
tcpdump 'gateway snup and (port ftp or ftp-data)'
参考文章地址:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
相关文章推荐
- Nmap扫描与Tcpdump抓包分析
- Linux tcpdump操作命令详解
- Linux tcpdump命令详解大全
- Linux tcpdump命令的用法详细解析
- Android下使用TCPDUMP实现数据抓包教程
- Android中使用tcpdump、wireshark进行抓包并分析技术介绍
- 蛋疼的移动cmnet tcp长连接
- 簡單使用 tcpdump GNU Linux 範例
- tcpdump抓取ipip报文
- 学习tcpdump
- 运维工程师必会工具(Nmap和TCPdump)
- tcpdump用法
- tcpdump详细用法--包括如何打开截获的数据包
- 查看Apache并发请求数及其TCP连接状态及用tcpdump来收集ip的访问量
- tcpdump用法详解
- tcpdump
- tcpdump详细用法
- tcpdump详解
- tcpdump用法详解
- TCPDUMP简单用法详解