1. Current Location: Home >  Router Encyclopedia >  netstat -ano怎么看?电脑正在和谁通信,我用它逮到过偷跑流量的网盘

netstat -ano怎么看?电脑正在和谁通信,我用它逮到过偷跑流量的网盘

netstat -ano命令输出五列与TCP五种连接状态对照图

书房那台台式机有阵子一到晚上就肉,测速倒是回回正常,九百多兆跑得欢。有天我心血来潮,按住Win+R敲了cmd,输了一条netstat -ano回车——滚动条拉了三屏才到底,七八十条连接挂着。里头有个我压根没打开过的网盘客户端,一个人就占了三十多条,全在往服务器传东西。那一刻我才算真正搞懂这条命令值钱在哪:测速告诉你管道粗不粗,它告诉你管道里到底谁在跑。

先认三面旗:a、n、o各管一段

这命令名字直译过来就是「网络统计」,Windows自己带的,不用装任何东西。三个字母各管一段:-a是全部,把「监听中」的端口也翻出来,不加它你只能看到已建立的连接;-n是数字,让IP和端口老老实实显示数字,不然系统会试着把IP反解成域名,慢半天还经常解不出;-o最要紧,把每条连接背后的进程编号PID亮出来,没有这个o,你看到一百条连接也不知道该找谁算账。

三个一起敲,回车后的输出是整齐的五列:协议、本地地址、外部地址、状态、PID。本地地址这一列很多人看不懂,其实就是「你这台电脑这一头的门牌」,冒号前面是你自己的IP,冒号后面那串四五位数的数字,就是这次通信用的端口号。这个端口不是固定的,每次访问网页系统都会从49152往上给你随机发一个,好比打电话时你手机这次用的线路,挂了就还回去,下次再拨换一个。端口号这门学问之前专门写过,这里只需要记住读法:本地地址的最后一段,是你随机分到的号;外部地址的最后一段,是对方服务的号,443是加密网页、80是普通网页,这两个最常见。

五种状态,就是一通电话的一生

状态那一列是整条命令的灵魂。TCP建立连接要走握手、断开要走挥手,中间每个阶段都会在状态列留个记号,我在表里把它们翻成打电话的话:

状态翻成人话什么时候出现要不要慌
LISTENING守在电话机旁等人打某个程序开了端口等人来连看是谁开的门
SYN_SENT拨出去了,还没人接你点开一个打不开的网站时一直停这=对面不应答
ESTABLISHED正在通话网页开着、微信挂着、游戏在玩正常,数量几十条很普通
TIME_WAIT挂了电话缓一下再收线网页关掉后的两到四分钟内一大片也正常,自己会走
CLOSE_WAIT对方挂了,你没挂程序该收线没收线只涨不跌才是病

这里面最容易唬人的是TIME_WAIT。网页一关,连接并不会当场消失,系统会让它挂着缓两到四分钟再回收,Windows默认压着接近四分钟。所以你随手一敲看到几十条TIME_WAIT,那不是异常,是你过去几分钟里关掉的网页在排队退场。真正值得多看一眼的是CLOSE_WAIT:它意思是对方已经挂线,按理你这边程序也该收线了,结果它没收。偶尔几条无所谓,要是这个数字几百条几百条地涨、关掉所有软件也不掉,那就是哪个程序自己出了毛病,忘了挂电话——这种靠改系统参数救不回来,把那个程序重启一遍,多半当场就收线。

满屏外网IP先别喊中招

网上不少文章把netstat说成查木马的神器,搞得很多人一敲完就被满屏陌生IP吓着,以为电脑被人种了东西。先泼盆冷水:外网地址的ESTABLISHED,绝大多数是你自己点出来的。你开着的每个网页、挂着的微信、后台的网盘,都对着一堆服务器保持通话,那些看起来莫名其妙的IP,多半是网站的CDN节点和聊天服务器。我书房这台机器随手一敲,光ESTABLISHED就有五六十条,一条条数根本数不过来。

省事的办法是按PID归类,别按IP归类。先看第五列,找出出现次数最多的那几个PID,再去任务管理器「详细信息」页签按PID一列排序,对上进程名就全明白了。几十条连接归到五六个进程头上,网盘、浏览器、微信、游戏平台,个个都有着落,这种就干净。

真正该多看两眼的,是LISTENING那一撮,这里头有个九成人没注意的门道:本地地址写0.0.0.0冒号端口的,是对着所有网卡开门,局域网里别的设备都能来敲这扇门;写127.0.0.1冒号端口的,只对自家本机开门,外面谁也够不着。同样一个LISTENING,127.0.0.1的基本可以放过,0.0.0.0的值得想想:远程桌面3389、文件共享445这类我认得的,对上是自己开的就行;端口号码生、进程名也眼生的0.0.0.0监听,再去查那个PID是什么来头。顺带说一句,路由器那头也有个自查的思路,被抓的不是连接是DNS和端口映射,路由器被黑的排查之前写过,电脑这头和路由器那头正好凑成一套。

逮偷跑流量那次,三分钟破案

回到开头那台晚上发肉的台式机。我当时敲完命令,把出现频率最高的PID抄下来,去任务管理器一对——是装了半年没怎么打开的网盘客户端。三十多条ESTABLISHED全指向它的服务器,状态清一色在传。点开它才发现,设置里「自动同步」一直开着,我往一个共享文件夹里丢过一批照片,它就每天在后台默默往外搬,赶上晚高峰,上行被它吃得死死的。上行一被占满,网页打开就肉,这个道理在家里谁在偷流量那篇里算过账,只不过那次是在路由器后台逮的,这次在电脑上逮的。

这种后台传输,测速软件是看不出来的——测速那几秒钟它让了路,测完接着传。netstat的妙处就是快照:随时敲一条,谁在传、传给谁、挂了多少条,当场现形。后来表弟的NAS做种挂了几百条连接来问我慌不慌,我让他看的就不是电脑这张表,是路由器的NAT会话表——电脑这张表只管本机,路由器那张会话表管全家,两本账记的是同一件事的两面。qBittorrent那类下载工具天生就是连接大户,几十条对它来说是家常便饭,别看见数字大就慌。

收尾:一套顺序照着敲

把这命令用顺,其实就是把散在前面的话串成动作。我自己的习惯是这么五步:

顺序做什么看什么
第一步敲netstat -ano,输出重定向存个文件先数总量,心里有个底
第二步把状态列归类数一数ESTABLISHED几十条正常,TIME_WAIT一片正常
第三步盯CLOSE_WAIT的数量几百条只涨不跌,找那个出毛病的程序
第四步看LISTENING的本地地址0.0.0.0的逐个对进程,127.0.0.1的放过
第五步高频PID去任务管理器对名字陌生名字搜一下,系统进程别乱动

还有两句叮嘱。一是netstat还有个-b参数能直接显示连接属于哪个程序文件,省去对PID的功夫,但它要管理员身份开cmd才跑得动,图省事就用「-ano加任务管理器」这套组合。二是看见svchost.exe挂着一堆连接别激动,它是Windows的系统服务容器,本来就是个大家长,真要确认,右键看它承载的服务项。TCP和UDP那篇讲过连接是怎么一回事,配上netsh看无线那几招,家里的网络问题从网卡到连接基本就能自己过一遍了。工具都在系统里白送,差的只是肯敲回车的那一下。

Read More


Copyright Notice Scan to read on mobile
All Rights Reserved: 《SHUNOT》 => 《netstat -ano怎么看?电脑正在和谁通信,我用它逮到过偷跑流量的网盘》
Article URL: https://www.shunot.com/en/lybk/1243.html
Unless otherwise stated, all articles are original by 《SHUNOT》. Reposting is welcome! Please indicate the original URL when reposting, thank you.

Contact Us

Online Consultation: Click here to send me a message

WeChat ID: master_135

Scan to follow