netstat命令用法
netstat命令参数
● netstat -a 显示网络状态(-a表示全部)
红框为IP所连接的主机
● Netstat -nlp(
- -n 以数字形式显示地址和端口号,能显示文字的全部转化成数字 ,禁用反向域名解析,加快查询速度
- -l 仅列出有在listen(监听)的服务状态
- -p 显示建立相关链接的程序名)
netstat -an
这个命令能看到所有和本地计算机建立连接的IP,它包含四个部分:proto
(连接方式)、local
address
(本地连接地址)、foreign address
(和本地建立连接的地址)、state
(当前端口状态)。通过这个命令的详细信息可以完全监控自己的计算机上的连接。
netstat -l
该命令是显示所有监听端口
输出结果分析
netstat -nlp命令结果分析
从整体上看,netstat的输出结果可以分为两个部分:
1、一个是Active Internet connections
,称为有源TCP连接,其中"Recv-Q
“和”Send-Q
"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
2、另一个是Active UNIX domain sockets
,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。recv-Q
表示网络接收队列
表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。send-Q
表示网路发送队列
对方没有收到的数据或者说没有ACK的,还是本地缓冲区。如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。Proto
显示连接使用的网络传输协议,主要为tcp和udpRefCnt
表示连接到本套接口上的进程号Types
显示套接口的类型State
内部地址与外部地址的连接状态,主要有监听( LISTEN )和建立(ESTABLISED)Path
表示连接到套接口的其它进程使用的路径名PID
:服务的进程编号Program name
:服务名称
- TCP与UDP均为传输层协议
0.0.0.0
有两种解释:
1、0.0.0.0代表本机上可用的任意地址。 比如0.0.0.0:22表示本机上所有地址的22端口,这样多ip计算机就不用重复显示了。
2、0.0.0.0为默认路由,即要到达不在路由表里面的网段的包都走0.0.0.0这条规则。
其实,我们可以“通用”理解为代表“本机地址”,22在程序中体现为绑定的22端口号- 1、UID是用户ID,用户身份证明
2、 PID是进程ID,操作系统里指进程识别号,也就是进程标识符
3、PPID是父进程ID,代表当前进程的父进程ID foreign address
:表示远程IP地址:监听端口local address
:表示本地IP地址,IP地址前面为计算机名称state
:是指当前进程的状态
netstat -n
-n
以数字形式显示地址和端口号,能显示文字的全部转化成数字 ,禁用反向域名解析,加快查询速度
- 使用-n参数
- 未使用参数
使用-n参数
1.用端口号代替了协议名称(每个端口代表不同的协议)
2.将域名(本机名)转换为ip地址
netstat -a
在-a参数面前加上tcp的首字母t可以显示TCP相关的信息
在-a参数面前加上udp的首字母u可以显示UDP相关的信息
通过这个命令可以看见服务器与ssh协议的连接(红框标注)一个建立好的网络连接,有四个参数 : 本地,ip + port(端口类型),远端 ip+ port ,
IP地址:端口(如果是服务端,则称为监听端口;反之,如果是客户端则为连接端口)
实验
curl. www.baidu.com(访问baidu网页)
通过netstat找出这次连接,记住要同时开两个窗口
如果不确定百度IP就ping www.baidu.com
这样就可以确定连接是否正确了