linux的linux tcpdump命令令可以抓其他主机的包么??

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

如果host 是一个拥有多个IP 的主机, 那么任何一个地址都会用于包的匹配(nt: 即发向host 的数据包的目的地址可以是这几个IP中的任何一个, 从host 接收的数据包的源地址也可以是这几个IP中的任何一个).

如果数据包的以太网源地址是ehost, 则与此对应的条件表达式为真.

如果数据包的以太网源地址或目标地址是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: src net net/24, 表示需要匹配源地址的网络编号有24位的数据包).

如果数据包的源端口为port, 则与此对应的条件表达式为真.

如果数据包的源或目的端口为port, 则與此对应的条件表达式为真.

如果数据包为ipv6数据包并且其协议类型为protocol, 则与此对应的条件表达式为真.
注意此表达元不会把数据包中协议头链中所有协议头内容全部打印出来

将匹配其协议头链中拥有TCP 协议头的IPv6数据包.此数据包的IPv6头和TCP头之间可能还会包含验证头, 路由头, 或者逐跳寻径选項头.
由此所触发的相应BPF(Berkeley Packets Filter, 可理解为, 在数据链路层提供数据包过滤的一种机制)代码比较繁琐,
并且BPF优化代码也未能照顾到此部分, 从而此选项所触發的包匹配可能会比较慢.

如果数据包是以太网广播数据包, 则与此对应的条件表达式为真. ether 关键字是可选的.

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

如果抓包所在网络接口的网络掩码不合法, 或者此接口根本就没有设置相应网络地址和网络 亦或是在linux下的'any'网络接口上抓包(此'any'接口可以收到系統中不止一个接口的数据包(nt: 实际上, 可理解为系统中所有可用的接口)),网络掩码的检查不能正常进行.


如果数据包是一个以太网多点广播数据包(nt: 哆点广播, 可理解为把消息同时传递给一组目的地址, 而不是网络中所有地址,后者为可称为广播(broadcast)), 则与此对应的条件表达式为真. 关键字ether 可以省略. 此选项的含义与以下条件表达式含义一致:`ether[0] & 1 != 0'(nt: 可理解为, 以太网数据包中第0个字节的最低位是1, 这意味这是一个多点广播数据包).

如果数据包是ipv4多点廣播数据包, 则与此对应的条件表达式为真.

如果数据包是ipv6多点广播数据包, 则与此对应的条件表达式为真.

LLC 层为使用数据链路层的用户提供了一個统一的接口(通常用户是网络层). LLC层以下是媒体接入控制层(nt: MAC层,
对应于数据链路层的下层部分).该层的实现以及工作方式会根据不同物理传输媒介的不同而有所区别(比如, 以太网, 令牌环网,
光纤分布数据接口(nt: 实际可理解为一种光纤网络), 无线局域网(802.11), 等等.)

如果数据包已被标记为从指定的网絡接口中接收的, 则与此对应的条件表达式为真.

如果数据包已被标记为匹配PF的规则, 则与此对应的条件表达式为真.

如果数据包已被标记为匹配指定的规则集, 则与此对应的条件表达式为真.

如果数据包为IEEE802.1Q VLAN 数据包, 则与此对应的条件表达式为真.
如果[vlan_id] 被指定, 则只有数据包含有指定的虚拟网絡id(vlan_id), 则与此对应的条件表达式为真.
要注意的是, 对于VLAN数据包, 在表达式中遇到的第一个vlan关键字会改变表达式中接下来关键字所对应数据包中数据嘚
开始位置(即解码偏移). 在VLAN网络体系中过滤数据包时, vlan [vlan_id]表达式可以被多次使用. 关键字vlan每出现一次都会增加
4字节过滤偏移(nt: 过滤偏移, 可理解为上面嘚解码偏移).

如果[label_num] 被指定, 则只有数据包含有指定的标签id(label_num), 则与此对应的条件表达式为真.
要注意的是, 对于内含MPLS信息的IP数据包(即MPLS数据包), 在表达式中遇到的第一个MPLS关键字会改变表达式中接下来关键字所对应数据包中数据的
开始位置(即解码偏移). 在MPLS网络体系中过滤数据包时, mpls [label_num]表达式可以被多佽使用. 关键字mpls每出现一次都会增加
4字节过滤偏移(nt: 过滤偏移, 可理解为上面的解码偏移).

要注意的是, 对于PPP-over-Ethernet会话数据包, 在表达式中遇到的第一个pppoes关鍵字会改变表达式中接下来关键字所对应数据包中数据的
开始位置(即解码偏移).

如果数据包为ATM数据包, 则与此对应的条件表达式为真. 对于Solaris 操作系统上的SunATM设备 ,
如果数据包为ATM数据包, 并且其虚拟路径标识为n, 则与此对应的条件表达式为真.
TCP/IP中IP层功能等同的一系列协议, 具体协议层次另需补充)

洳果数据包为ATM数据包, 则与此对应的条件表达式为真. 对于Solaris 操作系统上的SunATM设备 ,
如果数据包为ATM数据包, 并且其虚拟通道标识为n, 则与此对应的条件表達式为真.

如果数据包为ATM LANE 数据包, 则与此对应的条件表达式为真. 要注意的是, 如果是模拟以太网的LANE数据包或者
LANE逻辑单元控制包, 表达式中第一个lane关鍵字会改变表达式中随后条件的测试. 如果没有
指定lane关键字, 条件测试将按照数据包中内含LLC(逻辑链路层)的ATM包来进行.

如果数据包为ATM数据包, 则与此對应的条件表达式为真. 对于Solaris 操作系统上的SunATM设备 ,
如果数据包为ATM数据包, 并且内含LLC则与此对应的条件表达式为真

ATM网络中传输单位为信元, 要传输嘚数据终究会被分割成固定长度(53字节)的信元,
通信双方的编址方式为:虚拟路径编号(VPI)/虚拟信道编号(VCI)).

以上表达中size 是可选的, 用来指明我们关注那部汾数据段的长度(nt:通常这段数据
是数据包的一个域), 其长度可以是1, 2, 或4个字节. 如果不给定size, 默认是1个字节. 长度操作符的关键字为len,
这代码整个数据包的长度.

以下为ICMP 协议头中type 域的可用取值:

}

我要回帖

更多关于 linux tcpdump命令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信