阅读(226)

一:命令介绍:

tcpdump,用简单的语言概括就是dump the traffic on a network,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具,windows平台有sniffer等工具,tcpdump可以将网络中传输的数据包的“包头”全部捕获过来进程分析,其支持网络层、特定的传输协议、数据发送和接收的主机、网卡和端口的过滤,并提供and、or、not等语句进行逻辑组合捕获数据包或去掉不用的信息。

1:命令选项和捕获主机对到主机的数据包:

1.1:命令选项:

-a #将网络地址和广播地址转变成名字
-A #以ASCII格式打印出所有分组,并将链路层的头最小化
-b #数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层
-c #指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump
-d #将匹配信息包的代码以人们能够理解的汇编格式输出
-dd #将匹配信息包的代码以c语言程序段的格式输出
-ddd #将匹配信息包的代码以十进制的形式输出
-D #打印系统中所有可以监控的网络接口
-e #在输出行打印出数据链路层的头部信息
-f #将外部的Internet地址以数字的形式打印出来,即不显示主机名
-F #从指定的文件中读取表达式,忽略其他的表达式
-i #指定监听网络接口
-l #使标准输出变为缓冲形式,可以数据导出到文件
-L #列出网络接口已知的数据链路
-n #不把网络地址转换为名字
-N 不输出主机名中的域名部分,例如www.baidu.com只输出www
-nn #不进行端口名称的转换
-P #不将网络接口设置为混杂模式
-q #快速输出,即只输出较少的协议信息
-r #从指定的文件中读取数据,一般是-w保存的文件
-w #将捕获到的信息保存到文件中,且不分析和打印在屏幕
-s #从每个组中读取在开始的snaplen个字节,而不是默认的68个字节
-S #将tcp的序列号以绝对值形式输出,而不是相对值
-T #将监听到的包直接解析为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议)
-t #在输出的每一行不打印时间戳
-tt #在每一行中输出非格式化的时间戳
-ttt #输出本行和前面以后之间的时间差
-tttt #在每一行中输出data处理的默认格式的时间戳
-u #输出未解码的NFS句柄
-v #输出稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv#输出相信的保报文信息

1.1.1:#tcpdump的表达式:

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包 将会被截获,在表达式中一般如下几种类型的关键字:

a):关于数据类型的关键字:

包括host、port、net,例如host 192.168.1.1表示这是一台主机,net 192.168.0.0表示这是一个网络地址,port 22指明端口号是22,如果没有指明类型,则默认的类型是host。

b):数据传输方向的关键字:

包括src、dst、dst or src、dst and src,这些关键字指明了传输的方向,比如src 192.168.1.1说明数据包源地址是192.168.1.1,dst net 192.168.0.0指明目的网络地址是192.168.0.0,默认是监控主机对主机的src和dst,即默认监听本机和目标主机的所有数据。

c):协议关键字:

包括ip、arp、rarp、tcp、udp等,

d):其他关键字:

运算类型的:or、and、not、!

辅助功能型的:gateway、less、broadcast、greater

1.2:# tcpdump 默认捕获方式

#默认监听在第一块网卡上,监听所有经过此网卡通过的数据包

1.3:# tcpdump  -i eth0 监听指定网卡eth0的所有传输数据包:

1.4:#tcpdump -i eth0  host 192.168.56.1  #捕获主机192.168.56.1经过本机网卡eth0的所有数据包(也可以是主机名,但要求可以解析出来IP地址)

1.5:#tcpdump host 192.168.56.209  and \( 192.168.56.210 or 192.168.56.211 \)   #捕获主机 192.168.56.209 和主机192.168.56.210或192.168.56.211的所有通信数据包

1.6:#tcpdump ip  host node9 and not www.baidu.com  #捕获主机node9与其他主机之间(不包括www.baidu.com)通信的ip数据包

     1.7:#tcpdump ip host node9 and ! www.baidu.com  #捕获node9与其他所有主机的通信数据包(不包括www.baidu.com)

1.8:#tcpdump  -i eth0 src node10  #捕获源主机node10发送的所有的经过eth0网卡的所有数据包

     1.9:##tcpdump  -i eth0 dst  host  www.baidu.com  #捕获所有发送到主机www.baidu.com的数据包

1.9.1:监听主机192.168.56.1和192.168.56.210之间ip协议的80端口的且排除www.baidu.com通信的所有数据包:

# tcpdump  ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host  ! www.baidu.com  #也可以写成tcpdump  ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host  not  www.baidu.com,即not和!都是相同的取反的意思

1.9.2:捕获arp的协议数据包:

#tcpdump  arp  #监控指定主机的通信数据包与1.9.1方式相同

2:捕获指定主机和端口的数据包:

2.1:#tcpdump tcp  port 22  and host 192.168.56.210  #捕获主机192.168.56.210接收和发出的tcp协议的ssh的数据包:

2.2:# tcpdump  udp port 53  #监听本机udp的53端口的数据包,udp是dns协议的端口,这也是一个dns域名解析的完整过程

总结:tcpdump的语法类似于mysql查询语句,可以指定各种查询的条件进行组合,还可以进行与或非的条件判断进行更精确的数据搜集,语法如下:

#tcpdump  [协议类型]  [源或目标] [主机名称或IP]   [or/and/not/!条件组合] [源或目标] [主机名或IP]    [or/and/not/!条件组合] [端口] [端口号] ……  [or/and/not/!条件组合] [条件]

#tcpdump  ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host  ! www.baidu.com

作者

tcpdump命令使用详解的更多相关文章

  1. tcpdump常用参数详解

    tcpdump常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 好久没有更新我的博客了,看来自己最近还没有在放假中回过神来啊,哈哈~是不是也有小伙伴跟我一样呢?回归正题, ...

  2. Linux 执行文件查找命令 which 详解

    某个文件不知道放在哪里了,通常可以使用下面的一些命令来查找: which  查看可执行文件的位置 whereis 查看文件的位置 locate   配合数据库查看文件位置 find   实际搜寻硬盘查 ...

  3. systemctl命令用法详解

    systemctl命令用法详解系统环境:Fedora 16binpath:/bin/systemctlpackage:systemd-units systemctl enable httpd.serv ...

  4. 批处理中的echo命令图文详解

    批处理中的echo命令图文详解 1. Echo 显示当前ECHO的状态:ECHO ON 或者ECHO OFF 2. ECHO ON 将ECHO状态设置为ON,将显示命令行,也就是前面的C:\>类 ...

  5. Ubuntu kill命令用法详解

    转自:Ubuntu kill命令用法详解 1. kill   作用:根据进程号杀死进程   用法: kill [信号代码] 进程ID   root@fcola:/# ps -ef | grep sen ...

  6. install 命令用法详解

    install 命令用法详解 http://man.linuxde.net/install install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户.install命令和cp命令类似 ...

  7. dd命令使用详解

    dd命令使用详解 http://www.cnblogs.com/qq78292959/archive/2012/02/23/2364760.html 1.命令简介 dd 的主要选项: 指定数字的地方若 ...

  8. Mysql导入导出工具Mysqldump和Source命令用法详解

    Mysql本身提供了命令行导出工具Mysqldump和Mysql Source导入命令进行SQL数据导入导出工作,通过Mysql命令行导出工具Mysqldump命令能够将Mysql数据导出为文本格式( ...

  9. Mysql数据库导入命令Source详解

    Mysql数据库导入命令Source详解 几个常用用例: 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u root -p dat ...

随机推荐

  1. 动态生成的chosen实现模糊查询

    $('select', newTr).chosen({ width: '100%', search_contains: true }); //初始化复制行下拉框

  2. 在iBatis中操作Blob数据类型

    这里的Blob数据类型指的是保存了文本的blob数据类型 直接读取blob类型存储的文本,可能会出现乱码,所以需要读取完后进行手动转码 这里使用ibatis作为持久层 SELECT urlconten ...

  3. [kuangbin带你飞]专题十一 网络流个人题解(L题留坑)

    A - ACM Computer Factory 题目描述:某个工厂可以利用P个部件做一台电脑,有N个加工用的机器,但是每一个机器需要特定的部分才能加工,给你P与N,然后是N行描述机器的最大同时加工数 ...

  4. 【03】Vue 之列表渲染及条件渲染

    3.1. 条件渲染 有时候我们要根据数据的情况,决定标签是否进行显示或者有其他动作.最常见的就是,表格渲染的时候,如果表格没有数据,就显示无数据.如果有数据就显示表格数据. Vue帮我们提供了一个v- ...

  5. 只有mdf文件而没有ldf文件修复方法

    原文发布时间为:2010-09-16 -- 来源于本人的百度文章 [由搬家工具导入] 只有mdf文件而没有ldf文件修复log文件或者重新生成一个log文件的方法 EXEC   sp_attach_s ...

  6. c#中使用事务

    原文发布时间为:2009-04-14 -- 来源于本人的百度文章 [由搬家工具导入] 问:为什么要用事务? 答:事务保证要么一组操作执行成功,要么全不执行。。。。 /// <summary> ...

  7. enum枚举类型

    枚举类型的实例是常量,且它们都用大写字母表示. 简单枚举例子: public enum Spiciness { NOT, MILD, MEDIUM, HOT, FLAMING } public cla ...

  8. AC日记——[Sdoi2016]数字配对 bzoj 4514

    4514 思路: 很受伤现在,,测了那么多次不过的原因就是因为INF不够大: 解法有两种: 解法1: 把n个点按照质因数个数为奇或偶分为两个点集(很容易就可以想到): 然后,按照题目连边跑最大费用流: ...

  9. 强连通分量(Tarjan)模板

    贴模板,备忘. 模板1: #include<iostream> #include<cstring> #include<cmath> #include<cstd ...

  10. (转)十步完全理解 SQL

    十步完全理解 SQL 目录[-] 10个简单步骤,完全理解SQL 1. SQL 是一种声明式语言 2. SQL 的语法并不按照语法顺序执行 3. SQL 语言的核心是对表的引用(table refer ...