Linux命令详解之–netstat命令

摘要
本文目录
[隐藏]

本文 Linux大学 为大家介绍下Linux的 netstat命令。netstat命令是一个网络管理类命令,可以显示IP、TCP、UDP和ICMP协议相关的统计数据,一般用来检验主机端口的网络连接情况。

更多Linux命令详情请看:Linux命令速查手册

netstat

一、Linux netstat命令语法

linux netstat命令 语法格式非常繁杂,手册中给出的命令格式就如下图所示:

image

因此,我们在此不将其用法一一介绍,只捡几种比较常用的语法格式来进行介绍。

归纳来说,平时常用的语法格式如下所示:

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

主要参数及介绍如下:

-a或--all 显示所有连线中的Socket。
-A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
-c或--continuous 持续列出网络状态。
-C或--cache 显示路由器配置的快取信息。
-e或--extend 显示网络其他相关信息。
-F或--fib 显示FIB。
-g或--groups 显示多重广播功能群组组员名单。
-h或--help 在线帮助。
-i或--interfaces 显示网络界面信息表单。
-l或--listening 显示监控中的服务器的Socket。
-M或--masquerade 显示伪装的网络连线。
-n或--numeric 直接使用IP地址,而不通过域名服务器。
-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
-o或--timers 显示计时器。
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
-r或--route 显示Routing Table。
-s或--statistice 显示网络工作信息统计表。
-t或--tcp 显示TCP传输协议的连线状况。
-u或--udp 显示UDP传输协议的连线状况。
-v或--verbose 显示指令执行过程。
-V或--version 显示版本信息。
-w或--raw 显示RAW传输协议的连线状况。
-x或--unix 此参数的效果和指定"-A unix"参数相同。
--ip或--inet 此参数的效果和指定"-A inet"参数相同。

二、Linux netstat命令使用示例

1)查看主机网络连接情况

[linuxdaxue.com@/home/linuxdaxue.com]$netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 192.168.10.1:http         122.114.128.126:pptp        SYN_RECV    
tcp        0      0 192.168.10.1:http         122.114.128.126:telindus    TIME_WAIT   
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ]         DGRAM                    7024   @/org/kernel/udev/udevd
unix  7      [ ]         DGRAM                    8361   /dev/log
unix  2      [ ]         DGRAM                    1557059 
unix  2      [ ]         DGRAM                    1556987 
unix  3      [ ]         STREAM     CONNECTED     9627   /tmp/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix  3      [ ]         STREAM     CONNECTED     9626   
unix  2      [ ]         DGRAM                    9594   
unix  2      [ ]         DGRAM                    9419   
unix  2      [ ]         DGRAM                    8712   
unix  3      [ ]         STREAM     CONNECTED     8662   
unix  3      [ ]         STREAM     CONNECTED     8661   
unix  3      [ ]         STREAM     CONNECTED     8660   
unix  3      [ ]         STREAM     CONNECTED     8659   
unix  3      [ ]         DGRAM                    7038   
unix  3      [ ]         DGRAM                    7037   
[linuxdaxue.com@/home/linuxdaxue.com]$

说明:

netstat的输出结果可以分为两个部分:

一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

套接口类型:

-t :TCP

-u :UDP

-raw :RAW类型

--unix :UNIX域类型

--ax25 :AX25类型

--ipx :ipx类型

--netrom :netrom类型

状态说明:

LISTEN:侦听来自远方的TCP端口的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)

ESTABLISHED:代表一个打开的连接

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2:从远程TCP等待连接中断请求

CLOSE-WAIT:等待从本地用户发来的连接中断请求

CLOSING:等待远程TCP对连接中断的确认

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认

CLOSED:没有任何连接状态

2)显示主机所有端口

[linuxdaxue.com@/home/linuxdaxue.com]$netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:distinct32                *:*                         LISTEN      
tcp        0      0 *:distinct                  *:*                         LISTEN      
tcp        0      0 *:webcache                  *:*                         LISTEN      
tcp        0      0 *:http                      *:*                         LISTEN      
tcp        0      0 *:ssh                       *:*                         LISTEN 
#....................以下省略..................Linuxdaxue.com.......................#

使用 –a 参数可以列出主机所有端口

3)显示UDP连接状况

[linuxdaxue.com@/home/linuxdaxue.com]$netstat -nu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State

演示主机当前无UDP链接

4)显示UDP端口使用情况

[linuxdaxue.com@/home/linuxdaxue.com]$netstat -apu
(No info could be read for "-p": geteuid()=111 but you should be root.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
udp        0      0 192.114.12.15:ntp          *:*                                     -                   
udp        0      0 iZ28qs2fgobZ:ntp            *:*                                     -                   
udp        0      0 localhost:ntp               *:*                                     -                   
udp        0      0 *:ntp                       *:*                                     -                   
[linuxdaxue.com@/home/linuxdaxue.com]$

5)显示网卡列表信息

[linuxdaxue.com@/home/linuxdaxue.com]$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
eth0       1500   0    23139      0      0      0    31833      0      0      0 BMRU
eth1       1500   0  4685152      0      0      0  4511821      0      0      0 BMRU
lo        16436   0    97576      0      0      0    97576      0      0      0 LRU
[linuxdaxue.com@/home/linuxdaxue.com]$

6)显示所有TCP端口

[linuxdaxue.com@/home/linuxdaxue.com]$netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:distinct32                *:*                         LISTEN      
tcp        0      0 *:distinct                  *:*                         LISTEN      
tcp        0      0 *:webcache                  *:*                         LISTEN      
tcp        0      0 *:http                      *:*                         LISTEN

7)找出运行在指定端口的进程

[root@/root]#netstat -anpt | grep ':80'
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      1309/monitorix-http 
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1128/httpd          
tcp        0      0 192.168.124.17:80           162.244.95.175:32802        TIME_WAIT   -

好了,有关 Linux netstat命令的相关内容就先为大家介绍到这里,netstat是一个非常强大的命令,希望大家能熟练使用。

更多Linux命令详情请看:Linux命令速查手册

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: