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 dushare:ssh     192.168.154.1:59025   ESTABLISHED
 
协议为tcp,对方主机192.168.154.1通过端口59025连接本地机器(dushare)的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默认端口号 |