Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
如果我们的计算机有时候接受到的数据报会导致出错数据删除或故障,我们不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么我们就应该使用Netstat查一查为什么会出现这些情况了。
1、netstat命令的一些常用选项
netstat –s
本选项能够按照各个协议分别显示其统计数据。如果我们的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。
netstat –a
本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接。
netstat命令显示所有网络上的活动。
可以使用netstat -i指令来检查封包流量。
-bash-3.00$ netstat -i
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue
lo0 8232 loopback localhost 820740 0 820740 0 0 0
bge0 1500 t1000 t1000 225661640 0 239858019 0 0 0
Name:接口名称。
Mtu:接口最大传输单元大小。
Net/Dest:该接口所连接到的实际网络地址。
Address:MAC和IP地址。
Ipkts:该接口所接受到的数据包的总数。
Ierrs:该接口所报告的错误的总数。
Opkts:该接口所传输的数据包的总数。
Oerrs:该接口所传输的错误数据包的总数。
-bash-3.00$ netstat -i 3
input bge0 output input (Total) output
packets errs packets errs colls packets errs packets errs colls
225662211 0 239858699 0 0 226482951 0 240679439 0 0
51 0 55 0 0 51 0 55 0 0
107 0 112 0 0 107 0 112 0 0
25 0 32 0 0 25 0 32 0 0
……
-bash-3.00$ netstat -in
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue
lo0 8232 127.0.0.0 127.0.0.1 820740 0 820740 0 0 0
bge0 1500 192.168.1.0 192.168.1.11 225611104 0 239796346 0 0 0
-bash-3.00$ netstat -i 2 3
input bge0 output input (Total) output
packets errs packets errs colls packets errs packets errs colls
225663209 0 239859912 0 0 226483949 0 240680652 0 0
21 0 25 0 0 21 0 25 0 0
31 0 33 0 0 31 0 33 0 0
没2秒统计一次,显示3次
netstat –n
-n选项表示不进行域名转换。
-bash-3.00$ netstat -n
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
-------------------- -------------------- ----- ------ ----- ------ -----------
192.168.1.11.9999 192.168.1.31.3690 7984 0 49232 0 ESTABLISHED
192.168.1.11.9999 192.168.1.32.3657 27280 0 49232 0 ESTABLISHED
192.168.1.11.22 221.2.208.42.19899 15668 0 49640 0 ESTABLISHED
192.168.1.11.22 123.184.92.3.64029 16188 35 50400 0 ESTABLISHED
127.0.0.1.36424 127.0.0.1.10000 49152 0 49152 0 ESTABLISHED
127.0.0.1.10000 127.0.0.1.36424 49152 0 49210 0 ESTABLISHED
127.0.0.1.36426 127.0.0.1.10000 49152 0 49152 0 ESTABLISHED
127.0.0.1.10000 127.0.0.1.36426 49152 0 49156 0 ESTABLISHED
127.0.0.1.36427 127.0.0.1.9999 49152 0 49152 0 ESTABLISHED
127.0.0.1.9999 127.0.0.1.36427 49152 0 49152 0 ESTABLISHED
192.168.1.11.22 123.184.92.3.61267 16104 0 50400 0 ESTABLISHED
192.168.1.11.27218 192.168.1.40.53634 17472 0 65160 0 ESTABLISHED
192.168.1.11.27218 192.168.1.40.48873 57984 0 65160 0 ESTABLISHED
192.168.1.11.27618 192.168.1.40.59257 49280 0 65160 0 ESTABLISHED
192.168.1.11.27218 192.168.1.40.48884 23232 0 65160 0 ESTABLISHED
192.168.1.11.50362 192.168.2.5.389 6912 0 49640 0 TIME_WAIT
192.168.1.11.988 192.168.2.5.2049 64128 0 49640 116 ESTABLISHED
192.168.1.11.50363 192.168.2.5.389 6912 0 49640 0 TIME_WAIT
192.168.1.11.50364 192.168.2.5.389 6912 0 49640 0 TIME_WAIT
192.168.1.11.9999 192.168.1.30.4788 98092 0 49232 0 ESTABLISHED
192.168.1.11.47539 192.168.1.18.9999 65535 0 49640 0 ESTABLISHED
192.168.1.11.9999 192.168.1.14.55057 66560 0 49232 0 ESTABLISHED
Active UNIX domain sockets
Address Type Vnode Conn Local Addr Remote Addr
60024683940 stream-ord 60021ea04c0 00000000 /tmp/ssh-oJq19606/agent.19606
6000798d5a0 stream-ord 600245f3100 00000000 /tmp/ssh-lIE21178/agent.21178
60005e6ec90 stream-ord 600245f19c0 00000000 /tmp/ssh-RXj19791/agent.19791
60003231c88 stream-ord 6000322c900 00000000 /var/run/.inetd.uds
netstat –r
本选项可以显示关于路由表的信息,类似于后面所讲使用route print命令时看到的 信息。除了显示有效路由外,还显示当前有效的连接。
-bash-3.00$ netstat -r
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ------ ---------
192.168.1.0 t1000 U 1 3792 bge0
224.0.0.0 t1000 U 1 0 bge0
default 192.168.1.1 UG 1 10806
localhost localhost UH 10 2154 lo0
-bash-3.00$ netstat -rn
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ------ ---------
192.168.1.0 192.168.1.11 U 1 3792 bge0
224.0.0.0 192.168.1.11 U 1 0 bge0
default 192.168.1.1 UG 1 10807
127.0.0.1 127.0.0.1 UH 10 2154 lo0
-bash-3.00$ netstat -pn
Net to Media Table: IPv4
Device IP Address Mask Flags Phys Addr
------ -------------------- --------------- ----- ---------------
bge0 192.168.1.40 255.255.255.255 00:1d:09:f1:d2:d6
bge0 192.168.1.1 255.255.255.255 00:14:f6:44:2a:27
bge0 192.168.1.11 255.255.255.255 SP 00:14:4f:1e:3f:9c
bge0 192.168.1.12 255.255.255.255 00:18:8b:f8:14:4d
bge0 192.168.2.7 255.255.255.255 00:1d:09:0c:3a:ef
bge0 192.168.1.18 255.255.255.255 00:11:25:c5:cd:a4
bge0 224.0.0.0 240.0.0.0 SM 01:00:5e:00:00:00
2、Netstat命令的妙用
经常上网的人一般都使用ICQ的,不知道我们有没有被一些讨厌的人骚扰,想投诉却又不知从和下手?其实,我们只要知道对方的IP,就可以向他所属的ISP投诉了。但怎样才能通过ICQ知道对方的IP呢?如果对方在设置ICQ时选择了不显示IP地址,那我们是无法在信息栏中看到的。其实,我们只需要通过Netstat就可以很方便的做到这一点:当他通过ICQ或其他的工具与我们相连时(例如我们给他发一条ICQ信息或他给我们发一条信息),我们立刻在DOS 命令提示符下输入netstat -n或netstat -a就可以看到对方上网时所用的IP或ISP域名了,甚至连所用Port都完全暴露了。