网络抓包工具tcpdump的基础知识篇

1.什么是tcpdump?

TCPDump可以将网络中传送的数据包完全截获下来提供分析。
它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

2.基本知识简介

Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是不可少的。
TcpDump是Linux中强大的网络数据采集分析工具之一。
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。
作为互联网上经典的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,
成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。
tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。
tcpdump存在于基本的 FreeBSD系统中,由于它需要将网络接口设置为混杂模式,普通用户不能正常执行,
但具备root权限的用户可以直接执行它来获取网络上的信息。
因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
基本上tcpdump的总的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数

3.参数的使用方法

tcpdump支持相当多的不同参数,如使用-i参数指定tcpdump监听的网络接口,这在计算机具有多个网络接口时非常有用,
使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。
然而更复杂的tcpdump参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,
数据量太大,反而不容易发现需要的数据包。
使用这些参数定义的过滤规则可以截留特定的数据包,以缩小目标,才能更好的分析网络中存在的问题。
tcpdump使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,
充分利用这些过滤规则就能达到迅速定位故障的目的。 请使用man tcpdump查看这些过滤规则的具体用法。

4.使用方法详细说明

tcpdump是一个用于截取网络分组,并输出分组内容的工具
凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具
tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息
网络抓包工具tcpdump的基础知识篇_第1张图片

5.抓包选项

-c 指定要抓取的包数量
-i interface 指定tcpdump需要监听的接口。默认会抓取第一个网络接口
-n 对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析
-nn 除了-n的作用外,还把端口显示为数值,否则显示端口服务名
-P 指定要抓取的包是流入还是流出的包。可以给定的值为"in"、“out"和"inout”,默认为"inout"
-s len 设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断:输出行中会出现"[proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好

6.输出选项

e 输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC
-q 快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短
-X 输出包的头部数据,会以16进制和ASCII两种方式同时输出
-XX 输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细
-v 当分析和打印的时候,产生详细的输出
-vv 产生比-v更详细的输出
-vvv 产生比-vv更详细的输出

7.其他功能性选项

D 列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后
-F 从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效
-w 将抓包数据输出到文件中而不是标准输出。可以同时配合"-G
time 选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印
-r 从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取

你可能感兴趣的:(linux中常用的网络命令)