网络界面TCDUMP中文手册最详细的手册p.docx

上传人:b****3 文档编号:4145761 上传时间:2022-11-28 格式:DOCX 页数:18 大小:38.54KB
下载 相关 举报
网络界面TCDUMP中文手册最详细的手册p.docx_第1页
第1页 / 共18页
网络界面TCDUMP中文手册最详细的手册p.docx_第2页
第2页 / 共18页
网络界面TCDUMP中文手册最详细的手册p.docx_第3页
第3页 / 共18页
网络界面TCDUMP中文手册最详细的手册p.docx_第4页
第4页 / 共18页
网络界面TCDUMP中文手册最详细的手册p.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

网络界面TCDUMP中文手册最详细的手册p.docx

《网络界面TCDUMP中文手册最详细的手册p.docx》由会员分享,可在线阅读,更多相关《网络界面TCDUMP中文手册最详细的手册p.docx(18页珍藏版)》请在冰豆网上搜索。

网络界面TCDUMP中文手册最详细的手册p.docx

网络界面TCDUMP中文手册最详细的手册p

tcpdump的使用

tcpdump采用命令行方式,它的命令格式为:

tcpdump[-adeflnNOpqStvx]

[-c数量]

[-F文件名]

[-i网络接口]

[-r文件名]

[-ssnaplen]

[-T类型]

[-w文件名]

[表达式]

描述(DESCRIPTION)

Tcpdump打印出在某个网络界面上,匹配布尔表达式expression的报头.

对于SunOS的nit或bpf界面:

要运行tcpdump,你必须有/dev/nit或/dev/bpf*的读访问权限.

对于Solaris的dlpi:

你必须有网络仿真设备(networkpseudodevice),如/dev/le的读访问权限.

对于HP-UX的dlpi:

你必须是root,或者把它安装成root的设置uid程序.对于IRIX的snoop:

你必须是root,或者把它安装成root的设置uid程序.对于Linux:

你必须是root,或者把它安装成root的设置uid程序.

对于Ultrix和DigitalUNIX:

一旦超级用户使用pfconfig(8)开放了promiscuous操作模式(promiscuous-mode),任何用户都可以运行tcpdump.

对于BSD:

你必须有/dev/bpf*的读访问权限.

1.tcpdump的选项介绍

参数

介绍

-a

将网络地址和广播地址转变成名字

-d

将匹配信息包的代码以人们能够理解的汇编格式给出

-dd

将匹配信息包的代码以c语言程序段的格式给出

-ddd

将匹配信息包的代码以十进制的形式给出

-e

在输出行打印出数据链路层的头部信息

-f

将外部的Internet地址以数字的形式打印出来

-l

使标准输出变为缓冲行形式

-n

不把网络地址转换成名字

-t

在输出的每一行不打印时间戳

-v

输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息

-vv

输出详细的报文信息

-c

在收到指定的包的数目后,tcpdump就会停止

-F

从指定的文件中读取表达式,忽略其它的表达式

-i

指定监听的网络接口

-r

从指定的文件中读取包(这些包一般通过-w选项产生)

-w

直接将包写入文件中,并不分析和打印出来

-T

将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议;)

2.tcpdump的表达式介绍

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。

如果没有给出任何条件,则网络上所有的信息包将会被截获。

第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。

Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。

其他的几个关键字就是指明了监听的包的协议内容。

如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

除了这三种类型的关键字之外,其他重要的关键字如下:

gateway,broadcast,less,greater,还有三种逻辑运算,取非运算是'not''!

',与运算是'and','&&';或运算是'or','||';

这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。

(1)

(2)。

在命令行中使用括号时,一定要

(3)

(4)

3.tcpdump的输出结果介绍

下面我们介绍几种典型的tcpdump命令的输出信息

(1)数据链路层头信息

#tcpdump-ehostice

ice是一台装有linux的主机,她的MAC地址是0:

90:

27:

58:

AF:

1A

H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:

0:

20:

79:

B:

46;上一条命令的输出结果如下所示:

21:

50:

12.847509eth0<8:

0:

20:

79:

5b:

460:

90:

27:

58:

af:

1aip60:

h219.33357>ice.telnet0:

0(0)ack22535win8760(DF)

分析:

21:

50:

12是显示的时间,847509是ID号,eth0<表示从网络接口eth0接受该数据包,eth0>表示从网络接口设备发送数据包,8:

0:

20:

79:

5b:

46是主机H219的MAC地址,它表明是从源地址H219发来的数据包.0:

90:

27:

58:

af:

1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE.ip是表明该数据包是IP数据包,60是数据包的长度,h219.33357>ice.telnet表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口.ack22535表明对序列号是222535的包进行响应.win8760表明发送窗口的大小是8760.

(2)ARP包的TCPDUMP输出信息

使用命令#tcpdumparp

得到的输出结果是:

22:

32:

42.802509eth0>arpwho-hasroutetellice(0:

90:

27:

58:

af:

1a)

22:

32:

42.802902eth0

90:

27:

12:

10:

66(0:

90:

27:

58:

af:

1a)

分析:

22:

32:

42是时间戳,802509是ID号,eth0>表明从主机发出该数据包,arp表明是ARP请求包,who-hasroutetellice表明是主机ICE请求主机ROUTE的MAC地址。

0:

90:

27:

58:

af:

1a是主机ICE的MAC地址。

(3)TCP包的输出信息

用TCPDUMP捕获的TCP包的一般输出信息是:

src>dst:

flagsdata-seqnoackwindowurgentoptions

src>dst:

表明从源地址到目的地址,flags是TCP包中的标志信息,S是SYN标志,F(FIN),P(PUSH),R(RST)"."(没有标记);data-seqno是数据包中的数据的顺序号,ack是下次期望的顺序号,window是接收缓存的窗口大小,urgent表明数据包中是否有紧急指针.

Options是选项.

(4)UDP包的输出信息

用TCPDUMP捕获的UDP包的一般输出信息是:

route.port1>ice.port2:

udplenth

UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP,包的长度是lenth

TCPDUMP中文手册最详细的手册

名称(NAME)

tcpdump-转储网络上的数据流

总览(SYNOPSIS)

tcpdump[-adeflnNOpqStvx][-ccount][-Ffile]

[-iinterface][-rfile][-ssnaplen]

[-Ttype][-wfile][expression]

描述(DESCRIPTION)

Tcpdump打印出在某个网络界面上,匹配布尔表达式expression的报头.

对于SunOS的nit或bpf界面:

要运行tcpdump,你必须有/dev/nit或/dev/bpf*的读访问权限.

对于Solaris的dlpi:

你必须有网络仿真设备(networkpseudodevice),如/dev/le的读访问权限.

对于HP-UX的dlpi:

你必须是root,或者把它安装成root的设置uid程序.对于IRIX的snoop:

你必须是root,或者把它安装成root的设置uid程序.对于Linux:

你必须是root,或者把它安装成root的设置uid程序.

对于Ultrix和DigitalUNIX:

一旦超级用户使用pfconfig(8)开放了promiscuous操作模式(promiscuous-mode),任何用户都可以运行tcpdump.

对于BSD:

你必须有/dev/bpf*的读访问权限.

 

选项(OPTIONS)

-a

试着把网络和广播地址转换成名称.

-c

当收到count报文后退出.

-d

把编译好的报文匹配模板(packet-matchingcode)翻译成可读形式,传往标准输出,然后退出.

-dd

把报文匹配模板(packet-matchingcode)以C程序片断的形式输出.

-ddd

把报文匹配模板(packet-matchingcode)以十进制数形式输出(前面加上总数).

-e

每行都显示链路层报头.

-f

用数字形式显示'外部的'互联网地址,而不是字符形式(这个选项用来绕开脑壳坏光的SUN黄页服务器的问题---一般说来它翻译外部网络数字地址的时候会长期挂起).

-F

把file的内容用作过滤表达式.忽略命令行上的表达式.

-i

监听interface.如果不指定接口,tcpdump在系统的接口清单中,寻找号码最小,已经配置好的接口(loopback除外).选中的时候会中断连接.

-l

行缓冲标准输出.可用于捕捉数据的同时查看数据.例如,

``tcpdump-l|teedat''or``tcpdump-l>dat&tail-fdat''.

-n

别把地址转换成名字(就是说,主机地址,端口号等)

-N

-O

禁止运行报文匹配模板的优化器.只有当你怀疑优化器有bug时才有用.

-p

禁止把接口置成promiscuous模式.注意,接口有可能因其他原因而处于promiscuous模式;因此,'-p'不能作为`etherhost{local-hw-addr}或etherbroadcast'的简写.

-q

快速输出.显示较少的协议信息,输出行会短一点点.

-r

从file中读入数据报(文件是用-w选项创建的).如果file是``-'',就读标准输入.

-s

从每个报文中截取snaplen字节的数据,而不是缺省的68(如果是SunOS的NIT,最小值是96).68个字节适用于IP,ICMP,TCP和UDP,但是有可能截掉名字服务器和NFS报文的协议信息(见下面).输出时如果指定``[|proto]'',tcpdump可以指出那些捕捉量过小的数据报,这里的proto是截断发生处的协议层名称.注意,采用更大的捕捉范围既增加了处理报文的时间,又相应的减少了报文的缓冲数量,可能导致报文的丢失.你应该把snaplen设的尽量小,只要能够容纳你需要的协议信息就可以了.

-T

把通过"expression"挑选出来的报文解释成指定的type.目前已知的类型有:

rpc(远程过程调用RemoteProcedureCall),rtp(实时应用协议Real-TimeApplicationsprotocol),rtcp(实时应用控制协议Real-TimeApplicationscontrolprotocol),vat(可视音频工具VisualAudioTool),和wb(分布式白板distributedWhiteBoard).

-S

显示绝对的,而不是相对的TCP序列号.

-t

禁止显示时戳标志.

-tt

显示未格式化的时戳标志.

-v

(稍微多一点)繁琐的输出.例如,显示IP数据报中的生存周期和服务类型.

-vv

更繁琐的输出.例如,显示NFS应答报文的附加域.

-w

把原始报文存进file,而不是分析和显示.它们可以以后用-r选项显示.如果file是``-'',就写往标准输出.

-x

以16进制数形式显示每一个报文(去掉链路层报头后).可以显示较小的完整报文,否则只显示snaplen个字节.

expression

用来选择要转储的数据报.如果没有指定expression,就转储网络的全部报文.否则,只转储相对expression为`true'的数据报.

expression一个或多个原语(primitive)组成.原语通常由一个标识(id,名称或数字),和标识前面的一个或多个修饰子(qualifier)组成.修饰子有三种不同的类型:

type

类型修饰子指出标识名称或标识数字代表什么类型的东西.可以使用的类型有host,net和port.例如,`hostfoo',`net128.3',`port20'.如果不指定类型修饰子,就使用缺省的host.

dir

方向修饰子指出相对于标识的传输方向(数据是传入还是传出标识).可以使用的方向有src,dst,srcordst和srcanddst.例如,`srcfoo',`dstnet128.3',`srcordstportftp-data'.如果不指定方向修饰子,就使用缺省的srcordst.对于`null'链路层(就是说象slip之类的点到点协议),用inbound和outbound修饰子指定所需的传输方向.

proto

协议修饰子要求匹配指定的协议.可以使用的协议有:

ether,fddi,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp和udp.例如,`ethersrcfoo',`arpnet128.3',`tcpport21'.如果不指定协议修饰子,就使用所有符合类型的协议.例如,`srcfoo'指`(ip或arp或rarp)srcfoo'(注意后者不符合语法),`netbar'指`(ip或arp或rarp)netbar',`port53'指`(tcp或udp)port53'.

[`fddi'实际上是`ether'的别名;分析器把它们视为``用在指定网络接口上的数据链路层.''FDDI报头包含类似于以太协议的源目地址,而且通常包含类似于以太协议的报文类型,因此你可以过滤FDDI域,就象分析以太协议一样.FDDI报头也包含其他域,但是你不能在过滤器表达式里显式描述.]

 

作为上述的补充,有一些特殊的`原语'关键字,它们不同于上面的模式:

gateway,broadcast,less,greater和数学表达式.这些在后面有叙述.

更复杂的过滤器表达式可以通过and,or和not连接原语来组建.例如,`hostfooandnotportftpandnotportftp-data'.为了少敲点键,可以忽略相同的修饰子.例如,`tcpdstportftporftp-dataordomain'实际上就是`tcpdstportftportcpdstportftp-dataortcpdstportdomain'.

允许的原语有:

dsthosthost

如果报文中IP的目的地址域是host,则逻辑为真.host既可以是地址,也可以是主机名.

srchosthost

如果报文中IP的源地址域是host,则逻辑为真.

hosthost

如果报文中IP的源地址域或者目的地址域是host,则逻辑为真.上面所有的host表达式都可以加上ip,arp,或rarp关键字做前缀,就象:

iphosthost

它等价于:

etherproto\ipandhosthost

如果host是拥有多个IP地址的主机名,它的每个地址都会被查验.

etherdstehost

如果报文的以太目的地址是ehost,则逻辑为真.Ehost既可以是名字(/etc/ethers里有),也可以是数字(有关数字格式另见ethers(3N)).

ethersrcehost

如果报文的以太源地址是ehost,则逻辑为真.

etherhostehost

如果报文的以太源地址或以太目的地址是ehost,则逻辑为真.

gatewayhost

如果报文把host当做网关,则逻辑为真.也就是说,报文的以太源或目的地址是host,但是IP的源目地址都不是host.host必须是个主机名,而且必须存在/etc/hosts和/etc/ethers中.(一个等价的表达式是

etherhostehostandnothosthost

对于host/ehost,它既可以是名字,也可以是数字.)

dstnetnet

如果报文的IP目的地址属于网络号net,则逻辑为真.net既可以是名字(存在/etc/networks中),也可以是网络号.(详见networks(4)).

srcnetnet

如果报文的IP源地址属于网络号net,则逻辑为真.

netnet

如果报文的IP源地址或目的地址属于网络号net,则逻辑为真.

netnetmaskmask

如果IP地址匹配指定网络掩码(netmask)的net,则逻辑为真.本原语可以用src或dst修饰.

netnet/len

如果IP地址匹配指定网络掩码的net,则逻辑为真,掩码的有效位宽为len.本原语可以用src或dst修饰.

dstportport

如果报文是ip/tcp或ip/udp,并且目的端口是port,则逻辑为真.port是一个数字,也可以是/etc/services中说明过的名字(参看tcp(4P)和udp(4P)).如果使用名字,则检查端口号和协议.如果使用数字,或者有二义的名字,则只检查端口号(例如,dstport513将显示tcp/login的数据和udp/who的数据,而portdomain将显示tcp/domain和udp/domain的数据).

srcportport

如果报文的源端口号是port,则逻辑为真.

portport

如果报文的源端口或目的端口是port,则逻辑为真.上述的任意一个端口表达式都可以用关键字tcp或udp做前缀,就象:

tcpsrcportport

它只匹配源端口是port的TCP报文.

lesslength

如果报文的长度小于等于length,则逻辑为真.它等同于:

len<=length.

greaterlength

如果报文的长度大于等于length,则逻辑为真.它等同于:

len>=length.

ipprotoprotocol

如果报文是IP数据报(参见ip(4P)),其内容的协议类型是protocol,则逻辑为真.Protocol可以是数字,也可以是下列名称中的一个:

icmp,igrp,udp,nd,或tcp.注意这些标识符tcp,udp,和icmp也同样是关键字,所以必须用反斜杠(\)转义,在C-shell中应该是\\.

etherbroadcast

如果报文是以太广播报文,则逻辑为真.关键字ether是可选的.

ipbroadcast

如果报文是IP广播报文,则逻辑为真.Tcpdump检查全0和全1广播约定,并且检查本地的子网掩码.

ethermulticast

如果报文是以太多目传送报文(multicast),则逻辑为真.关键字ether是可选的.这实际上是`ether[0]&1!

=0'的简写.

ipmulticast

如果报文是IP多目传送报文,则逻辑为真.

etherprotoprotocol

如果报文协议属于以太类型的protocol,则逻辑为真.Protocol可以是数字,也可以是名字,如ip,arp,或rarp.注意这些标识符也是关键字,所以必须用反斜杠(\)转义.[如果是FDDI(例如,`fddiprotocolarp'),协议标识来自802.2逻辑链路控制(LLC)报头,它通常位于FDDI报头的顶层.当根据协议标识过滤报文时,Tcpdump假设所有的FDDI报文含有LLC报头,而且LLC报头用的是SNAP格式.]

decnetsrchost

如果DECNET的源地址是host,则逻辑为真,该主机地址的形式可能是``10.123'',或者是DECNET主机名.[只有配置成运行DECNET的Ultrix系统支持DECNET主机名.]

decnetdsthost

如果DECNET的目的地址是host,则逻辑为真.

decnethosthost

如果DECNET的源地址或目的地址是host,则逻辑为真.

ip,arp,rarp,decnet

是:

etherprotop

的简写形式,其中p为上述协议的一种.

lat,moprc,mopdl

是:

etherprotop

的简写形式,其中p为上述协议的一种.注意tcpdump目前不知道如何分析这些协议.

tcp,udp,icmp

是:

ipprotop

的简写形式,其中p为上述协议的一种.

exprrelopexpr

如果这个关系成立,则逻辑为真,其中relop是>,<,>=,<=,=,!

=之一,expr是数学表达式,由常整数(标准C语法形式),普通的二进制运算符[+,-,*,/,&,|],一个长度运算符,和指定的报文数据访问算符组成.要访问报文内的数据,使用下面的语法:

proto[expr:

size]

Proto是ether,fddi,ip,arp,rarp,tcp,udp,oricmp之一,同时也指出了下标操作的协议层.expr给出字节单位的偏移量,该偏移量相对于指定的协议层.Size是可选项,指出感兴趣的字节数;它可以是1,2,4,缺省为1字节.由关键字len给出的长度运算符指明报文的长度.

例如,`ether[0]&1!

=0'捕捉所有的多目传送报文.表达式`ip[0]&0xf!

=5'捕捉所有带可选域的IP报文.表达式`ip[6:

2]&0x1fff=0'只捕捉未分片和片偏移为0的数据报.这种检查隐含在tcp和udp下标操作中.例如,tcp[0]一定是TCP报头的第一个字节,而不是其中某个IP片的第一个字节.

原语可以用下述方法结合使用:

园括弧括起来的原语和操作符(园括弧在Shell中有专用,所以必须转义).

取反操作(`!

'or`not').

连结操作(`&&'or`and').

或操作(`||'or`or').

取反操作有最高优先级.或操作和连结操作有相同的优先级,运算时从左到右结合.注意连结操作需要显式的and算符,而不是并列放置.

如果给出标识符,但没给关键字,那么暗指最近使用的关键字.例如,

nothostvsandace

作为

nothostvsandhostace

的简写形式,不应该和

not(hostvsorace)

混淆.

表达式参数可以作为单个参数传给tcpdump,也可以作为复合参数,后者更方便一些.一般说来,如果表达式包含Shell元字符(metacharacter),传递单个括起来的参数要容易一些.复合参数在被解析前用空格联接一起.

 

示例(EXAMPLES)

显示所有进出sundown的报文:

tcpdumphostsundown

显示helios和主机hot,ace之间的报文传送:

tcpdumphostheliosand\(hotorace\)

显示ace和除了helios以外的所有主机的IP报文:

tcpdumpiphostaceandnothelios

显示本地的主机和Berkeley的主机之间的网络数据:

tcpdumpnetucb-ether

显示所有通过网关snup的ftp报文(注意这个表达式被单引号括起,防止shell解释园括弧):

tcpdump'gatewaysnupand(portftporftp-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1