windows系统不常用命令02-netstat

作用

netstat命令用于查看网络连接,路由表,网络接口统计数据, 虚拟连接等信息。

查看某个端口是否被占用

如果你遇到“Address already in use”的错误,那么你就需要好好看看是不是端口已经被占用了。-a(all)参数用于列出所有监听和非监听状态的连接。

netstat -a|grep 6379
tcp        0      0 *:6379                  *:*                     LISTEN     
tcp6       0      0 [::]:6379               [::]:*                  LISTEN 

这里我们可以看到,有一个tcp连接使用了6379端口,并且当前处于LISTEN状态,这些状态信息对于分析网络连接问题非常有帮助,我们将会在后面的文章中看到它们大放异彩。
当然你也可以使用lsof命令中的方法来查看。

查找占用端口的进程

前面虽然知道已经有进程使用了6379端口,但是不知道是哪个进程,因此为了知道进程信息,需要使用-p(program)参数:

netstat -ap|grep 6379
tcp        0      0 *:6379                  *:*                     LISTEN      10011/redis-server 
tcp6       0      0 [::]:6379               [::]:*                  LISTEN      10011/redis-server

这个时候就可以看到是进程id为10011的redis-server进程占用了6379端口,至此要杀要剐就随你便了。

查看指定协议的连接

除了TCP之外还有UDP,如果我们想查看指定类型的连接呢?

netstat -at   #-t,查看tcp连接
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.0.103:42468     113.96.233.139:https    ESTABLISHED
tcp        0      0 192.168.0.103:59326     123.58.182.252:https    TIME_WAIT  
tcp        0      0 192.168.0.103:59328     123.58.182.252:https    TIME_WAIT  
(未显示完全)

以此种方式,可以看到所有的TCP连接,而对于UDP连接,只需要使用-u(UDP):


netstat -au
udp        0      0 *:36305                 *:*                                
udp        0      0 127.0.1.1:domain        *:*                                
udp        0      0 *:bootpc                *:*                                
udp        0      0 *:ipp                   *:*   
 
(未显示完全))

当然了,这两个参数也是可以一起用的。

除此之外,还可以使用-4或-6来指定查看ipv4还是ipv6的连接:

查看处于监听状态的连接

对于还没有建立完整连接的服务器来说,它启动后正常的状态是LISTEN状态,如果只想查看处于该状态的连接,则可以使用-l(LISTEN)参数:

netstat -l
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.1.1:domain        *:*                     LISTEN     
tcp        0      0 localhost:5941          *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 localhost:socks         *:*                     LISTEN     
tcp        0      0 *:6379                  *:*                     LISTEN
(未显示完全))

这个时候记得不要带上-a参数,它会列出所有。

而你如果要查看其他状态的连接,只需要结合grep使用即可,例如,查看ESTABLISHED状态的连接:

netstat -anp |grep ESTAB
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 192.168.0.103:42468     113.96.233.139:443      ESTABLISHED 2613/chrome     
tcp        0      0 192.168.0.103:38024     108.177.125.188:443     ESTABLISHED 2613/chrome     

不解析主机,端口等信息

不知道你有没有发现,在执行前面的命令的时候,速度很慢,让你一度怀疑是不是自己电脑太卡了。实际上,你观察前面的输出结果就会发现,很多连接的主机名和端口对应的应用都解析出来了,例如:

123.58.182.252:https
所以慢是因为它需要做解析,使用-n(numeric)参数就可以快速显示原始数字端口或地址了:

netstat -anp

持续输出连接信息

你在定位网络相关问题的时候,总不想执行一次观察一次吧?能不能自动反复执行查看呢?当然可以啦!可以使用-c(continuous)参数:

netstat -npc

这样,它就会每隔一秒执行一次。

查看用户和连接的iNode

这条连接是哪个用户建立的呢?unix下一切皆文件,那么这个连接的iNode是多少呢?借助-e(extend)参数可以看到这些信息:

netstat -ent
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      
tcp        0      0 192.168.0.103:42468     113.96.233.139:443      ESTABLISHED 1000       134891     
tcp        0      0 192.168.0.103:46556     121.9.246.106:443       TIME_WAIT   0          0          

可以看到在使用-e参数后,多了最后两列,分别是user和Inode。而使用id命令可以知道该user到底是谁:

id 1000
uid=1000(hyb) gid=1000(hyb) groups=1000(hyb),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

查看连接相关的定时器

使用-o可以查看和连接相的定时器信息,

netstat -nto
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       Timer
tcp        0      0 192.168.0.103:42468     113.96.233.139:443      ESTABLISHED keepalive (18.69/0/0)
tcp        1      1 192.168.0.103:43718     113.96.233.139:443      LAST_ACK    on (19.97/7/0)
tcp        0      0 192.168.0.103:38024     108.177.125.188:443     ESTABLISHED keepalive (34.76/0/0)
tcp        0      0 192.168.0.103:60362     123.58.182.252:443      TIME_WAIT   timewait (6.70/0/0)
tcp6       0      0 127.0.0.1:9614          127.0.0.1:59736         ESTABLISHED off (0.00/0/0)

最后的timer列相关字段含义如下:
keepalive keepalive的时间计时
on 重发的时间计时
off 没有时间计时
timewait 等待时间计时
关于定时器的含义,需要对TCP协议有较多理解,这里就不展开了。

查看数据包统计信息

各种协议的数据包的收发情况如何呢?连接数量如何呢是用-s(statistics)参数可以查看:

netstat -s
(仅显示了TCP协议的结果)
Tcp:
    3067 active connections openings
    1 passive connection openings
    173 failed connection attempts
    587 connection resets received
    10 connections established
    657576 segments received
    456349 segments send out
    2700 segments retransmited
    16 bad segments received.
    1321 resets sent

查看路由信息

使用-r(route)参数可以查看路由相关信息,例如:

netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         192.168.0.1     0.0.0.0         UG        0 0          0 wlp3s0
link-local      *               255.255.0.0     U         0 0          0 wlp3s0
192.168.0.0     *               255.255.255.0   U         0 0          0 wlp3s0

当然你也可以借助route命令完成这样简单的工作。

linux下常见用法

常用参数说明:

-l或–listening 显示监控中的服务器的Socket。
-n或–numeric 直接使用IP地址,而不通过域名服务器。
-p或–programs 显示正在使用Socket的程序识别码和程序名称。
-t或–tcp 显示TCP传输协议的连线状况。
日常用法:

netstat -tnlp
netstat -tnp


netstat命令各个参数说明如下:  
-t : 指明显示TCP端口  
-u : 指明显示UDP端口  
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)  
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。  
-n : 不进行DNS轮询,显示IP(可以加速操作)即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况··
netstat -ntlp //查看当前所有tcp端口·
netstat -ntulp |grep 80 //查看所有80端口使用情况·
netstat -an | grep 3306 //查看所有3306端口使用情况·查看一台服务器上面哪些服务及端口
netstat -lanp查看一个服务有几个端口。
比如要查看mysqld
ps -ef |grep mysqld
查看某一端口的连接数量,比如3306端口
netstat -pnt |grep :3306 |wc
查看某一端口的连接客户端IP 比如3306端口
netstat -anp |grep 3306netstat -an
查看网络端口

lsof -i :port,使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。

nmap 端口扫描
netstat -nupl (UDP类型的端口)
netstat -ntpl (TCP类型的端口)
netstat -anp 显示系统端口使用情况

windows下的用法

Netstat是一个控制台命令,可以用来查看本机的网络连接和开放端口,它的使用方法是在CMD中输入netstat -xxx ,其中-xxx是不同的参数,那么对常见的参数总结如下

netstate常用参数:
-a 查看开启了哪些端口
-o 查看TCP连接信息
-ano | findstr “端口号” 查看端口被哪个PID占用
-an |find /i “listenning” windows下只查看监听端口(不用netstat也可以使用lsof -i这是linux中的命令)
-p proto 显示proto指定的协议的连接 proto有TCP、UDP、TCPv6、UDPv6。如果与-s选项一起使用以显示按协议统计信息,
protp可以是一下协议之一:IP、IPV6、ICMP、ICMPV6、TCP、TCPV6、UDP、UDPV6
-e 显示以太网统计信息,可与-s选项组合使用
-v 查看正在进行的工作
-n 查看端口的网络连接情况
-r 显示路由表
-s 显示按协议统计信息。 默认的显示IP、IPV6、ICMP、ICMPV6、TCP、TCPV6、UDP、UDPV6的统计信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值