一 netstat概述:
netstat收集了有关计算机网络连接的大量信息,包括接口的统计信息、路由信息和连接表(TCP连接状态)。可以把netstat看成是多种网络工具的“大杂烩”,是分析系统网络状态必不可少的工具。
下面讨论五种netstat的常见用途:
1.检查接口的配置信息;
2.监视网络连接状态;
3.标示正在监听的网络服务;
4.检查路由表;
5.查看各种网络协议运行的统计信息
二 用途详述:
(1)检查接口的配置信息:
netstat -i显示主机上每个网络接口的配置和状态,还有相关的流量计数。在linux上可以用ifconfig -a代替netstat -i,它输出的信息更详细。
如下图:(netstat -i)
RX packets和TX packets报告各个接口从机器启动以来接受和发送的包的个数。
error:存放各种不同类型的错误,显示有个别错误是正常的。
collisions:给出包在发送期间遇到的冲突次数。
(2)监视网络连接状态:
netstat不带参数只显示活动的TCP和UDP端口的状态。正常情况下不显示在等待连接("listening")的不活动的服务器,用netstat -a可以看到它们。
如下图:netstat -a:
*protocol表示协议,包括:TCP、UDP、Unix域等协议。
*输出结果中的地址以hostname:service的形式显示,service是端口号。对于知名的服务来说,netstat用/etc/services中定义的映射关系,用符号表示其端口。用-n选项可以获得数字地址和端口号。如果DNS断了,没有-n的netstat将是非常蛋疼的。
*Send-Q和Recv-Q显示在本地主机上的连接中发送和接受的队列的长度。
*State:连接状态只对TCP有意义,UDP是一种无连接协议。对于当前活动的连接,最常见状态是ESTABLISHED(已连接);对于等待连接的服务器,最常见状态是LISTEN(监听,不用-a通常不显示);对于关闭过程中的连接,最常见状态为TIME_WAIT。还有其他状态,如SYN_WAIT,如果显示了大量处于SYN_WAIT状态的连接,说明该主机不能处理那么多数量的连接了。
(3)标示正在监听的网络服务:
netstat -a列出了所有主动监听的端口(所有状态是LISTEN的TCP端口,还可能是所有的UDP端口)。
在linux上netstat -l可以只显示正在监听的端口。还可以加上-p,让netstat显示出和某个端口相关联的的特定进程。
(4)检查路由表:
netstat -r将显示内核的路由表。目的地址和网关可以为主机名或IP地址,-n标志要求输出数字IP。
如下图:netstat -r:
netstat -rn:
*Flags表示路由的特征:U表示up(活动的),G表示网关,H表示主机路由,D表示由ICMP重定向产生的路由。
*MSS:Maximum Segment Size最大分段大小。
(5)查看各种网络协议运行的统计信息:
netstat -s将输出散步在网络代码各个角落里的计数器的统计信息。输出中IP、ICMP、TCP和UDP分别成单独的小节。