在上一节讲了一些tcpdump常用功能,本期我们继续学习tcpdump后续功能。
流量过滤
tcpdump不仅支持单个过滤表达式过滤,也还支持多个过滤表达式。但需要注意的是传入的过滤表达式如含有Shell通配符,需将过滤表达式放在单引号内,以预防Shell对其进行解释和通配。如果需要深入学习过滤表达式,可以使用以下命令进行查看:
1、只抓取UDP数据包
tcpdump另外还支持如下的协议类型:
2、抓取固定来源的数据包
对一台主机而言,后台运行的网络有很多个,所连接的服务器也会有很多个。那如果我们只想查看某一个服务器和主机的数据包情况了?在tcpdump中也支持这样的数据包抓包,但需要设置src(source)和dst(destination)就可以了,同时tcpdum也支持各条件间逻辑运算,如and、or等。
如果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.计算机网络(第七版) 谢希仁
领取专属 10元无门槛券
私享最新 技术干货