Linux_149_netstat
netstat命令:显示网络连接情况,路由表信息,端口状态,网络连接情况等信息
一个进程服务,运行之后,会暴露一个端口号,以及产生相应的进程信息
1.查看所有的网络连接情况
netstat -an
-a 显示all所有的套接字(socket)信息
-n 显示数字地址信息而非主机名
[root@yuweijie ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 10.0.16.4:22 92.255.85.135:62758 ESTABLISHED
常见字段解释
proto 套接字使用的协议是什么
Recv-Q 连接这个套接字的用户,还未拷贝的字节数
Send-Q 远程主机还未确认的字节数
Local address 套接字本地的地址和端口号
Foreign Address 套接字的远程主机地址和端口号
State 套接字运行的情况
记住一些重要的套接字连接情况的参数
ESTABLISHED:套接字有一个有效连接。
SYN_SENT
套接字尝试建立一个连接。
SYN_RECV
从网络上收到一个连接请求。
FIN_WAIT1
套接字已关闭,连接正在断开。
FIN_WAIT2
连接已关闭,套接字等待远程方中止。
TIME_WAIT
在关闭之后,套接字等待处理仍然在网络中的分组
CLOSED
套接字未用。
CLOSE_WAIT
远程方已关闭,等待套接字关闭。
LAST_ACK:远程方中止,套接字已关闭。等待确认。
LISTEN:套接字监听进来的连接。如果不设置 --listening (-l) 或者 --all (-a) 选项,将不显示出来这些连接。
CLOSING:套接字都已关闭,而还未把所有数据发出。
UNKNOWN:套接字状态未知。
netstat使用实际案例
1.常用的参数组合
netstat -tunlp # 查看机器上正在运行的所有端口情况以及它的进程情况
参数解释如下
-t 显示出TCP的连接情况
-u 显示出UDP的连接情况
-n 不进行dns解析
-l 只显示正在监听中的套接字情况
-p 显示出套接字所属的进程和进程名情况
127.0.0.1 # 本地回环地址,用于机器间内部应用通信,外人无法访问此地址,每一个机器都有自己的127.0.0.1
0.0.0.0 # 绑定机器所有的网卡地址
2.查看端口运行的情况
netstat -tunlp | grep 端口号
netstat -tunlp | grep 3306 # 检查服务器是否运行了3306端口(查看是否运行了mysql数据库)
3.显示系统的路由表情况
netstat -rn # 等同于 route -n
4.显示网络的接口情况
netstat -i # -i 显示出所有网络接口的列表情况
[root@yuweijie ~]# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0 1500 0 0 0 0 0 0 0 0 BMU
eth0 1500 3181658 0 0 0 3122997 0 0 0 BMRU
lo 65536 205 0 0 0 205 0 0 0 LRU
字段解释
Iface 网络设备的名字
MTU:最大的传输单元,单位是字节
RX-OK / TX-OK:正确接收了多少数据包,发送了多少数据包
RX-ERR / TX-ERR:接收、发送数据包的时候,丢弃了多少数据包(最好为0,否则表示网络情况不健康,有丢包的现象)
RX-OVR / TX-OVR:接收、发送数据包的时候,由于错误遗失了多少数据包
FLg标记
L:回环地址
R:这个网络接口正在运行中
U:接口正在处于活动的状态
B:设置了广播地址
M:接收所有的数据包
O:表示在该接口上禁止arp
P:端对端的连接
5.查看服务器监听
netstat -tunlp | grep 3306 # 监听数据库是否运行
netstat -tunlp | grep 80 # 监听web服务是否运行
netstat -tunlp | grep 443 # 监听https服务是否运行
6.linux还有一个在centos7之后出现的网络查看工具,叫做ss
yun install iproute -y
显示所有的socket套接字连接情况
ss -an
7.显示出所有正在监听中的套接字情况
ss -tunlp
ss -tunlp | grep 端口号