常用命令
1. tcpdump
经典的抓包命令,提供了大量的选项,用来过滤数据包或者定制输出格式。 比如指定网卡:
tcpdump -i ens33
再比如指定来源:
tcpdump src host hostname
比如:
tcpdump src host 192.168.5.100 //将捕获192.168.5.100的所有数据包
再写一个例子:
tcpdump 'tcp and port 80 and src host 192.168.5.100'
这里抓TCP的包,且端口是80,包来自IP地址为192.168.5.100的主机地址
tcpdump 'tcp and port 80 and tcp[13:1]&2 != 0'
这里tcp[13:1]表示的是TCP头部开始处偏移13字节,如果这个值为2,说明设置了SYN分节。
2. lsof
列出当前系统打开的文件描述符的工具。 常见的用途是,帮助我们找出指定的IP地址或者端口打开套接字的进程 常用选项:
lsof -i //显示所有 socket 文件描述符
3. nc
nc(netcat)命令短小精悍、功能强大。它主要被用来快速构建网络连接。可以让它以服务器方式运行,也可让它以客户端方式运行。
-i 设置数据包传送的事件间隔
-l 以服务器的方式运行,监听指定的端口。nc命令默认以客户端方式运行
-k 重复接受并处理某个端口上的所有连接,必须与-l选项一起使用
-n 使用IP地址表示主机,而不是主机名;使用数字表示端口号,而不是服务名称
-p 当nc命令以客户端方式运行时,强制其使用指定的端口号。
-U 使用Unix本地域协议通信
-u 使用UDP协议。nc命令默认使用传输层协议时TCP协议
-z 扫描目标机器上的某个或某些服务是否开启(端口扫描)。
例子:
nc -z 127.0.0.1 20-50 //扫描20-50 端口是否开启
nc 127.0.0.1 8888 //连接服务器并发送数据
nc -l 8888 //服务器监听8888端口
4. strace
strace是测试服务器性能的重要工具。可以跟踪程序运行过程中执行的系统调用和接受到的信号,并将系统调用名、参数、返回值、及信号名输出到标准输出或者指定的文件。
常用选项:
-c //统计每个系统调用执行时间、执行次数和出错次数
-f //跟踪由fork调用生成的子进程
-t //在输出的每一行信息前加上时间信息
-o //将strace 的输出写入指定的文件
5. netstat
netstat 是一个功能强大的网络信息统计工具 可以打印本地网卡接口上的全部连接、路由表信息、网卡接口信息等
常用选项:
-n 使用IP地址表示主机,而不是主机名;使用数字表示端口号,而不是服务名称
-a 显示结果中也包含监听socket
-t 仅显示TCP连接
-r 显示路由信息
-p 显示socket所属的进程的PID和名字
-l 仅显示监听套接字
-e 显示附加信息
常用组合 netstat -nat
netstat -alepn