netstat


Tags linux command netstat By crazygit On 2015-01-14

本文参考:

作用

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等 等。

输出信息含义

执行netstat后,其输出结果为

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE

Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 16178 @000000dd
unix 1 [ ] STREAM CONNECTED 16176 @000000dc
unix 9 [ ] DGRAM 5292 /dev/log
unix 1 [ ] STREAM CONNECTED 16182 @000000df

从整体上看,netstat的输出结果可以分为两个部分:

一个是Active Internet connections,称为有源TCP连接,其中”Recv-Q”和”Send-Q”指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。 Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

常见参数

  • -a (all)显示所有监听和未监听的连接
  • -t (tcp)仅显示tcp相关选项
  • -u (udp)仅显示udp相关选项
  • -n 拒绝显示别名,能显示数字的全部转化成数字。
  • -l 仅列出有在 Listen (监听) 的服務状态 *
  • -p 显示建立相关链接的程序名
  • -r 显示路由信息,路由表
  • -e 显示扩展信息,例如uid等
  • -s 按各个协议进行统计
  • -c 每隔一个固定时间,执行该netstat命令。

提示LISTENLISTENING的状态只有用-a或者-l才能看到

实用命令实例

# 列出所有连接(包括监听和未监听的)
$ netstat -a

# 列出所有tcp连接
$ netstat -at

# 列出所有udp连接
$ netstat -au

# 默认情况下,netstat命令会做一个reverse dns lookup去查找连接的ip
# 对应的主机名,这会降低输出速度,如果不需要,可以使用-n
# 在netstat输出中不显示主机,端口和用户名(host, port or user)
$ netstat -an

# 列出所有处于监听状态的
# -l选项不要与-a同时使用,不然也会列出未监听状态的连接
$ netstat -l

# 列出所有监听状态的tcp连击
$ netstat -lt

# 列出所有监听状态的udp连击
$ netstat -lu

# 列出所有的unix连接
$ netstat -lx

# 在netstat输出中显示PID和进程名称(-p),用户名(-e)
# -p使用需要root权限,不然无法获取PID
$ sudo netstat -ltpe
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 localhost:5037          *:*                     LISTEN      linliang   4530492     11684/adb
tcp        0      0 localhost:63342         *:*                     LISTEN      linliang   10952269    6663/java
tcp        0      0 localhost:9200          *:*                     LISTEN      linliang   10361577    12461/ssh
tcp        0      0 *:http                  *:*                     LISTEN      root       12810       1344/nginx
tcp        0      0 localhost:domain        *:*                     LISTEN      root       683         1481/dnsmasq

# 上面的命令总如果使用-n,将会显示用户UID,而不是用户名

# 列出所有的网络统计信息
$ netstat -s
Ip:
14989101 total packets received
0 forwarded
0 incoming packets discarded
14986294 incoming packets delivered
11643610 requests sent out
Icmp:
    6034 ICMP messages received
    71 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 5774
        timeout in transit: 106
        echo replies: 154
    6882 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
....

# 显示TCP或UDP连接的统计信息
$ netstat -st
$ netstat -su

# 显示kernel的路由信息(-r)
$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         172.26.50.1     0.0.0.0         UG        0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
172.26.50.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 vboxnet0

# 打印网络接口(-i)
$ netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth1       1500 0  10650979      0      0 0      10656895      0      0      0 BMRU
lo        65536 0   5095802      0      0 0       5095802      0      0      0 LRU
vboxnet0   1500 0         0      0      0 0          1505      0      0      0 BMRU

# 上面的输出比较原始,为了获取友好输出,可以加上(-e)
# 达到与ifconfig命令类似的效果
$ netstat -ie
Kernel Interface table
eth1      Link encap:Ethernet  HWaddr 44:39:c4:8d:d9:64
        inet addr:172.26.50.13  Bcast:172.26.50.255  Mask:255.255.255.0
        inet6 addr: fe80::4639:c4ff:fe8d:d964/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:10651112 errors:0 dropped:0 overruns:0 frame:0
        TX packets:10656940 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:6607723134 (6.6 GB)  TX bytes:10396843122 (10.3 GB)
        Interrupt:20 Memory:f7c00000-f7c20000

lo        Link encap:Local Loopback
        inet addr:127.0.0.1  Mask:255.0.0.0
        inet6 addr: ::1/128 Scope:Host
        UP LOOPBACK RUNNING  MTU:65536  Metric:1
        RX packets:5095811 errors:0 dropped:0 overruns:0 frame:0
        TX packets:5095811 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:0
        RX bytes:2717552755 (2.7 GB)  TX bytes:2717552755 (2.7 GB)

vboxnet0  Link encap:Ethernet  HWaddr 0a:00:27:00:00:00
        inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
        inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:1505 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:0 (0.0 B)  TX bytes:130893 (130.8 KB)