netstat :追踪网络

这个 netstat 也是挺好玩的,其实这个命令比较常被用在网络的监控方面,不过,在程序管理方面也是需要了解! 

这个命令的运行如下所示:基本上, netstat 的输出分为两大部分,分别是网络与系统自己的程序相关性部分:


[root@instructor ~]#  netstat -[atunlp]
选项与参数:
-a  :将目前系统上所有的连线、监听、Socket 数据都列出来
-t  :列出 tcp 网络封包的数据
-u  :列出 udp 网络封包的数据
-n  :不以程序的服务名称,以端口号 (port number) 来显示;
-l  :列出目前正在网络监听 (listen) 的服务;
-p  :列出该网络服务的程序 PID 


范例一:列出目前系统已经创建的网络连线与 unix socket 状态
[root@instructor ~]#  netstat
Active Internet connections (w/o servers) <==与网络较相关的部分
Proto Recv-Q Send-Q Local Address        Foreign Address      State
tcp        0    132 192.168.201.110:ssh  192.168.:vrtl-vmf-sa ESTABLISHED
Active UNIX domain sockets (w/o servers)  <==与本机的程序自己的相关性(非网络)
Proto RefCnt Flags       Type       State         I-Node Path
unix  20     [ ]         DGRAM                    9153   /dev/log
unix  3      [ ]         STREAM     CONNECTED     13317  /tmp/.X11-unix/X0
unix  3      [ ]         STREAM     CONNECTED     13233  /tmp/.X11-unix/X0
unix  3      [ ]         STREAM     CONNECTED     13208  /tmp/.font-unix/fs7100

....(中间省略)....


在上面的结果当中,显示了两个部分,分别是网络的连线以及 linux 上面的 socket 程序相关性部分。 我们先来看看网际网络连线情况的部分:


Proto :网络的封包协议,主要分为 TCP 与 UDP 封包。
Recv-Q:不是由使用者程序连结到此 socket 的复制的总 bytes 数; 
Send-Q:不是由远程主机传送过来的 acknowledged 总 bytes 数; 
Local Address :本地端的 IP:port 情况 
Foreign Address:远程主机的 IP:port 情况 
State :连线状态,主要有创建(ESTABLISED)及监听(LISTEN); 
我们看上面仅有一条连线的数据,他的意义是:透过 TCP 封包的连线,远程的 192.168.:vrtl.. 连线到本地端的 192.168.201.110:ssh ,这条连线状态是创建 (ESTABLISHED) 的状态!

除了网络上的连线之外,其实 Linux 系统上面的程序是可以接收不同程序所发送来的资讯,那就是 Linux 上头的插槽文件 (socket file)。socket file 可以沟通两个程序之间的资讯,因此程序可以取得对方传送过来的数据。 由于有 socket file,因此类似 X Window 这种需要透过网络连接的软件,目前新版的 distributions 就以 socket 来进行窗口介面的连线沟通了。上表中 socket file 的输出栏位有:


Proto :一般就是 unix ; 
RefCnt:连接到此 socket 的程序数量; 
Flags :连线的旗标; 
Type :socket 存取的类型。主要有确认连线的 STREAM 与不需确认的 DGRAM 两种; 
State :若为 CONNECTED 表示多个程序之间已经连线创建。 
Path :连接到此 socket 的相关程序的路径!或者是相关数据输出的路径。 
以上的输出为例,最后那三行在 /tmp/.xx 底下的数据,就是 X Window 窗口介面的相关程序! 而 PATH 指向的就是这些程序要交换数据的插槽文件!

范例二:找出目前系统上已在监听的网络连线及其 PID
[root@instructor ~]#  netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:2208   0.0.0.0:*        LISTEN  4566/hpiod
tcp        0      0 0.0.0.0:111      0.0.0.0:*        LISTEN  4328/portmap
tcp        0      0 127.0.0.1:631    0.0.0.0:*        LISTEN  4597/cupsd
tcp        0      0 0.0.0.0:728      0.0.0.0:*        LISTEN  4362/rpc.statd
tcp        0      0 127.0.0.1:25     0.0.0.0:*        LISTEN  4629/sendmail: 
tcp        0      0 127.0.0.1:2207   0.0.0.0:*        LISTEN  4571/python
tcp        0      0 :::22            :::*             LISTEN  4586/sshd
# 除了可以列出监听网络的介面与状态之外,最后一个栏还能够显示此服务的 PID 号码以及程序的命令名称喔!例如最后一行的 4586 就是该 PID

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章