NETSTAT命令详解

 
 
 
作用:netstat命令的功能是 显示网络连接、路由表和网络接口信息,可以让用户得知目前都有 哪些网络连接正在运作。
NETSTAT中所用到的函数有
GetTcpTable();// 取得TCP连接表
GetUdpTable();// 取得UDP监听者表
GetIpStatistics();// 取得IP协议统计情况
GetIcmpStatistics();// 取得ICMP统计情况
GetTcpStatistics();// 取得TCP统计情况
GetUdpStatistics();// 取得UDP统计情况
关于它们的用法请参考MSDN;


最常用的几个命令是:
netstat -a :显示所有连接和监听端口.(一般情况下,特指当前登陆的管理员账号,所有的连接只适用于当前系统所使用的用户权限.以及监听TCP/UDP以及http网页连接所用的端口.)
在这里具体讲一下,监听状态下端口的state情况:
FE: proto是指:连接方式-----Local address是指:本地连接地址---- foreign address是指: 本地建立连接的地址----State:是指当前端口状态.[ACTive con tions是指当前本机活动连接,Proto是指连接使用的协议名称,Local Address是本地计算机的IP地址和连接正在使用的端口号Foreign Address是连接该端口的远程计算机的IP地址和端口号,State则是表明TCP连接的状态.]
 
 
 
有时Netstat -a会出现下面一种情况:
TCP 0 0 Localhost.localdom:1521 localhost.localdo:32778 ESTABLISHED这句应该这样理解:
 
为了方便程序的开发和部署,现在很多程序采用网络机制来完成数据链路开发本地应用,这样连接端和被连接端都在本地,但采用的是网络机制通信,这样方便以后网络化部署,这样在本地应用时就会出现本地化网络通信。
 
netstat -an : 显示全部的端口状态。[要记住每一个端口对应一个服务,对应一个系统进程,你先搞明白打开的端口是什么服务所用,你就可以结束进程或关闭服务即可.]
 
netstat -r
 
netstat -n:以数字形式显示地址端口号.(只显示TCP连接。)
这里因为是Active Connections动态连接,所以只能显示连接开始还是结束,没有监听状态.
所以这里 netstat -n可以配合-A -O{PID}我们以直观的了解.
有的人会问系统默认的端口是打开的还是关闭的呢,这要看你的电脑的实际情况才能做决定,比如上面的连接图,我们会看到和远程连接的端口都是80,这个是正常的,因为你要 打开网页之类的就要和远程IP连接,除非你把你的所有程序都不运行,时候你再看看有很多端口就是不正常的了。
如果出现很多连接的话,先分析连接的端口和IP。如果你打开很多网页!那么肯定看到许多IP在连你!这也是一种查看自己是否中中毒的方法! 如果你的机子是在局域网中,且和其它机子共享传输文件,那么445呀139呀138呀之类的端口都是打开的且有可能是和其它机子相连的!

 
 
 
 
在这里我们详细介绍一下state的四种监听方式:
第一个是listening:监听
第二个是Estalished:已连接
第三个是Close_wait:连接已结束
以上三个是经常出现的,下面的这两个一般情况下是不会出现的:
Fin_Wait_1:是等待对方的fin报文
Syn_sent:是客户端已发送SYN报文.
LAST_ACK:这个有时也会出现。
有的地方介绍的不一样,平时在这们电脑是不会出现这么多选项的:
LISTEN:侦听来自远方的TCp端口的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认

ESTAbLISHED:代表一个打开的连接

FIN-WAIT-1:等待远程TCp连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2:从远程TCp等待连接中断请求

CLOSE-WAIT:等待从本地用户发来的连接中断请求

CLOSING:等待远程TCp对连接中断的确认

LAST-ACK:等待原来的发向远程TCp的连接中断请求的确认

TIME-WAIT:等待足够的时间以确保远程TCp接收到连接中断请求的确认

CLOSED:没有任何连接状态
在这里面向大家介绍一个小的技巧:netstat -ano这个命令增加了一个PID号,还是不错的.
有的时候命令输出过多前面的就看不到了,这时候用这个命令:netstat -ano>c:\netstat.txt
 
如果有的是陌生的进程,就用taskkill /pid 进程ID/T命令来结束进程.