您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

不可不知的网络命令-netstat

时间:2019-06-20 09:31:59  来源:  作者:

前言

在调试网络程序或者定位网络相关问题时,有一个命令不得不知,它就是netstat。netstat命令用于查看网络连接,路由表,网络接口统计数据, 虚拟连接等信息。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命令中的方法来查看。关于grep的用法,也可以参考《grep命令详解》,这里就不展开了,我们后面会在很多地方用到。

查找占用端口的进程

前面虽然知道已经有进程使用了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

这样,它就会每隔一秒执行一次。当然你完全可以使用watch命令,关于watch命令的使用可以参考《解放你的双手-watch》。

查看用户和连接的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命令完成这样简单的工作。

总结

netstat命令是我们定位网络相关问题的利器,如果你还不会使用,那么最好花几分钟学习一下。netstat更详细的字段解释可以参考其手册。
 



Tags:netstat   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
我们经常用到netstat命令查看主机连接状况,包括连接ip、端口、状态等,今天就练习下shell分析netsat结果。描述假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:Pro...【详细内容】
2021-12-14  Tags: netstat  点击:(19)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  Tags: netstat  点击:(28)  评论:(0)  加入收藏
由于nio的普及,ck10k的问题已经成为过去式。现在随便一台服务器,就可以支持数十万级别的连接了。那么我们来算一下,100万的连接需要多少资源。首先,每一个连接都是文件句柄,所以...【详细内容】
2020-06-07  Tags: netstat  点击:(102)  评论:(0)  加入收藏
一、Linux服务器上11种网络连接状态: 图:TCP的状态机通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手注:以下说明最好能结合”图:T...【详细内容】
2020-05-20  Tags: netstat  点击:(87)  评论:(0)  加入收藏
一般来说,服务器非常慢可能原因是多方面的,有可能是配置错误,脚本错误或者是一些奇诡的硬件。当然也有可能是有人对你的服务器进行 Dos (拒绝服务攻击)或者 DDOS (分布式拒绝服...【详细内容】
2020-01-06  Tags: netstat  点击:(116)  评论:(0)  加入收藏
1.PingPing是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网...【详细内容】
2019-12-03  Tags: netstat  点击:(110)  评论:(0)  加入收藏
  Netstat命令可以帮助我们了解网络的整体使用情况。根据Netstat后面参数的不同,它可以显示不同的网络连接信息。Netstat的参数如图,下面对其中一些参数进行说明。如何检...【详细内容】
2019-12-03  Tags: netstat  点击:(110)  评论:(0)  加入收藏
它主要的用法和详解!(netstat -na 命令),本文主要是说Linux下的netstat工具,然后详细说明一下各种网络连接状态。netstat -nat |awk ‘{print $6}’|sort|uniq -c|sor...【详细内容】
2019-11-14  Tags: netstat  点击:(80)  评论:(0)  加入收藏
前言在调试网络程序或者定位网络相关问题时,有一个命令不得不知,它就是netstat。netstat命令用于查看网络连接,路由表,网络接口统计数据, 虚拟连接等信息。netstat的选项很多,但...【详细内容】
2019-06-20  Tags: netstat  点击:(328)  评论:(0)  加入收藏
ping www.baidu.com,从命令执行开始,到结果返回总共需要经过以下几步:1、DNS解析:www.baidu.com解析成具体的IP地址,因为数据包在网络上传输时只认IP地址。2、查找路由表:IP地址以...【详细内容】
2019-06-17  Tags: netstat  点击:(418)  评论:(0)  加入收藏
▌简易百科推荐
写一个shell获取本机ip地址、网关地址以及dns信息。经常会遇到取本机ip、网关、dns地址,windows一个命令ipconfig /all全部获取到,但linux系统却并非如此。linux系统都自带ifc...【详细内容】
2021-12-27  K佬食古    Tags:shell   点击:(2)  评论:(0)  加入收藏
步骤1、配置 /etc/sysconfig/network-scripts/ifcfg-eth0 里的文件。it动力的CentOS下的ifcfg-eth0的配置详情:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifc...【详细内容】
2021-12-24  忆梦如风    Tags:网卡   点击:(10)  评论:(0)  加入收藏
1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录find . -name “*.tar” -execmv {}./backup/ ;注解:find –name 主要用于查找某个文件名字,-exec 、xargs可...【详细内容】
2021-12-17  郭主任    Tags:运维   点击:(20)  评论:(0)  加入收藏
对于经常上网的朋友来说,除了手机购物上网,pc端玩网页游戏还是很多小伙伴首选的,但是有时候明明宽带链接上了,打开浏览器却出现上不了网的现象,下面小编要来跟大家说说电脑有网络...【详细内容】
2021-12-16  小白系统    Tags:网页无法打开   点击:(28)  评论:(0)  加入收藏
在访问像github、gitlab这样的外国网站时,很有可能会出现页面加载不出来或找不到页面的错误。这时候有的朋友就会以为是网络的问题,于是把Wifi断掉连上自己手机的热点,结果却还...【详细内容】
2021-12-15  启施技术IT狼叔    Tags:外网   点击:(16)  评论:(0)  加入收藏
网络地址来源:获取公网IP地址 https://ipip.yy.com/get_ip_info.phphttp://pv.sohu.com/cityjson?ie=utf-8http://www.ip168.com/json.do?view=myipaddress...【详细内容】
2021-12-15  韦廷华12    Tags:外网ip   点击:(15)  评论:(0)  加入收藏
准备好软件IPOP、用ENSP模拟一下华为交换机 启动交换机 <Huawei>sysEnter system view, return user view with Ctrl+Z.[Huawei]sysname FTPClient[FTPClient]interface vla...【详细内容】
2021-12-15  思源Edward    Tags:交换机   点击:(24)  评论:(0)  加入收藏
我们经常用到netstat命令查看主机连接状况,包括连接ip、端口、状态等,今天就练习下shell分析netsat结果。描述假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:Pro...【详细内容】
2021-12-14  K佬食古    Tags:netstat   点击:(19)  评论:(0)  加入收藏
什么是滑动窗口?窗口是操作系统开辟的一块缓存空间,发送方在收到接收方ACK应答之前,必须在缓冲区保留已发送的数据,如果按期收到确认应答,数据就可以从缓冲区移除。什么是滑动窗...【详细内容】
2021-12-14  DifferentJava    Tags:TCP   点击:(30)  评论:(0)  加入收藏
概述日常管理华为路由设备过程中,难为会忘记设备登录密码,那么该如何重置设备登录密码吗?本期文章将全面向各位小伙伴总结分享。重置华为设备登录密码思路先行 采用console登录...【详细内容】
2021-12-10  onme0    Tags:   点击:(27)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条