主机知识库
分享服务器知识

如何在Linux中使用netstat命令

今天本站向您展示了如何在Linux中使用netstat命令。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

1命令格式:

netstat[-access hilmnnopsutvvwx][-一种网络类型] [-IP]

2命令功能:

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

3命令参数:

-a或ndash所有显示所有连接中的套接字。

-网络类型或ndash网络类型列出了该网络类型连接中的相关地址。

-c或ndash连续列出网络状态。

-C或ndash缓存显示路由器配置的缓存信息。

-e或ndash扩展显示网络的其他信息。

-F或ndashfib显示FIB。

-g或ndash组显示多播功能组的成员列表。

-h或ndash帮助在线帮助。

-i或ndash接口显示网络接口信息表单。

-l或ndash监听显示监控下的服务器插座。

-M或ndash伪装显示伪装的网络连接。

-n或ndash数字直接使用IP地址而不是域名服务器

-N或ndashNetlink或ndash符号显示网络硬件外围设备的符号连接名称。

-o或ndash计时器显示计时器。

-p或ndash程序显示正在使用的套接字的程序标识和程序名称。

-r或ndash路由显示路由表。

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

-t或ndashTcp显示TCP传输协议的连接状态。

-u或ndashUdp显示UDP传输协议的连接状态。

-v或ndash详细显示指令执行过程。

-V或ndash版本显示版本信息。

-w或ndash原始显示原始传输协议的连接状态。

-x或ndashUnix此参数与指定“-Aunix”参数具有相同的效果。

ndashIp或ndashInet此参数与指定“-aine”参数具有相同的效果。

4使用实例:

示例1:不带参数使用

命令:netstat

输出:

代码如下:

[root@localhost ~]# netstat

主动互联网连接(无服务器)

原接收方发送方本地地址外地地址状态

TCP 0 268 192 . 168 . 120 . 204: sh 10 . 2 . 0 . 2043333361

UDP 0 0 192 . 168 . 120 . 204:4371 10 . 58 . 119 . 119: domain ESSENDED

活动的UNIX域套接字(不带服务器)

原型反射标志类型状态一节点路径

UNIX 2[]DGRAM 1491 @/org/kernel/udev/ude VD

unix 4 [ ] DGRAM 7337 /dev/log

unix 2 [ ] DGRAM 708823

unix 2 [ ] DGRAM 7539

unix 3 [ ] STREAM CONNECTED 7287

unix 3 [ ] STREAM CONNECTED 7286

[root@localhost ~]#

描述:

总的来说,netstat的输出可以分为两部分:

一种是主动互联网连接,称为主动传输控制协议连接,其中“接收队列”和“发送队列”指的是接收队列和发送队列。这些数字一般应该是0。如果没有,说明包裹在队列中堆积。这种情况只能在极少数情况下看到。

另一种是主动UNIX域套接字,称为主动UNIX域windows套接字(与网络套接字相同,但仅用于本机通信)

,性能可以提高一倍)。

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 -aActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:smux *:* LISTEN tcp 0 0 *:svn *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 284 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED udp 0 0 localhost:syslog *:* udp 0 0 *:snmp *:* Active UNIX domain sockets (servers and established)Proto RefCnt Flags Type State I-Node Pathunix 2 [ ACC ] STREAM LISTENING 708833 /tmp/ssh-yKnDB15725/agent.15725unix 2 [ ACC ] STREAM LISTENING 7296 /var/run/audispd_eventsunix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevdunix 4 [ ] DGRAM 7337 /dev/logunix 2 [ ] DGRAM 708823 unix 2 [ ] DGRAM 7539 unix 3 [ ] STREAM CONNECTED 7287 unix 3 [ ] STREAM CONNECTED 7286 [root@localhost ~]#

说明:

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

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

命令:netstat-nu

输出:

代码如下:

[root@andy ~]# netstat -nuActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 ::ffff:192.168.12:53392 ::ffff:192.168.9.120:10000 ESTABLISHED udp 0 0 ::ffff:192.168.12:56723 ::ffff:192.168.9.120:10000 ESTABLISHED udp 0 0 ::ffff:192.168.12:56480 ::ffff:192.168.9.120:10000 ESTABLISHED udp 0 0 ::ffff:192.168.12:58154 ::ffff:192.168.9.120:10000 ESTABLISHED udp 0 0 ::ffff:192.168.12:44227 ::ffff:192.168.9.120:10000 ESTABLISHED udp 0 0 ::ffff:192.168.12:36954 ::ffff:192.168.9.120:10000 ESTABLISHED udp 0 0 ::ffff:192.168.12:53984 ::ffff:192.168.9.120:10000 ESTABLISHED udp 0 0 ::ffff:192.168.12:57703 ::ffff:192.168.9.120:10000 ESTABLISHED udp 0 0 ::ffff:192.168.12:53613 ::ffff:192.168.9.120:10000 ESTABLISHED [root@andy ~]#

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

命令:netstat-apu

输出:

代码如下:

[root@andy ~]# netstat -apuActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 *:57604 *:* 28094/java udp 0 0 *:40583 *:* 21220/java udp 0 0 *:45451 *:* 14583/java udp 0 0 ::ffff:192.168.12:53392 ::ffff:192.168.9.120:ndmp ESTABLISHED 19327/java udp 0 0 *:52370 *:* 15841/java udp 0 0 ::ffff:192.168.12:56723 ::ffff:192.168.9.120:ndmp ESTABLISHED 15841/java udp 0 0 *:44182 *:* 31757/java udp 0 0 *:48155 *:* 5476/java udp 0 0 *:59808 *:* 17333/java udp 0 0 ::ffff:192.168.12:56480 ::ffff:192.168.9.120:ndmp ESTABLISHED 28094/java udp 0 0 ::ffff:192.168.12:58154 ::ffff:192.168.9.120:ndmp ESTABLISHED 15429/java udp 0 0 *:36780 *:* 10091/java udp 0 0 *:36795 *:* 24594/java udp 0 0 *:41922 *:* 20506/java udp 0 0 ::ffff:192.168.12:44227 ::ffff:192.168.9.120:ndmp ESTABLISHED 17333/java udp 0 0 *:34258 *:* 8866/java udp 0 0 *:55508 *:* 11667/java udp 0 0 *:36055 *:* 12425/java udp 0 0 ::ffff:192.168.12:36954 ::ffff:192.168.9.120:ndmp ESTABLISHED 16532/java udp 0 0 ::ffff:192.168.12:53984 ::ffff:192.168.9.120:ndmp ESTABLISHED 20506/java udp 0 0 ::ffff:192.168.12:57703 ::ffff:192.168.9.120:ndmp ESTABLISHED 31757/java udp 0 0 ::ffff:192.168.12:53613 ::ffff:192.168.9.120:ndmp ESTABLISHED 3199/java udp 0 0 *:56309 *:* 15429/java udp 0 0 *:54007 *:* 16532/java udp 0 0 *:39544 *:* 3199/java udp 0 0 *:43900 *:* 19327/java [root@andy ~]#

实例5:显示网卡列表

命令:netstat-i

输出:

代码如下:

[root@andy ~]# netstat -iKernel Interface tableIface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgeth0 1500 0 151818887 0 0 0 198928403 0 0 0 BMRUlo 16436 0 107235 0 0 0 107235 0 0 0 LRU[root@andy ~]#

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

命令:netstat-g

输出:

代码如下:

[root@andy ~]# netstat -gIPv6/IPv4 Group MembershipsInterface RefCnt Group————— —— ———————lo 1 all-systems.mcast.neteth0 1 all-systems.mcast.netlo 1 ff02::1eth0 1 ff02::1:ffff:9b0ceth0 1 ff02::1[root@andy ~]#

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

命令:netstat-s

输出:

代码如下:

[root@localhost ~]# netstat -sIp:530999 total packets received0 forwarded0 incoming packets discarded530999 incoming packets delivered8258 requests sent out1 dropped because of missing routeIcmp:90 ICMP messages received0 input ICMP message failed.ICMP input histogram:destination unreachable: 17echo requests: 1echo replies: 72106 ICMP messages sent0 ICMP messages failedICMP output histogram:destination unreachable: 8echo request: 97echo replies: 1IcmpMsg:InType0: 72InType3: 17InType8: 1OutType0: 1OutType3: 8OutType8: 97Tcp:8 active connections openings15 passive connection openings8 failed connection attempts3 connection resets received1 connections established3132 segments received2617 segments send out53 segments retransmited0 bad segments received.252 resets sentUdp:0 packets received0 packets to unknown port received.0 packet receive errors5482 packets sentTcpExt:1 invalid SYN cookies received1 TCP sockets finished time wait in fast timer57 delayed acks sentQuick ack mode was activated 50 times60 packets directly queued to recvmsg prequeue.68 packets directly received from backlog4399 packets directly received from prequeue520 packets header predicted51 packets header predicted and directly queued to user1194 acknowledgments not containing data received21 predicted acknowledgments0 TCP data loss events1 timeouts after reno fast retransmit9 retransmits in slow start42 other TCP timeouts3 connections aborted due to timeoutIpExt:InBcastPkts: 527777

说明:

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

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

命令:netstat-l

输出:

代码如下:

[root@localhost ~]# netstat -lActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:smux *:* LISTEN tcp 0 0 *:svn *:* LISTEN tcp 0 0 *:ssh *:* LISTEN udp 0 0 localhost:syslog *:* udp 0 0 *:snmp *:* Active UNIX domain sockets (only servers)Proto RefCnt Flags Type State I-Node Pathunix 2 [ ACC ] STREAM LISTENING 708833 /tmp/ssh-yKnDB15725/agent.15725unix 2 [ ACC ] STREAM LISTENING 7296 /var/run/audispd_events[root@localhost ~]#

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

命令:netstat-n

输出:

代码如下:

[root@localhost ~]# netstat -nActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 268 192.168.120.204:22 10.2.0.68:62420 ESTABLISHED Active UNIX domain sockets (w/o servers)Proto RefCnt Flags Type State I-Node Pathunix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevdunix 4 [ ] DGRAM 7337 /dev/logunix 2 [ ] DGRAM 708823 unix 2 [ ] DGRAM 7539 unix 3 [ ] STREAM CONNECTED 7287 unix 3 [ ] STREAM CONNECTED 7286 [root@localhost ~]#

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

命令:netstat-e

输出:

代码如下:

[root@localhost ~]# netstat -eActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address State User Inode tcp 0 248 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED root 708795 Active UNIX domain sockets (w/o servers)Proto RefCnt Flags Type State I-Node Pathunix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevdunix 4 [ ] DGRAM 7337 /dev/logunix 2 [ ] DGRAM 708823 unix 2 [ ] DGRAM 7539 unix 3 [ ] STREAM CONNECTED 7287 unix 3 [ ] STREAM CONNECTED 7286 [root@localhost ~]#

说明:

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

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

命令:netstat-r

输出:

代码如下:

[root@localhost ~]# netstat -rKernel IP routing tableDestination Gateway Genmask Flags MSS Window irtt Iface192.168.120.0 * 255.255.255.0 U 0 0 0 eth0192.168.0.0 192.168.120.1 255.255.0.0 UG 0 0 0 eth010.0.0.0 192.168.120.1 255.0.0.0 UG 0 0 0 eth0default 192.168.120.240 0.0.0.0 UG 0 0 0 eth0[root@localhost ~]#

实例12:列出所有tcp端口

命令:netstat-at

输出:

代码如下:

[root@localhost ~]# netstat -atActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:smux *:* LISTEN tcp 0 0 *:svn *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 284 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED [root@localhost ~]#

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

命令:netstat-a|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'

输出:

代码如下:

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

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

命令:netstat-nat|awk'{print$6}'|sort|uniq-c

输出:

代码如下:

[root@andy ~]# netstat -nat |awk '{print $6}'|sort|uniq -c14 CLOSE_WAIT1 established)578 ESTABLISHED1 Foreign43 LISTEN5 TIME_WAIT[root@andy ~]# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn576 ESTABLISHED43 LISTEN14 CLOSE_WAIT5 TIME_WAIT1 Foreign1 established)[root@andy ~]#

实例15:查看连接某服务端口最多的的IP地址

命令:netstat-nat|grep"192.168.120.20:16067"|awk'{print$5}'|awk-F:'{print$4}'|sort|uniq-c|sort-nr|head-20

输出:

代码如下:

[root@andy ~]# netstat -nat | grep "192.168.120.20:16067" |awk '{print $5}'|awk -F: '{print $4}'|sort|uniq -c|sort -nr|head -208 10.2.1.687 192.168.119.136 192.168.119.2016 192.168.119.206 192.168.119.104 10.2.1.1993 10.2.1.2072 192.168.120.202 192.168.120.152 192.168.119.1972 192.168.119.112 10.2.1.2062 10.2.1.2032 10.2.1.1892 10.2.1.1731 192.168.120.181 192.168.119.191 10.2.2.2271 10.2.2.1381 10.2.1.208[root@andy ~]#

实例16:找出程序运行的端口

命令:netstat-ap|grepssh

输出:

代码如下:

[root@andy ~]# netstat -ap | grep sshtcp 0 0 *:ssh *:* LISTEN 2570/sshd tcp 0 0 ::ffff:192.168.120.206:ssh ::ffff:10.2.1.205:54508 ESTABLISHED 13883/14 tcp 0 0 ::ffff:192.168.120.206:ssh ::ffff:10.2.0.68:62886 ESTABLISHED 20900/6 tcp 0 0 ::ffff:192.168.120.206:ssh ::ffff:10.2.2.131:52730 ESTABLISHED 20285/sshd: root@no unix 2 [ ACC ] STREAM LISTENING 194494461 20900/6 /tmp/ssh-cXIJj20900/agent.20900unix 3 [ ] STREAM CONNECTED 194307443 20285/sshd: root@no unix 3 [ ] STREAM CONNECTED 194307441 20285/sshd: root@no [root@andy ~]#

实例17:在netstat输出中显示PID和进程名称

命令:netstat-pt

输出:

代码如下:

[root@localhost ~]# netstat -ptActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 248 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED 15725/0 [root@localhost ~]#

说明:

netstat-p可以与其它开关一起使用,就可以添加“PID/进程名称”到netstat输出中,这样debugging的时候可以很方便的发现特定端口运行的程序。

实例18:找出运行在指定端口的进程

命令:netstat-anpt|grep':16064'

输出:

代码如下:

[root@andy ~]# netstat -anpt | grep ':16064'tcp 0 0 :::16064 :::* LISTEN 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.201:6462 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:26341 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:32208 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:32207 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:51303 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:51302 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50020 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50019 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56155 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50681 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50680 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:52136 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56989 ESTABLISHED 24594/java tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56988 ESTABLISHED 24594/java [root@andy ~]#

说明:

运行在端口16064的进程id为24596,再通过ps命令就可以找到具体的应用程序了。

上述内容就是如何在Linux中使用netstat命令,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

【本文内容来源于IDC同行网站,若侵权,请联系我们删除】

赞(0)
文章名称:《如何在Linux中使用netstat命令》
文章链接:https://www.cmy.cn/host/15602.html
版权声明:茶猫云所有发布的内容,部分为原创文章,转载请注明来源!网络转载文章如有侵权请联系我们解决!
最新优惠:茶猫云VPS服务器