Linux 基础教程 30-tcpdump命令-2

    在上一节讲了一些tcpdump常用功能,本期我们继续学习tcpdump后续功能。

流量过滤

    tcpdump不仅支持单个过滤表达式过滤,也还支持多个过滤表达式。但需要注意的是传入的过滤表达式如含有Shell通配符,需将过滤表达式放在单引号内,以预防Shell对其进行解释和通配。如果需要深入学习过滤表达式,可以使用以下命令进行查看:

1、只抓取UDP数据包

tcpdump另外还支持如下的协议类型:

2、抓取固定来源的数据包

    对一台主机而言,后台运行的网络有很多个,所连接的服务器也会有很多个。那如果我们只想查看某一个服务器和主机的数据包情况了?在tcpdump中也支持这样的数据包抓包,但需要设置src(source)dst(destination)就可以了,同时tcpdum也支持各条件间逻辑运算,如andor等。

如果tcpdump未指定dst和src,则默认全匹配,而不区分是dst还是src

3、抓取特定端口的数据包

tcpdump还支持的过滤类型如下所示:

4、抓取属于两台服务器之间的数据包

常用协议数据报格式

    在此对协议不做深入讲解,仅列出TCP/IP的数据报格式,有兴趣的话,可以自行查阅相关资料。

IP协议数据报格式如下所示:

常用协议编号如下所示:

TCP协议数据报格式如下所示:

UDP协议数据报格式如下所示:

抓包进阶

    在明白各常用协议的数据报格式后,我们先来看看以下几个示例:

1、抓取本机与百度之间TCP三次握手中的第一个网络包,且排除主机为cnblogs的数据包

2、抓取IP包长度大于500的数据包

proto[expr:size]详细解释如下所示:

proto:就是protocol的缩写,表示协议的名称。可以指定的协议类型大致如下:

expr:用来指定数据包偏移量,表示从某个协议数据包的第多个位开始提取内容,默认起始位置为0

size:表示从expr之后提取多少个字节

比较运算符:常用的比较运算符如下所示:

为了增加可读性,TCP协议数据报头中有6个tcpflags标志字段域,在tcpdump中可以用以下方式进行表达:

逻辑运算符:如果一个过滤表达式中包含多个过滤表达式,则可以使用逻辑运算符进行串联

要详细理解上面的这些示例,需要对常用协议的数据报格式有足够的了解和掌握。

[参考资料]

1.计算机网络(第七版) 谢希仁

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180730G1WGGV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券