tcpdump是一个强大的命令行数据包分析器。它通过监控服务器的网卡来获取数据包。所有通过网络访问的数据包都可以获得。它还提供了过滤功能,可以获取指定网络、端口或协议的数据包。程序员经常解决问题。最常用的是使用过滤功能获取指定端口的数据包来分析服务器是否收到请求。,请求的数据是否完整。参数介绍tcpdump命令的参数很多,如下:这里只介绍一些常用的参数-ccountcount表示个数。抓包数达到count后结束命令。如果不使用-c参数,它会继续抓取数据包,直到你手动停止-Cfile_size抓取数据包并保存到文件时,使用该命令指定文件的大小。文件达到指定大小后,将在原文件名后创建一个新文件,并在其后加上序号,如:dump.txt、dump.txt1。file_size的单位是b-D,列出服务器的所有网卡。默认情况下,tcpdump监听编号最小的网卡,通常是eth0。抓包时可以使用-i参数指定要监控的网卡。监控所有网卡的任何手段。-iinterface指定要监控的网卡名称。监控所有网卡的任何手段。显示主机名)-q快速输出,只输出简短的包信息-rfile从文件中获取包,不再从网络中获取包-t不输出时间戳-wfile将抓包保存到文件,-r参数可以从文件中读取数据包-Wfilecount指定文件个数,当文件滚动到指定个数时,将从第一个文件开始覆盖除了上述参数外,还有一些可以用来进行条件过滤的关键字,常用的关键字如下-host过滤host,比如tcpdumphost192.168.1.110只抓取经过这个ip的数据包-src用来过滤参数requestsource,如:tcpdumpsrchost192.168.1.110只抓取来自这个ip-dst的数据包,用于过滤requestreceiver的参数,如:tcpdumpdsthost192.168.1.110只抓取发送的数据包到这个ip-portfilterport,如:tcpdumpport8080只抓取通过Port8080的数据包-netfilternetwork,如:tcpdumpnet192.168只抓取通过该网段的数据包-and,not,or条件过滤,是一样的正如字面意思。例如:tcpdumpnet192.168andport8080抓取经过192.168网段,经过8080端口的数据包,抓取到的数据包格式如下:20:17:43.496528时间戳,时:分:秒.微秒IPInternetnetwork协议名称180.101.49.12.http>iZbp14w0b2rs7i1400bjjmZ.42468180.101.49.12.http请求发送方的ip和端口>请求接收方的ip和端口。端口有时会显示为某种网络协议,如http、ssh、mysql等Flags[R]标志标识和状态,可选状态为:[S.][.][P.][F.][R]seq,ack,fin代表tcp协议的3次握手和4次握手过程。seq表示请求的序号,ack是应答的序号,fin表示完成。这里显示的序列号是相对值,-S参数可以显示绝对值。win表示当前窗口的可用大小,length表示消息体的长度。从长度上可以简单分析一下是否正确接收到请求。通过以上结果只能做一个简单的分析。可以使用-w参数将数据包写入文件,文件中记录的数据包比命令行详细的多。可以借助分析工具进一步分析该文件。这里推荐wireshark。该工具是开源的,开箱即用,易于使用。8080端口抓包的常用命令组合这里就不详细介绍了tcpdump-ianyport8080抓取从192.168.1.110发往192.168.1.111的数据包tcpdump-ianysrcnet192.168.1.110anddsthost192.168.1.111抓取除192.168以外的192.168网段192.168.1.110抓包tcpdump-ianysrcnet192.168and'srchostnot192.192。8080端口数据包写入dump.log文件tcpdump-ianyport8080-wdump.log注意事项1.tcpdump需要管理员权限运行,可以使用sudo命令或者root用户2.抓取的数据包传长度fieldonly可以做一些简单的判断。如果要详细分析,需要使用数据包分析工具,如:Wireshark
