您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏平台 > 无效信元 >

Linux tcpdump命令具体解释

发布时间:2019-06-10 19:38 来源:未知 编辑:admin

  用简单的话来定义tcpdump,就是:dump the traffic on a network,依据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump能够将网络中传送的数据包的“头”全然截获下来提供分析。它支持针对网络层、协议、主机、网络或port的过滤。并提供and、or、not等逻辑语句来帮助你去掉没用的信息。

  一般情况下,直接启动tcpdump将监视第一个网络接口上全部流过的数据包。

  假设不指定网卡,默认tcpdump仅仅会监视第一个网络接口,通常是eth0,以下的样例都没有指定网络接口。

  也能够指定ip,比如截获全部210.27.48.1的主机收到的和发出的全部的数据包

  打印ace与不论什么其它主机之间通信的IP 数据包, 但不包含与helios之间的数据包.

  假设想要获取主机210.27.48.1除了和主机210.27.48.2之外全部主机通信的ip包。使用命令:

  假设想要获取主机210.27.48.1接收或发出的telnet包,使用例如以下命令

  打印本地主机与Berkeley网络上的主机之间的全部通信数据包(nt: ucb-ether, 此处可理解为Berkeley网络的网络地址,此表达式最原始的含义可表达为: 打印网络地址为ucb-ether的全部数据包)

  打印全部通过网关snup的ftp数据包(注意, 表达式被单引號括起来了, 这能够防止shell对当中的括号进行错误解析)

  (假设本地网络通过网关连到了还有一网络, 则还有一网络并不能算作本地网络.(nt: 此句翻译曲折,需补充).localnet 实际使用时要真正替换成本地网络的名字)

  打印TCP会话中的的開始和结束数据包, 而且数据包的源或目的不是本地网络上的主机.(nt: localnet, 实际使用时要真正替换成本地网络的名字))

  打印全部源或目的port是80, 网络层协议为IPv4, 而且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包.(ipv6的版本号的表达式可做练习)

  打印全部IP层广播或多播的数据包, 但不是物理以太网层的广播或多播数据报

  打印除echo request或者echo reply类型以外的ICMP数据包( 比方,须要打印全部非ping 程序产生的数据包时可用到此表达式 .

  Wireshark(曾经是ethereal)是Windows下非常easy易用的抓包工具。但在Linux下非常难找到一个好用的图形化抓包工具。

  tcpdump 对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障。通常的解决的方法是先使用带-w參数的tcpdump 截获数据并保存到文件里,然后再使用其它程序(如Wireshark)进行解码分析。

  首先我们注意一下。基本上tcpdump总的的输出式为:系统时间 来源主机.port 目标主机.port 数据包參数

  tcpdump 的输出式与协议有关.下面简要描写叙述了大部分经常使用的式及相关样例.

  控制对包中其它域的解析). 一般的包(比方那些IP datagrams)都是带有async(异步标志)的数据包,而且有取0到7的优先级;

  比方 async4就代表此包为异步数据包。而且优先级别为4. 通常觉得,这些包们会内含一个 LLC包(逻辑链路控制包); 这时,假设此包

  不是一个ISO datagram或所谓的SNAP包。其LLC头部将会被打印(nt:应该是指此包内含的 LLC包的包头).

  意译为:源地址被追踪的数据包,详细含义未知,需补充), 其包的源路由信息总会被打印.

  包头中包括的全部地址, 以及包的长度.与FDDI网络类, 此数据包通常内含LLC数据包.

  对于SLIP网络(nt:SLIP links, 可理解为一个网络, 即通过串行线路建立的连接, 而一个简单的连接也可看成一个网络),

  类型分为ip, utcp以及ctcp(nt:未知, 需补充). 对于ip包,连接信息将不被打印(nt:SLIP连接上,ip包的连接信息可能无用或未定义.

  reconfirm).对于TCP数据包, 连接标识紧接着类型表示被打印. 假设此包被压缩, 其被编码过的头部将被打印.

  对于非特殊的压缩包,0个或很多其它的改变将会被打印.改变被打印时式例如以下:

  比方, 下面显示了对一个外发压缩TCP数据包的打印, 这个数据包隐含一个连接标识(connection identifier); 应答号添加了6,

  顺序号添加了49, 包ID号添加了6; 包数据长度为3字节(octect), 压缩头部为6字节.(nt:如此看来这应该不是一个特殊的压缩数据包).

  第一行表示:rtsg发送了一个arp数据包(nt:向全网段发送,arp数据包)以询问csam的以太网地址

  Csam(nt:可从下文看出来, 是Csam)以她自己的以太网地址做了回应(在这个样例中, 以太网地址以大写的名字标识, 而internet

  假设使用tcpdump -n, 能够清晰看到以太网以及ip地址而不是名字标识:

  假设我们使用tcpdump -e, 则能够清晰的看到第一个数据包是全网广播的, 而第二个数据包是点对点的:

  (注意:下面将会假定你对 RFC-793所描写叙述的TCP熟悉. 假设不熟, 下面描写叙述以及tcpdump程序可能对你帮助不大.(nt:警告可忽略,

  单独一个.表示没有flags标识. 数据段顺序号(Data-seqno)描写叙述了此包中数据所相应序列号空间中的一个位置(nt:整个数据被分段,

  每段有一个顺序号, 全部的顺序号构成一个序列号空间)(可參考下面样例). Ack 描写叙述的是同一个连接,同一个方向,下一个本端应该接收的

  (对方应该发送的)数据片段的顺序号. Window是本端可用的数据接收缓冲区的大小(也是对方发送数据时需依据这个大小来组织数据).

  src, dst 和 flags 这三个域总是会被显示. 其它域的显示与否依赖于tcp协议头里的信息.

  口是分别的两个空间, 尽管取范围一致). S表示设置了SYN标志. 包的顺序号是768512, 而且没有包括数据.(表示式

  用户数据.) 没有捎带应答(nt:从下文来看。第二行才是有捎带应答的数据包), 可用的接受窗体的大小为4096bytes, 而且请求端(rtsg)

  的最大可接受的数据段大小是1024字节(nt:这个信息作为请求发向应答端csam, 以便两方进一步的协商).

  rtsg 相同针对csam的SYN数据包回复了一ACK数据包作为应答. .的含义就是此包中没有标志被设置. 因为此应答包中不含有数据, 所以

  包中也没有数据段序列号. 提醒! 此ACK数据包的顺序号仅仅是一个小整数1. 有例如以下解释:tcpdump对于一个tcp连接上的会话, 仅仅打印会话两端的

  初始数据包的序列号,其后对应数据包仅仅打印出与初始包序列号的差异.即初始序列号之后的序列号,可被看作此会话上当前所传数据片段在整个

  要传输的数据中的相对字节位置(nt:两方的第一个位置都是1, 即相对字节的開始编号).-S将覆盖这个功能,

  第六行的含义为:rtsg 向 csam发送了19字节的数据(字节的编号为2到20,传送方向为rtsg到csam). 包中设置了PUSH标志. 在第7行,

  csam 喊到, 她已经从rtsg中收到了21下面的字节, 但不包含21编号的字节. 这些字节存放在csam的socket的接收缓冲中, 对应地,

  csam的接收缓冲窗体大小会降低19字节(nt:能够从第5行和第7行win属性的变化看出来). csam在第7行这个包中也向rtsg发送了一个

  字节. 在第8行和第9行, csam 继续向rtsg 分别发送了两个仅仅包括一个字节的数据包, 而且这个数据包带PUSH标志.

  假设所抓到的tcp包(nt:即这里的snapshot)太小了,以至tcpdump无法完整得到其头部数据, 这时, tcpdump会尽量解析这个不完整的头,

  并把剩下不能解析的部分显示为[tcp]. 假设头部含有虚假的属性信息(比方其长度属性事实上比头部实际长度长或短), tcpdump会为该头部

  显示[bad opt]. 假设头部的长度告诉我们某些选项(nt rt:从下文来看, 指tcp包的头部中针对ip包的一些选项, 回头再翻)会在此包中,

  (nt rt:从表达方式上可判断:这8个位是用或的方式来组合的, 可回头再翻)

  现如果我们想要监控建立一个TCP连接整个过程中所产生的数据包. 可回顾例如以下:TCP使用3次握手协议来建立一个新的连接; 其与此三次握手

  一个TCP头部,在不包括选项数据的情况下通常占用20个字节(nt rt:options 理解为选项数据。需回译). 第一行包括0到3编号的字节,

  假设编号从0開始算, TCP控制标志位于13字节(nt:第四行左半部分).

  这里有我们感兴趣的控制标志位. 从右往左这些位被依次编号为0到7, 从而 PSH位在3号, 而URG位在5号.

  提醒一下自己, 我们仅仅是要得到包括SYN标志的数据包. 让我们看看在一个包的包头中, 假设SYN位被设置, 究竟

  如果编号为13的字节是一个8位的无符号字符型,而且依照网络字节号排序(nt:对于一个字节来说。网络字节序等同于主机字节序), 其二进制

  接近目标了, 由于我们已经知道, 假设数据包头部中的SYN被置位, 那么头部中的第13个字节的为2(nt: 依照网络序, 即大头方式, 最重要的字节

  在前面(在前面,即该字节实际内存地址比較小, 最重要的字节,指数学表示中数的高位, 如356中的3) ).

  从而我们能够把此关系式当作tcpdump的过滤条件, 目标就是监控仅仅含有SYN标志的数据包:

  如今, 如果我们须要抓取带SYN标志的数据包, 而忽略它是否包括其它标志.(nt:仅仅要带SYN就是我们想要的). 让我们来看看当一个含有

  如今, 却不能仅仅用tcp[13] 18作为tcpdump的过滤表达式, 由于这将导致仅仅选择含有SYN-ACK标志的数据包, 其它的都被丢弃.

  提醒一下自己, 我们的目标是: 仅仅要包的SYN标志被设置即可, 其它的标志我们不理会.

  为了达到我们的目标, 我们须要把13号字节的二进制与其它的一个数做AND操作(nt:逻辑与)来得到SYN比特位的. 目标是:仅仅要SYN 被设置

  我们能够发现, 无论包的ACK或其它标志是否被设置, 以上的AND操作都会给我们同样的, 其10进制表达就是2(2进制表达就是00000010).

  从而我们知道, 对于带有SYN标志的数据包, 下面的表达式的结果总是真(true):

  注意, 单引號或反斜杆(nt: 这里用的是单引號)不能省略, 这能够防止shell对&的解释或替换.

  UDP 数据包的显示式,可通过rwho这个详细应用所产生的数据包来说明:

  意味着递归查询标志被设置(nt: dnsserver可向更高层dnsserver查询本server不包括的地址记录). 这个终于通过IP包发送的查询请求

  异常检查会在方括中显示出附加的域:假设一个查询同一时候包括一个回应(nt: 可理解为, 对之前其它一个请求的回应), 而且此回应包括权威或附加记录段,

  对名称服务应答的数据包。tcpdump会有例如以下的显示式

  flag字段还有可能出现其它一些字符, 比方-(nt: 表示可递归地查询, 即RA 标志没有被设置), (nt: 表示被截断的消息, 即TC 标志

  被置位). 假设应答(nt ct: 可理解为, 包括名称服务应答的UDP数据包, tcpdump知道这类数据包该如何解析其数据)的question段一个条

  要注意的是:名称server的请求和应答数据量比較大, 而默认的68字节的抓取长度(nt: snaplen, 可理解为tcpdump的一个设置选项)可能不足以抓取

  tcpdump默认仅仅依照最简约模式对对应数据包进行解码, 假设我们想要详尽的解码信息能够使用其-v 启动选现. 要注意的是, -v 会产生很具体的信息,

  比方对单一的一个SMB数据包, 将产生一屏幕或很多其它的信息, 所以此选项, 确有须要才使用.

  请求id号, 而不是源port号). 此请求数据为112字节, 当中不包含UDP和IP头部的长度. 操作类型为readlink(nt: 即此操作为读符号链接操作),

  操作參数为fh 21,24/10.73165(nt: 可按实际执行环境, 解析例如以下, fd 表示描写叙述的为文件句柄, 21,24 表示此句柄所相应设

  备的主/从设备号对, 10表示此句柄所相应的i节点编号(nt:每一个文件都会在操作系统中相应一个i节点, 限于unix类系统中),

  73165是一个编号(nt: 可理解为标识此请求的一个随机数, 详细含义需补充)).

  第二行中, wrl 做了ok的回应, 而且在results 字段中返回了sushi想要读的符号连接的真实文件夹(nt: 即sushi要求读的符号连接事实上是一个文件夹).

  第三行表明: sushi 再次请求 wrl 在fh 9,74/4096.6878所描写叙述的文件夹中查找xcolors文件. 须要注意的是, 每行所显示的数据含义依赖于当中op字段的

  假设tcpdump 的-v选项(具体打印选项) 被设置, 附加的信息将被显示. 比方:

  Wrl 回应读取成功; 因为第二行仅仅是回应请求的开头片段, 所以仅仅包括1472字节(其它的数据将在接着的reply片段中到来, 但这些数据包不会再有NFS

  头, 甚至UDP头信息也为空(nt: 源和目的应该要有), 这将导致这些片段不能满足过滤条件, 从而没有被打印). -v 选项除了显示文件数据信息, 还会显示

  假设-v 标志被多次反复给出(nt: 如-vv)。 tcpdump会显示更加具体的信息.

  必需要注意的是, NFS 请求包中数据比較多, 假设tcpdump 的snaplen(nt: 抓取长度) 取太短将不能显示其具体信息. 可使用

  交换序号(nt: transaction ID)与对应请求包相匹配. 这可能产生一个问题, 假设回应包来得太迟, 超出tcpdump 对对应请求包的跟踪范围,

  这是一个对于文件服务的请求数据包(nt: RX data packet, 发送数据包 , 可理解为发送包过去, 从而请求对方的服务), 这也是一个RPC

  主机pike 对此rename操作的RPC请求作了回应(回应表示rename操作成功, 由于回应的是包括数据内容的包而不是异常包).

  一般来说, 全部的AFS RPC请求被显示时, 会被冠以一个名字(nt: 即decode, 解码), 这个名字往往就是RPC请求的操作名.

  而且, 这些RPC请求的部分參数在显示时, 也会被冠以一个名字(nt rt: 即decode, 解码, 一般来说也是取名也非常直接, 比方,

  这样的显示式的设计初衷为一看就懂, 但对于不熟悉AFS 和 RX 工作原理的人可能不是非常

  假设 -v(具体)标志被反复给出(nt: 如-vv), tcpdump 会打印出确认包(nt: 可理解为, 与应答包有差别的包)以及附加头部信息

  (nt: 可理解为, 全部包, 而不不过确认包的附加头部信息), 比方, RX call ID(请求包中请求调用的ID),

  serial number(nt rt: 可理解为与包中数据相关的还有一个顺信号, 详细含义需补充), 请求包的标识. (nt: 接下来一段为反复描写叙述,

  所以略去了), 此外确认包中的MTU协商信息也会被打印出来(nt: 确认包为相对于请求包的确认包, Maximum Transmission Unit, 最大传输单元).

  关键信息的一些数据包), 错误号不会被打印, 由于对于Ubik 协议, 异常数据包不是表示错误, 相反却是表示一种肯定应答(nt: 即, yes vote).

  (服务索引) 来匹配收到的回应包. 假设回应包不是针对近期一段时间内的请求包, tcpdump将无法解析该包.

  相当于支持KIP AppleTalk协议栈的网络层协议, 而DDP 本身又是通过UDP来传输的,

  即在UDP 上实现的用于其它网络的网络层。KIP AppleTalk是苹果公司开发的整套网络协议栈).

  AppleTalk DDP 数据包被封装在UDP数据包中, 其解封装(nt: 相当于解码)和对应信息的转储也遵循DDP 包规则.

  头两行表示有两个AppleTalk 网络. 第三行给出了特定网络上的主机(一个主机会用3个字节来标识,

  而一个网络的标识通常仅仅有两个字节, 这也是两者标识的主要差别)(nt: 1.254.110 可理解为ether网络上的ace主机).

  标识与其相应的名字之间必需要用空白分开. 除了以上内容, /etc/atalk.names中还包括空行以及凝视行(以#開始的行).

  (假设/etc/atalk.names 文件不存在, 或者没有对应AppleTalk 主机/网络的条目, 数据包的网络地址将以数字形式显示).

  第二行与第一行类, 仅仅是源的所有地址可用office进行标识.

  在AppleTalk 网络中假设地址中没有节点, 则表示广播地址, 从而节点标识和网络标识最好在/etc/atalk.names有所差别.

  nt: 否则一个标识x.port 无法确定x是指一个网络上全部主机的port口还是指定主机x的port口).

  假设此协议没有注冊一个通用名字, 仅仅会打印其协议号)以及数据包的大小.

  此处名称可理解为一个资源的名称, 比方打印机). 此查询请求的序列号为190.

  为RM1140, 而且在port250上提供改资源的服务. 此回应的序列号为190, 相应之前查询的序列号.

  为techpit, 而且在port186上提供改资源的服务. 此回应的序列号为190, 相应之前查询的序列号.

  回应8个数据包(这8个数据包的顺序号为0-7(nt: 顺序号与会话编号不同, 后者为一次完整传输的编号,

  前者为该传输中每一个数据包的编号. transaction, 会话, 通常也被叫做传输)). 行尾的16进制数字表示

  该请求包中userdata域的(nt: 从下文来看, 这并没有把全部用户数据都打印出来 ).

  Helios 回应了8个512字节的数据包. 跟在会线)后的数字表示该数据包在该会话中的顺序号.

  括号里的数字表示该数据包中数据的大小, 这不包含atp 的头部. 在顺序号为7数据包(第8行)外带了一个*号,

  接下来的第9行表示, Jssmag.209 又向helios 提出了请求: 顺序号为3以及5的数据包请又一次传送. Helios 收到这个

  请求后又一次发送了这个两个数据包, jssmag.209 再次收到这两个数据包之后, 主动结束(release)了此会话.

  在最后一行, jssmag.209 向helios 发送了開始下一次会话的请求包. 请求包中的*表示该包的XO 标志没有被设置.

  (nt: XO, exactly once, 可理解为在该会话中, 数据包在接受方仅仅被精确地处理一次, 就算对方反复传送了该数据包,

  碎片IP数据包(nt: 即一个大的IP数据包破碎后生成的小IP数据包)有例如以下两种显示式.

  (第一种式表示, 此碎片之后还有兴许碎片. 另外一种式表示, 此碎片为最后一个碎片.)

  id 表示破碎编号(nt: 从下文来看, 会为每一个要破碎的大IP包分配一个破碎编号, 以便区分每一个小碎片是否由同一数据包破碎而来).

  size 表示此碎片的大小 , 不包括碎片头部数据. offset表示此碎片所含数据在原始整个IP包中的偏移((nt: 从下文来看,

  一个IP数据包是作为一个总体被破碎的, 包含头和数据, 而不仅仅是数据被切割).

  每一个碎片都会使tcpdump产生对应的输出打印. 第一个碎片包括了高层协议的头数据(nt:从下文来看, 被破碎IP数据包中对应tcp头以及

  IP头都放在了第一个碎片中 ), 从而tcpdump会针对第一个碎片显示这些信息, 并接着显示此碎片本身的信息. 其后的一些碎片并不包括

  高层协议头信息, 从而仅仅会在显示源和目的之后显示碎片本身的信息. 下面有一个样例: 这是一个从arizona.edu 到lbl-rtsg.arpa

  这是由于TCP协议信息都放到了第一个碎片中, 当显示第二个碎片时, 我们无法知道此碎片所相应TCP包的顺序号.

  第二, 从第一行的信息中, 能够发现arizona须要向rtsg发送308字节的用户数据, 而事实是, 对应IP包经破碎后会总共产生512字节

  数据(第一个碎片包括308字节的数据, 第二个碎片包括204个字节的数据, 这超过了308字节). 假设你在查找数据包的顺序号空间中的

  一些空洞(nt: hole,空洞, 指数据包之间的顺序号没有上下衔接上), 512这个数据就足够使你迷茫一阵(nt: 事实上仅仅要关注308即可,

  一个数据包(nt rt: 指IP数据包)假设带有非IP破碎标志, 则显示时会在最后显示(DF).(nt: 意味着此IP包没有被破碎过).

  此时间戳的精度与内核时间精度一致,反映的是内核第一次看到相应数据包的时间(nt: saw, 就可以对该数据包进行操作).

  而数据包从物理线路传递到内核的时间, 以及内核花费在此包上的中断处理时间都没有算进来.

  该表达式用于决定哪些数据包将被打印. 假设不给定条件表达式, 网络上全部被捕获的包都会被打印,否则, 仅仅有满足条件表达式的数据包被打印.(nt: all packets, 可理解为, 全部被指定接口捕获的数据包).

  表达式由一个或多个表达元组成(nt: primitive, 表达元, 可理解为组成表达式的基本元素). 一个表达元通常由一个或多个修饰符(qualifiers)后跟一个名字或数字表示的id组成(nt: 即, qualifiers id).有三种不同类型的修饰符:type, dir以及 proto.

  除以上所描写叙述的表达元(primitive), 还有其它形式的表达元, 而且与上述表达元式不同. 比方: gateway, broadcast, less, greater以及算术表达式(nt: 当中每个都算一种新的表达元). 以下将会对这些表达元进行说明.

  借助括号以及对应操作符,可把表达元组合在一起使用(因为括号是shell的特殊字符, 所以在shell脚本或终端中使用时必须对括号进行转义, 即( 与)须要分别表达成\( 与 \)).

  否定操作符的优先级别最高. 与操作和或操作优先级别同样, 而且二者的结合顺序是从左到右. 要注意的是, 表达与操作时,

  须要显式写出and操作符, 而不仅仅是把前后表达元并列放置(nt: 二者中间的and 操作符不可省略).

  假设一个标识符前没有keyword, 则表达式的解析过程中近期用过的keyword(往往也是从左往右距离标识符近期的keyword)将被使用.比方,

  而不是not (host vs or ace).(nt: 前两者表示, 所需数据包不是来自或发往host vs, 而是来自或发往ace.而后者表示数据包仅仅要不是来自或发往vs或ac都符合要求)

  整个条件表达式能够被当作一个单独的字符串參数也能够被当作空切割的多个參数传入tcpdump, 后者更方便些. 通常, 假设表达式中包括元字符(nt: 如正則表達式中的*, .以及shell中的(等字符), 不妨使用单独字符串的方式传入. 这时,整个表达式须要被单引號括起来. 多參数的传入方式中, 全部參数终于还是被空串联在一起, 作为一个字符串被解析.

  (nt: True 在下面的描写叙述中含义为: 对应条件表达式中仅仅含有下面所列的一个特定表达元, 此时表达式为真, 即条件得到满足)

  假设IPv4/v6 数据包的目的域是host, 则与此相应的条件表达式为真.host 能够是一个ip地址, 也能够是一个主机名.

  假设IPv4/v6 数据包的源域是host, 则与此相应的条件表达式为真.

  假设host 是一个拥有多个IP 的主机, 那么不论什么一个地址都会用于包的匹配(nt: 即发向host 的数据包的目的地址能够是这几个IP中的不论什么一个, 从host 接收的数据包的源地址也能够是这几个IP中的不论什么一个).

  假设数据包的以太网源地址或目标地址是ehost, 则与此相应的条件表达式为真.

  假设数据包的目标地址(IPv4或IPv6式)的网络号字段为 net, 则与此相应的条件表达式为真.

  net 能够是从网络数据库文件/etc/networks 中的名字, 也能够是一个数字形式的网络编号.

  对于IPv6 的地址式, 网络编号必须所有写出来(8个部分必须所有写出来); 对应网络掩码为:

  ff:ff:ff:ff:ff:ff:ff:ff, 所以IPv6 的网络匹配是真正的host方式的匹配(nt rt rc:地址的8个部分都会用到,是否不属于网络的字节填写0, 需接下来补充), 但同一时候须要一个网络掩码长度參数来详细指定前面多少字节为网络掩码(nt: 可通过以下的net net/len 来指定)

  假设数据包的源地址(IPv4或IPv6式)的网络号字段为 net, 则与此相应的条件表达式为真.

  假设数据包的源或目的地址(IPv4或IPv6式)的网络号字段为 net, 则与此相应的条件表达式为真.

  假设数据包的源或目的地址(IPv4或IPv6式)的网络编号字段的比特数与len同样, 则与此相应的条件表达式为真.此选项之前还能够配合src和dst来匹配源网络地址或目标网络地址(nt rt tt: srcnet net/24, 表示须要匹配源地址的网络编号有24位的数据包).

  假设数据包的源端口属于port1到port2这个端口范围(包含 port1, port2), 则与此相应的条件表达式为真.

  假设数据包的源端口或目的端口属于port1到port2这个端口范围(包含 port1, port2), 则与此相应的条件表达式为真.

  假设数据包为ipv4数据包而且其协议类型为protocol, 则与此相应的条件表达式为真.

  假设数据包为ipv6数据包而且其协议类型为protocol, 则与此相应的条件表达式为真.

  假设数据包为ipv6数据包而且其协议链中包括类型为protocol协议头, 则与此相应的条件表达式为线 protochain

  将匹配其协议头链中拥有TCP 协议头的IPv6数据包.此数据包的IPv6头和TCP头之间可能还会包括验证头, 路由头, 或者逐跳寻径选项头.

  由此所触发的对应BPF(Berkeley Packets Filter, 可理解为, 在数据链路层提供数据包过滤的一种机制)代码比較繁琐,

  而且BPF优化代码也未能照应到此部分, 从而此选项所触发的包匹配可能会比較慢.

  假设数据包是以太网广播数据包, 则与此相应的条件表达式为真. ether keyword是可选的.

  假设数据包是IPv4广播数据包, 则与此相应的条件表达式为真. 这将使tcpdump 检查广播地址是否符合全0和全1的一些约定,并查找网络接口的网络掩码(网络接口为当时在其上抓包的网络接口).

  假设抓包所在网络接口的网络掩码不合法, 或者此接口根本就没有设置对应网络地址和网络。 亦或是在linux下的

  any网络接口上抓包(此any接口能够收到系统中不止一个接口的数据包(nt: 实际上, 可理解为系统中全部可用的接口)),网络掩码的检查不能正常进行.

  假设数据包是一个以太网多点广播数据包(nt: 多点广播, 可理解为把消息同一时候传递给一组目的地址, 而不是网络中全部地址,后者为可称为广播(broadcast)), 则与此相应的条件表达式为真. keywordether 能够省略. 此选项的含义与下面条件表达式含义一致:`ether[

  0] &1!=0(nt: 可理解为, 以太网数据包中第0个字节的最低位是1, 这意味这是一个多点广播数据包).

  假设数据包是ipv4多点广播数据包, 则与此相应的条件表达式为线 multicast

  当以这些网络上的对应的协议标识为过滤条件时, tcpdump仅仅是检查LLC头部中以0x000000为组成单元标识符(OUI,0x000000

  802.3, 其为一系列IEEE 标准的集合. 此集合定义了有线以太网络中的物理层以及数据链路层的媒体接入控制子层. stp 在上文已有描写叙述)atalk

  2, 当中定义了逻辑链路控制层(LLC), 该层相应于OSI 网络模型中数据链路层的上层部分.LLC 层为使用数据链路层的用户提供了一个统一的接口(通经常使用户是网络层). LLC层下面是媒体接入控制层(nt: MAC层,相应于数据链路层的下层部分).该层的实现以及工作方式会依据不同物理传输媒介的不同而有所差别(比方, 以太网, 令牌环网,光纤分布数据接口(nt: 实际可理解为一种光纤网络), 无线

  假设数据包中DECNET目的地址或DECNET源地址为host, 则与此相应的条件表达式为真.

  假设数据包已被标记为从指定的网络接口中接收的, 则与此相应的条件表达式为真.

  rnr num假设数据包已被标记为匹配PF的规则, 则与此相应的条件表达式为真.(此选项仅仅适用于被OpenBSD中pf程序做过标记的包(nt: pf, packet filter, 可理解为OpenBSD中的防火墙程序))

  假设数据包已被标记为包括PF的匹配结果代码, 则与此相应的条件表达式为真.有效的结果代码有: match, bad-offset,

  rset name假设数据包已被标记为匹配指定的规则集, 则与此相应的条件表达式为真.

  假设包被记录时PF会运行act指定的动作, 则与此相应的条件表达式为真. 有效的动作有: pass, block.

  p是以上协议中的一个. 必需要注意的是tcpdump眼下还不能分析这些协议.

  假设数据包为IEEE802.1Q VLAN 数据包, 则与此相应的条件表达式为真.

  假设[vlan_id] 被指定, 则仅仅有数据包括有指定的虚拟网络id(vlan_id), 则与此相应的条件表达式为真.

  要注意的是, 对于VLAN数据包, 在表达式中遇到的第一个vlankeyword会改变表达式中接下来keyword所相应数据包中数据的

  開始位置(即解码偏移). 在VLAN网络体系中过滤数据包时, vlan [vlan_id]表达式能够被多次使用. keywordvlan每出现一次都会添加

  假设[label_num] 被指定, 则仅仅有数据包括有指定的标签id(label_num), 则与此相应的条件表达式为真.

  要注意的是, 对于内含MPLS信息的IP数据包(即MPLS数据包), 在表达式中遇到的第一个MPLSkeyword会改变表达式中接下来keyword所相应数据包中数据的

  開始位置(即解码偏移). 在MPLS网络体系中过滤数据包时, mpls [label_num]表达式能够被多次使用. keywordmpls每出现一次都会添加

  .200.1表示: 过滤发往或来自192.9.200.1的数据包, 该数据包的内层标签为1024, 且拥有一个外层标签.

  找到其描写叙述), 则与此相应的条件表达式为真.要注意的是, 对于PPP-over-Ethernet会话数据包, 在表达式中遇到的第一个pppoeskeyword会改变表达式中接下来keyword所相应数据包中数据的開始位置(即解码偏移).

  当中p 是以上协议之中的一个(含义分别为: 假设数据包为ipv4或ipv6数据包而且其协议类型为 tcp,udp, 或icmp则与此对

  假设数据包的协议类型为iso-osi协议栈中protocol协议, 则与此相应的条件表达式为真.(nt: [初解]iso-osi 网络模型中每

  层的详细协议与tcp/ip对应层採用的协议不同. iso-osi各层中的详细协议另需补充 )

  假设数据包为ATM数据包, 而且其虚拟路径标识为n, 则与此相应的条件表达式为真.

  假设数据包为ATM数据包, 则与此相应的条件表达式为真. 对于Solaris 操作系统上的SunATM设备 ,

  假设数据包为ATM数据包, 而且其虚拟通道标识为n, 则与此相应的条件表达式为真.

  假设数据包为ATM LANE 数据包, 则与此相应的条件表达式为真. 要注意的是, 假设是模拟以太网的LANE数据包或者

  LANE逻辑单元控制包, 表达式中第一个lanekeyword会改变表达式中随后条件的測试. 假设没有

  指定lanekeyword, 条件測试将依照数据包中内含LLC(逻辑链路层)的ATM包来进行.

  假设数据包为ATM数据包, 则与此相应的条件表达式为真. 对于Solaris 操作系统上的SunATM设备 ,

  假设数据包为ATM数据包, 则与此相应的条件表达式为真. 对于Solaris 操作系统上的SunATM设备 , 假设数据包为ATM数据包

  (nt: OAM, Operation Administration and Maintenance, 操作管理和维护,可理解为:ATM网络中用于网络管理所产生的ATM信元的分类方式.ATM网络中传输单位为信元, 要传输的数据终究会被切割成固定长度(53字节)的信元,(初理解: 一条物理线路可被复用, 形成虚拟路径(

  通信两方的编址方式为:虚拟路径编号(VPI)/虚拟信道编号(VCI)).

  ), 则与此相应的条件表达式为真.(nt: 此选项与oamf4反复, 需确认)metac假设数据包为ATM数据包, 则与此相应的条件表达式为真. 对于Solaris 操作系统上的SunATM设备 , 假设数据包为ATM数据包而且是来自

  为ITU(国际电信联盟)制定的信令协议. 当中规定了在宽带综合业务数字网络的用户接口层建立, 维护, 取消

  网络连接的相关步骤.)metaconnect假设数据包为ATM数据包, 则与此相应的条件表达式为真. 对于Solaris 操作系统上的SunATM设备 , 假设数据包为ATM数据包而且是来自

  假设relop 两側的操作数(expr)满足relop 指定的关系, 则与此相应的条件表达式为真.

  expr 是一个算术表达式. 此表达式中可使用整型常量(表示方式与标准C中一致), 二进制操作符(, -, *, /, &, ,

  , ), 长度操作符, 以及对特定数据包中数据的引用操作符. 要注意的是, 全部的比較操作都默认操作数是无符号的,

  要注意的是, tcp, udp 等上层协议眼下仅仅能应用于网络层採用为IPv4或IPv6协议的网络(此限制会在tcpdump未来版本号中

  进行改动). 对于指定协议的所需数据, 其在包数据中的偏移字节由expr 来指定.

  以上表达中size 是可选的, 用来指明我们关注那部分数据段的长度(nt:通常这段数据

  是数据包的一个域)。 其长度能够是1,2, 或4个字节. 假设不给定size, 默认是1个字节. 长度操作符的keyword为len,

  其片段编号为0的已破碎的IPv4数据包. 这样的数据检查方式也适用于tcp和udp数据的引用,即, tcp[0]相应于TCP 头中第一个字节, 而不是相应不论什么一个中间的字节.一些偏移以及域的取除了能够用数字也可用名字来表达. 下面为可用的一些域(协议头中的域)的名字: icmptype (指ICMP 协议头中type域), icmpcode (指ICMP 协议头code 域), 以及tcpflags(指TCP协议头的flags 域)

http://techndates.com/wuxiaoxinyuan/153.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有