Netstat命令用于显示各种网络相关信息,如网络连接,路由表信息,接口状态(Interface Statistics),伪装连接和多播成员(multicast memberships)。
# netstat -[atunlp]
参数:
- -a :将目前系统上所有的连接、监听、Socket数据都列出来;
- -t :列出tcp网络数据包的数据;
- -u :列出udp网络数据包的数据;
- -n :不列出进程的服务名称,以端口号(port number)来显示;
- -l :列出目前正在网络监听(listen)的服务;
- -p :列出该网络服务的进程PID;
列子:
1、列出目前系统已经新建的网络连接与unix socket状态
# netstat
Active Internet connections (w/o servers) <== 与网络比较的部分
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:54447 124.40.42.38:http ESTABLISHED
Active UNIX domain sockets (w/o servers) <== 与本机的进程自己的相关性(非网络)
Proto RefCnt Flags Type State I-Node Path
unix 5 [ ] DGRAM 22875 /dev/log
unix 2 [ ] DGRAM 8659 @/org/kernel/udev/udevd
unix 2 [ ] DGRAM 12899 @/org/freedesktop/hal/udev_event
unix 2 [ ] DGRAM 27725
unix 2 [ ] DGRAM 25184
unix 3 [ ] STREAM CONNECTED 25162 /var/run/dbus/system_bus_socket
unix 3 [ ] STREAM CONNECTED 25161
unix 3 [ ] STREAM CONNECTED 23229 @/tmp/dbus-lFrib2quQy
unix 3 [ ] STREAM CONNECTED 23228
unix 2 [ ] DGRAM 23184
在上面的结果当中,显示了两个部分,分别是“网络连接”和“linux上面的socket程序相关性部分”。
我们先来看看因特网连接情况的部分:
- Proto :网络的数据包协议,主要分为TCP与UDP数据包。
- Recv-Q :由非用户进程连接到此socket的复制的总字节数;
- Send-Q :由非远程主机传送过来的acknowledgedz总字节数;
- LocalAddress :本地的IP端口情况;
- ForeignAddress :远程主机的IP端口情况;
- State :连接状态,主要有建立(ESTABLISED)及监听(LISTEN)。
以下是与进程相关的部分:
- Proto :一般就是unix;
- RefCnt :连接到此socket的进程数量;
- Flags :连接的标识;
- Type :socket访问的类型。主要有确认连接的STREAM与不需确认的DGRAM两种;
- State : 若为CONNECTED表示多个进程之间已经连接建立;
- Path :连接到此socket的相关程序的路径,或者是相关数据输出的路径。
2、找出目前系统上已在监听的网络连接及其PID
# netstat -tlnp