Linux 查看网络连接 netstat
netstat命令显示当前网络连接,包括:协议、本机的地址与服务/端口,对方的IP与端口,连接状态、以及本地进程ID与程序名称。
1 结果说明
基本用法
netstat
运行示例
主要包括两大部分
1)Active Internet connections (w/o servers)
用于网络通信的连接情况。
通常我们只看此部分。
2)Active Unix domain sockets (w/o servers) 部分
用于本机内部通信的连接情况。
通常不看这部分。
网络通信连接的响应字段。
主要关注字段:Proto、Local Address 与State。
字段名 | 说明 |
---|---|
Proto[重要] | 协义名称。常用值:tcp、udp、tcp6。 |
Recv-Q | 忽略 |
Send-Q | 忽略 |
Local Address[重要] | 网络通信的本地主机的地址与服务。 地址:采用域名或数字的形式显示。 服务:采用服务名或端口数字的形式显示。 |
Foreign Address | [一般]网络通信的对方主机的IP地址与端口。 |
State[重要] | 连接状态。常用值 LISTENING:后台服务监听中 ESTABLISHED:正在连接通信 CLOSE_WAIT:对方关闭连接,等待确认 TIME_WAIT:本地关闭连接,等待确认 |
示例
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 xiaobuteach:ssh 192.168.154.1:59025 ESTABLISHED
协议为tcp,对方主机192.168.154.1通过端口59025连接本地机器(xiaobuteach)的ssh服务,状态ESTABLISHED为正在连接通信中。
2 状态State相关选项
netstat命令的选项非常多,这里先主要介绍三类选项:跟状态State相关的选项;与协议相关的选项;与字段有关的选项。
netstat命令默认不显示监听的选项,以及状态为空的选项。
包括三种:
1)默认:只显示非监听状态
2)-l:只显示监听状态。后台服务程序通常是监听状态,这是我们非常关注的一个状态。例如:Apache、Nginx监听80端口,则一直会有一个连接处理LISTENING状态。
4)-a:显示所有状态
-a选项
显示所有监听状态的连接。
net stat -a
显示结果过多,反而看不到最前面的内容。通过 | more 查看第一页内容。
net stat -a | more
运行示例如下。
注:Ctrl+C退出查看。
-l选项
显示监听状态的连接。
3 协议Proto相关选项
默认,会显示相应状态的所有协议的连接。
包括三种选项:
1)默认:显示所有协议。
2)-t:显示tcp协议。
3)-u:显示udp协义。
-t选项
netstat -at | more
运行示例
-u选项
netstat -au | more
运行示例
4 选项组合
状态选项与协议选项可以组合使用,包括其它的
a/l可以用t/u组合使用
例:
netstat -au 表示非监听状态的UDP协议的连接
netstat -lt 表示监听状态的TCP议的连接
5 字段扩展选项
-n选项
将能数字转化的部分尽量数字化。
主要针对Local Address字段。
Local Address字段默认显示:冒号之前是尽量会用主机名,冒号之后尽量用服务名。
加-n参数后,会将主机转化为IP地址,服务名转化为对应端口号。
加-n之后
-p选项
-p选项多加一列,显示进程ID与程序名。
6 常用IP
常用IP | 含义 |
---|---|
127.0.0.1 | 表示本机 |
0.0.0.0 | 表示任意IP |
[::]或:: | TCP6中表示任意IP |
0.0.0.0
Local Address与Foreign Address的0.0.0.0分别表示什么含义
实际服务器中,可能存在多张网卡多个IP,0.0.0.0表示这其中任意一个IP。实际项目中,服务配置可能只配置其中一个IP,或者部分IP。
Foreign Address中的0.0.0.0比较好理解,允许网上任意机器访问当前服务。
7 常用端口
端口 | 说明 |
---|---|
22 | SSH服务。 Linux客户端连接就是通过SSH服务。 |
80 | Apache、Nginx等WEB服务器的默认端口号 |
443 | Apache、Nginx等WEB服务器的HTTPS安全访问的端口号 |
8080 | Tomcat默认端口号 |
3306 | MySQL默认端口号 |