目录
netcat(nc)
网络状态检测工具
ifconfig和ip
netstat和ss
网络抓包工具
tcpdump
Wireshark
其他常用工具
sar
nslookup
dstat
netcat(nc)
简称nc,被称为“瑞士军刀”,使用nc-h查看帮助文档。
ncat许多参数与nc相同,区别则是nc是明文传输,缺乏身份验证,而ncat弥补了这些缺点。
主要作用:
1、telnet远程登录
2、端口扫描
3、传输文本信息
4、传输文件和目录
5、加密传输文件
网络状态检测工具
ifconfig和ip
Ifconfig和ip用来查看网络配置:
二者输出指标基本相同,只是显示格式有所区别,ip有着更丰富的功能和更易用的接口。
输出内容有:网络接口的状态标志、MTU大小、IP、子网、MAC地址以及网络包收发的统计信息。
其中有几个跟网络性能密切相关的指标需要关注:
(1)网络接口的状态标志:ifconfig输出中的RUNNING或者ip输出中的LOWER_UP,表示物理网络是连通的,如果看不到它们,通常可能是网线被拔掉了;
(2)网络收发的字节数、包数、错误数以及丢包情况,特别是 TX和RX部分的errors、dropped、overruns等指标,如果不为0,通常表示出现了网络I/O问题。
netstat和ss
二者用来查看套接字、网络接口以及路由表的信息,ss与netstat的输出也比较类似,但是ss性能要更好。
netstat语法格式为netstat [选项]。
输出内容有:套接字状态、接收队列、发送队列、本地地址、远端地址、进程PID和进程名称等。
其中需要特别关注的是接收队列(Recv-Q)和发送队列(Send-Q),二者值通常应该是0,如果非0,说明有网络包的堆积发生,但在不同的套接字状态下,它们的含义不同。
netstat常用的选项有:
参数 | 含义 |
---|---|
-a或–all | 显示所有连线中的Socket; |
-A<网络类型>或–<网络类型> | 列出该网络类型连线中的相关地址; |
-c或–continuous | 持续列出网络状态; |
-C或—cache | 显示路由器配置的快取信息; |
-e或–extend | 显示网络其他相关信息; |
-F或–fib | 显示FIB; |
-g或–groups | 显示多重广播功能群组组员名单; |
-h或–help | 在线帮助; |
-i或–interfaces | 显示网络界面信息表单; |
-l或–listening | 显示监控中的服务器的Socket; |
-M或–masquerade | 显示伪装的网络连线 |
-n或–numeric | 直接使用ip地址,而不通过域名服务器; |
-N或–netlink或–symbolic | 显示网络硬件外围设备的符号连接名称; |
-o或–timers | 显示计时器; |
-p或—programs | 显示正在使用Socket的程序识别码和程序名称; |
-r或–route | 显示Routing Table; |
-s或—statistice | 显示网络工作信息统计表; |
-t或–tcp | 显示TCP传输协议的连线状况; |
-u或–udp | 显示UDP传输协议的连线状况; |
-v或–verbose | 显示指令执行过程; |
-V或–version | 显示版本信息; |
-w或–raw | 显示RAW传输协议的连线状况 |
-x或–unix | 此参数的效果和指定"-A unix"参数相同; |
–ip或–inet | 此参数的效果和指定"-A inet"参数相同 |
netstat主要用法有:
(1)查看端口服务:netstat -antp | grep 22
其中-a参数表示显示所有端口;-n表示直接使用ip地址,不通过域名服务器;-t参数表示显示TCP传输协议的端口;-p表示显示正在使用socket的程序识别码和程序名称;
(2)找出程序运行的端口
(3)显示网络统计
(4)显示路由信息
网络抓包工具
tcpdump和Wireshark是常用的网络抓包和分析工具,其中tcpdump仅支持命令行格式,Wireshark除了可以抓包外,提供了图形界面和汇总分析工具,在分析复杂的网络情景时,比较适用。在实际分析网络性能时,先用tcpdump抓包,再用Wireshark分析,也是一种常用的方法。
tcpdump
语法格式:
tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ][ -s snaplen ] [ -w file ] [ expression ]
常用的选项和过滤表达式:
Wireshark
可以将tcpdump抓取到的网络包保存到一个文件中,用Wireshark打开。
$ tcpdump -nn host 93.184.216.34 -w web.pcap
打开界面如下:
Wireshark展示格式更加规整和清楚,还可以查看网络包在协议栈各层的详细信息:
在菜单栏中点击 Statistics -> Flow Graph,然后,在弹出的界面中的 Flow type 选择 TCP Flows,可以更清晰的看到,整个过程中 TCP 流的执行过程:
这跟曾经学到的三次握手和四次挥手是类似的,但图中之所有只有三次挥手,是因为服务端把ACK和FIN合并一起发送了。
其他常用工具
sar
sar(System ActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
nslookup
nslookup用于查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题。
dstat
dstat是一个可以替换vmstat、iostat、netstat、ifstat这些命令的工具,是一个全能系统信息统计工具。
使用dstat会显示CPU、磁盘I/O、网络和内存四种资源的整体使用情况和中断次数和上下文中断次数两个关键系统指标,以网络资源为例,dstat还能输出一些关于网络的关键指标:
$ dstat –tcp
——tcp-sockets——-
lis act syn tim clo
27 38 0 0 0
27 38 0 0 0
这些指标的含义为:
(1)Lis : 表示处于监听(Listen)状态的连接数;
(2)Act:表示处于连接(ESTABLISHED)状态的连接数;
(3)Syn:处于三次握手阶段的连接数,如果该指标过大,往往意味着这瞬间有大量的TCP新建连接请求;
(4)Tim:处于TIME-WAIT状态的连接数;
(5)Clo:处于CLOSE-WAIT状态的连接数,这一项如果过多,往往意味着应用程序存在bug,没有主动去调用close()去关闭这些连接。