概念
tcpdump是Linux下强大的抓包工具,不仅可以分析数据包流向,还可以对数据包内容进行监听。通过分析数据包流向,可以了解一条连接是如何建立双向连接的。
tcpdump允许用户(一般是root)拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。
用法及参数
tcpdump [-AennqX] [-i 接口] [-w 存储文件名] [-c 次数] [-r 文件] [所要抓取的数据包格式] 常用选项与参数: -A # 数据包的内容以ASCII显示,通常用来抓取WWW的网页数据包 -e # 使用数据链路层(osi第2层)的MAC数据包数据来显示 -nn # 直接以IP及port显示,而不用主机名与服务名显示 -q # 列出较为简短的数据包信息,每一行内容比较精简 -X # 列出十六进制(hex)以及ASCII数据包内容,对于监听数据包内容很有用 -i # 后接要监听的网络接口,如eth0/eth1/lo/ppp0等 -w # 后接文件名,将监听的数据包数据存储到文件中 -r # 后接文件名,从文件中读出数据,这个文件必须存在,且是由-w所产生的 -c # 监听的数据包数,如果没有这个参数,tcpdump会一直监听,直到按Ctrl+C为止 'host 127.0.0.1' # 针对单台主机抓包 'net 192.168' # 针对某个网络抓包 'src host 127.0.0.1' 'dst net 192.168' # 同时加上源(src)和目标限制(dst) 'tcp port 21' # 针对通信协议(tcp/udp/arp/ether)、端口检测 还可以利用and 与 or 进行数据包的整合显示
常用命令示例
(1) 查看某块网卡的80端口数据包流向
tcpdump -i eth1 port 80 -nn
(2)监听eth0网卡,且通信协议为port22,目标数据来源为192.168.0.100的数据包的命令
tcpdump -i eth0 -nn 'port 22 and src host 192.168.0.100'