tcpdump
tcpdump是经典的网路抓包工具其常见选项为:
- -n:使用IP地址表示主机,而不是主机名;使用数字表示端口号,而不是服务名称;
- -i:指定要坚挺的网卡接口。“-i any”标识抓取所有网卡接口上的数据包;
- -v:输出一个稍微详细的信息;
- -t:不打印时间戳;
- -e:显示以太网帧头部信息;
- -c:紧抓去指定数量的数据报;
- -x:以十六级进制显示数据包内容,但不显示包中以太网帧的头部信息;
- -X:与-x类似,还打印每个十六进制字节对应的ASCII字符;
- -XX:与-XX类似,还打印以太网帧的头部信息;
- -s:设置值抓包时候的抓取长度(默认为65535字节);
- -S:以绝对值来显示TCP报文段序号,而不是相对值;
- -w:将tcpdump的输出以特殊格式定向到某个文件;
- -r:从文件读取数据报并显示。
tcpdump还支持用表达式来进一步过滤数据报,其操作数分为三种:类型、方向、协议。
- 类型:解释其后i按紧跟着的参数的含义,如host、net、port和portrage等。如抓取整个1.2.3.0/255.255.255.0网络上的数据包:
$ tcpdump net 1.2.3.0/24
; - 方向:src指定数据包的发送端,dst指定数据包的目的端,如抓取进入端口13579的数据包
$ tcpdump dst port 13579
; - 协议:指定目标协议。如抓取所有ICMP数据包:
$ tcpdump icmp
;
17.2 lsof
lsof是列出当前系统打开的文件描述符的工具,其选项有:
- -i:显示socket文件描述符,常用方法:
$ isof -i [46] [protocol][@hostname][ipaddr][:service|port]
。如要显示所有链接到主机192.168.1.108的ssh服务的socket文件描述符可使用:$ lsof -i@192.168.1.108:22
。若-i选项后不指定任何参数,则显示所有socket文件描述符; - -u:显示指定用户启动的所有进程打开的文件描述符;
- -c:显式指定的命令打开的所有文件描述符,若要查看websrv程序打开了哪些文件描述符,可以使用命令
$ lsof -c websrv
; - -p:显示指定进程打开的所有文件描述符;
- -t:仅显示打开了目标文件描述符的进程的PID。
17.3 nc
快速构建网络连接,让其以服务器方式运行,监听某个端口并接受客户连接,可用来调试客户端程序。也可以以客户端方式运行,向服务器发哦是那个链接并接收数据,可用来调试服务器程序。
- -i:设置数据包传送的时间间隔;
- -l:以服务器方式运行,监听指定的端口。nc默认以客户端方式运行;
- -k:重复接收并处理某个端口上的所有链接,必须与-l选项一起使用;
- -n:使用IP地址标识主机,使用数字表示端口号;
- -p:当nc命令以客户端方式运行时,强制其使用指定的端口号;
- -s:设置本地主机发送出的数据包的IP地址;
- -C:将CR和LF两个字符作为行运行字符;
- -U:使用UNIX本地域协议通信;
- -u:使用UDP协议,nc默认是TCP协议;
- -w:如果nc客户端在指定时间内未检测到任何输入,则退出;
- -X:当nc客户端和代理服务器通信时,该选项指定其通信协议;
- -x:制定目标代理服务器的IP地址和端口号;
- -z:扫描目标机器上的某个或某些服务是否开启。
实例:连接websrc服务器并发送数据:
$ nc -C 127.0.0.1 13579
Get http://localhost/a.html HTTP/1.1
Host: localhost
17.4 strace
测试服务器性能的重要文件,跟踪程序运行过程中执行的系统调用和接收到的信号,并将系统调用名、参数、返回值和信号名输出到标准输出或指定的文件。
- -c:统计每个系统调用的执行时间、执行次数和出错次数;
- -f:跟踪由fork调用生成的子进程;
- -t:在输出的每一行信息前加上时间信息;
- -e:指定一个表达式
17.5 netstat
网络信息统计工具,可以打印本地网卡接口上的全部连接、路由表信息、网卡接口信息等。
- -n:使用IP地址标识主机名,使用数字表示端口号;
- -a:显示结果中也包含监听socket;
- -t:仅显示TCP连接;
- -r:显示路由信息;
- -i:显示网卡接口和数据流量;
- -c:每隔一秒输出一次;
- -o:显示socket定时器的信息;
- -p:显示socket所属的进程PID和名字。
17.6 vmstat
能够实时输出系统的各种资源使用情况。
17.7 ifstat
简单的网络流量监测工具。
- -a:检测系统上所有网卡接口;
- -i:指定要检测的网卡接口;
- -t:在每行输出的信息前加上时间戳;
- -b:以Kbit/s为单位,而不是默认的KB/s;
- delay:采样间隔
- count:采样次数
17.8 mpstat
能够实时监测多处理器系统上每个CPU的使用情况,其典型用法是:
mpstat [-P [{ALL}] [interval] [count]]