linux命令分享:netstat命令详解,netstat命令详解


netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用netstat查一查为什么会出现这些情况了。

1.命令格式:

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

2.命令功能:

netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

3.命令参数:

-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显示RoutingTable。

-s或–statistice显示网络工作信息统计表。

-t或–tcp显示TCP传输协议的连线状况。

-u或–udp显示UDP传输协议的连线状况。

-v或–verbose显示指令执行过程。

-V或–version显示版本信息。

-w或–raw显示RAW传输协议的连线状况。

-x或–unix此参数的效果和指定”-Aunix”参数相同。

–ip或–inet此参数的效果和指定”-Ainet”参数相同。

4.使用实例:

实例1:无参数使用

命令:

netstat

输出:

[root@localhost~]#netstat

ActiveInternetconnections(w/oservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp0268192.168.120.204:ssh10.2.0.68:62420ESTABLISHED

udp00192.168.120.204:437110.58.119.119:domainESTABLISHED

ActiveUNIXdomainsockets(w/oservers)

ProtoRefCntFlagsTypeStateI-NodePath

unix2[]DGRAM1491@/org/kernel/udev/udevd

unix4[]DGRAM7337/dev/log

unix2[]DGRAM708823

unix2[]DGRAM7539

unix3[]STREAMCONNECTED7287

unix3[]STREAMCONNECTED7286

[root@localhost~]#

说明:

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

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

另一个是ActiveUNIXdomainsockets,称为有源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:列出所有端口

命令:

netstat-a

输出:

[root@localhost~]#netstat-a

ActiveInternetconnections(serversandestablished)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp00localhost:smux*:*LISTEN

tcp00*:svn*:*LISTEN

tcp00*:ssh*:*LISTEN

tcp0284192.168.120.204:ssh10.2.0.68:62420ESTABLISHED

udp00localhost:syslog*:*

udp00*:snmp*:*

ActiveUNIXdomainsockets(serversandestablished)

ProtoRefCntFlagsTypeStateI-NodePath

unix2[ACC]STREAMLISTENING708833/tmp/ssh-yKnDB15725/agent.15725

unix2[ACC]STREAMLISTENING7296/var/run/audispd_events

unix2[]DGRAM1491@/org/kernel/udev/udevd

unix4[]DGRAM7337/dev/log

unix2[]DGRAM708823

unix2[]DGRAM7539

unix3[]STREAMCONNECTED7287

unix3[]STREAMCONNECTED7286

[root@localhost~]#

说明:

显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请(LISTENING)的那些连接。

实例3:显示当前UDP连接状况

命令:

netstat-nu

输出:

[root@andy~]#netstat-nu

ActiveInternetconnections(w/oservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

udp00::ffff:192.168.12:53392::ffff:192.168.9.120:10000ESTABLISHED

udp00::ffff:192.168.12:56723::ffff:192.168.9.120:10000ESTABLISHED

udp00::ffff:192.168.12:56480::ffff:192.168.9.120:10000ESTABLISHED

udp00::ffff:192.168.12:58154::ffff:192.168.9.120:10000ESTABLISHED

udp00::ffff:192.168.12:44227::ffff:192.168.9.120:10000ESTABLISHED

udp00::ffff:192.168.12:36954::ffff:192.168.9.120:10000ESTABLISHED

udp00::ffff:192.168.12:53984::ffff:192.168.9.120:10000ESTABLISHED

udp00::ffff:192.168.12:57703::ffff:192.168.9.120:10000ESTABLISHED

udp00::ffff:192.168.12:53613::ffff:192.168.9.120:10000ESTABLISHED

[root@andy~]#

说明:

实例4:显示UDP端口号的使用情况

命令:

netstat-apu

输出:

[root@andy~]#netstat-apu

ActiveInternetconnections(serversandestablished)

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname

udp00*:57604*:*28094/java

udp00*:40583*:*21220/java

udp00*:45451*:*14583/java

udp00::ffff:192.168.12:53392::ffff:192.168.9.120:ndmpESTABLISHED19327/java

udp00*:52370*:*15841/java

udp00::ffff:192.168.12:56723::ffff:192.168.9.120:ndmpESTABLISHED15841/java

udp00*:44182*:*31757/java

udp00*:48155*:*5476/java

udp00*:59808*:*17333/java

udp00::ffff:192.168.12:56480::ffff:192.168.9.120:ndmpESTABLISHED28094/java

udp00::ffff:192.168.12:58154::ffff:192.168.9.120:ndmpESTABLISHED15429/java

udp00*:36780*:*10091/java

udp00*:36795*:*24594/java

udp00*:41922*:*20506/java

udp00::ffff:192.168.12:44227::ffff:192.168.9.120:ndmpESTABLISHED17333/java

udp00*:34258*:*8866/java

udp00*:55508*:*11667/java

udp00*:36055*:*12425/java

udp00::ffff:192.168.12:36954::ffff:192.168.9.120:ndmpESTABLISHED16532/java

udp00::ffff:192.168.12:53984::ffff:192.168.9.120:ndmpESTABLISHED20506/java

udp00::ffff:192.168.12:57703::ffff:192.168.9.120:ndmpESTABLISHED31757/java

udp00::ffff:192.168.12:53613::ffff:192.168.9.120:ndmpESTABLISHED3199/java

udp00*:56309*:*15429/java

udp00*:54007*:*16532/java

udp00*:39544*:*3199/java

udp00*:43900*:*19327/java

[root@andy~]#

说明:

实例5:显示网卡列表

命令:

netstat-i

输出:

[root@andy~]#netstat-i

KernelInterfacetable

IfaceMTUMetRX-OKRX-ERRRX-DRPRX-OVRTX-OKTX-ERRTX-DRPTX-OVRFlg

eth015000151818887000198928403000BMRU

lo164360107235000107235000LRU

[root@andy~]#

说明:

实例6:显示组播组的关系

命令:

netstat-g

输出:

[root@andy~]#netstat-g

IPv6/IPv4GroupMemberships

InterfaceRefCntGroup

——————————————

lo1all-systems.mcast.net

eth01all-systems.mcast.net

lo1ff02::1

eth01ff02::1:ffff:9b0c

eth01ff02::1

[root@andy~]#

说明:

实例7:显示网络统计信息

命令:

netstat-s

输出:

[root@localhost~]#netstat-s

Ip:

530999totalpacketsreceived

0forwarded

0incomingpacketsdiscarded

530999incomingpacketsdelivered

8258requestssentout

1droppedbecauseofmissingroute

Icmp:

90ICMPmessagesreceived

0inputICMPmessagefailed.

ICMPinputhistogram:

destinationunreachable:17

echorequests:1

echoreplies:72

106ICMPmessagessent

0ICMPmessagesfailed

ICMPoutputhistogram:

destinationunreachable:8

echorequest:97

echoreplies:1

IcmpMsg:

InType0:72

InType3:17

InType8:1

OutType0:1

OutType3:8

OutType8:97

Tcp:

8activeconnectionsopenings

15passiveconnectionopenings

8failedconnectionattempts

3connectionresetsreceived

1connectionsestablished

3132segmentsreceived

2617segmentssendout

53segmentsretransmited

0badsegmentsreceived.

252resetssent

Udp:

0packetsreceived

0packetstounknownportreceived.

0packetreceiveerrors

5482packetssent

TcpExt:

1invalidSYNcookiesreceived

1TCPsocketsfinishedtimewaitinfasttimer

57delayedackssent

Quickackmodewasactivated50times

60packetsdirectlyqueuedtorecvmsgprequeue.

68packetsdirectlyreceivedfrombacklog

4399packetsdirectlyreceivedfromprequeue

520packetsheaderpredicted

51packetsheaderpredictedanddirectlyqueuedtouser

1194acknowledgmentsnotcontainingdatareceived

21predictedacknowledgments

0TCPdatalossevents

1timeoutsafterrenofastretransmit

9retransmitsinslowstart

42otherTCPtimeouts

3connectionsabortedduetotimeout

IpExt:

InBcastPkts:527777

说明:

按照各个协议分别显示其统计数据。如果我们的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。

实例8:显示监听的套接口

命令:

netstat-l

输出:

[root@localhost~]#netstat-l

ActiveInternetconnections(onlyservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp00localhost:smux*:*LISTEN

tcp00*:svn*:*LISTEN

tcp00*:ssh*:*LISTEN

udp00localhost:syslog*:*

udp00*:snmp*:*

ActiveUNIXdomainsockets(onlyservers)

ProtoRefCntFlagsTypeStateI-NodePath

unix2[ACC]STREAMLISTENING708833/tmp/ssh-yKnDB15725/agent.15725

unix2[ACC]STREAMLISTENING7296/var/run/audispd_events

[root@localhost~]#

说明:

实例9:显示所有已建立的有效连接

命令:

netstat-n

输出:

[root@localhost~]#netstat-n

ActiveInternetconnections(w/oservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp0268192.168.120.204:2210.2.0.68:62420ESTABLISHED

ActiveUNIXdomainsockets(w/oservers)

ProtoRefCntFlagsTypeStateI-NodePath

unix2[]DGRAM1491@/org/kernel/udev/udevd

unix4[]DGRAM7337/dev/log

unix2[]DGRAM708823

unix2[]DGRAM7539

unix3[]STREAMCONNECTED7287

unix3[]STREAMCONNECTED7286

[root@localhost~]#

说明:

实例10:显示关于以太网的统计数据

命令:

netstat-e

输出:

[root@localhost~]#netstat-e

ActiveInternetconnections(w/oservers)

ProtoRecv-QSend-QLocalAddressForeignAddressStateUserInode

tcp0248192.168.120.204:ssh10.2.0.68:62420ESTABLISHEDroot708795

ActiveUNIXdomainsockets(w/oservers)

ProtoRefCntFlagsTypeStateI-NodePath

unix2[]DGRAM1491@/org/kernel/udev/udevd

unix4[]DGRAM7337/dev/log

unix2[]DGRAM708823

unix2[]DGRAM7539

unix3[]STREAMCONNECTED7287

unix3[]STREAMCONNECTED7286

[root@localhost~]#

说明:

用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量)

实例11:显示关于路由表的信息

命令:

netstat-r

输出:

[root@localhost~]#netstat-r

KernelIProutingtable

DestinationGatewayGenmaskFlagsMSSWindowirttIface

192.168.120.0*255.255.255.0U000eth0

192.168.0.0192.168.120.1255.255.0.0UG000eth0

10.0.0.0192.168.120.1255.0.0.0UG000eth0

default192.168.120.2400.0.0.0UG000eth0

[root@localhost~]#

说明:

实例12:列出所有tcp端口

命令:

netstat-at

输出:

[root@localhost~]#netstat-at

ActiveInternetconnections(serversandestablished)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp00localhost:smux*:*LISTEN

tcp00*:svn*:*LISTEN

tcp00*:ssh*:*LISTEN

tcp0284192.168.120.204:ssh10.2.0.68:62420ESTABLISHED

[root@localhost~]#

说明:

实例13:统计机器中网络连接各个状态个数

命令:

netstat-a|awk’/^tcp/{++S[NF]} END {for(a in S) print a, S[a]}'

输出:

[root@localhost ~]# netstat -a | awk '/^tcp/ {++S[NF]} END {for(a in S) print a, S[a]}'

ESTABLISHED 1

LISTEN 3

[root@localhost ~]#

说明:

实例14:把状态全都取出来后使用uniq -c统计后再进行排序

命令:

netstat -nat |awk '{print 6}'|sort|uniq -c

输出:

相关内容