内容概述
1.网络命令之netstat
内容详细
1.netstat命令
显示网络连接情况,路由表信息,端口状态,网络连接情况等信息.
一个进程服务运行之后,会暴露一个端口号,以及产生响应的进程信息.
怎么用?
1.查看所有的网络连接情况
netstat -an # -a 显示所有的socket(套接字)信息 -n 显示数字地址信息而非主机名(省去了主机名)
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 52 192.168.174.26:22 192.168.174.1:64601 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp6 0 0 ::1:323 :::*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
常见字段解释:
Proto 套接字使用的协议是什么
Recv-Q 连接套接字的用户还未拷贝的字节数
Local Address socket本地的地址和端口号
Foreign Address socket的远程主机地址和端口号
State socket socket的运行情况,LISTEN表示监听中
我们需要记住一些重要的socket连接情况的参数
ESTABLISHED 套接字有一个有效连接
SYN_SENT 套接字尝试建立一个连接
SYN_RCVD 从网络上收到一个连接请求
FIN_WAIT1 套接字已关闭,连接正在断开
FIN_WAIT2 连接已关闭,套接字等待远程方终止
TIME_WAIT 在关闭之后,套接字等待处理仍然在网络中的分组
CLOSED 套接字未启用
CLOSED_WAIT 远程方已关闭,等待套接字关闭
LAST_ACK 远程方终止,套接字已关闭,等待确认.
LISTEN 套接字监听进来的连接.如果不设置 --listening (-l)或者 --all(-a)选项,将不显示出这些连接
CLOSING 套接字都已关闭,而还未把所有数据发出.
UNKNOWN 状态未知.
2.netstat常用的参数组合
# netstat -tunlp # 查看机器上正在运行的所有端口情况以及进程情况
-t 显示出TCP的连接情况.
-u 显示出UDP的连接情况
-n 不进行DNS解析
-l 只显示正在监听的套接字情况
-p 显示出套接字所属的进程PID和进程名
127.0.0.1 # 本地回环地址,用于机器内部应用通信,外人无法访问次地址.
0.0.0.0 # 绑定机器所有的网卡地址
netstat -tunlp | grep 3306 # 检查服务器是否运行了3306端口 (查看是否运行了mysql数据库)
# 显示系统的路由表情况
netstat -rn 等同于 route -n
# 显示网络的接口情况
netstat -i # 显示所有网络接口的列表情况
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 1140 0 0 0 495 0 0 0 BMRU
eth1 1500 0 0 0 0 14 0 0 0 BMRU
lo 65536 32 0 0 0 32 0 0 0 LRU
Iface 网卡的名字
MTU 最大的传输单元,单位是字节
RX-OK/TX-OK 正确接收了多少数据包,发送了多少数据包
RX-ERR/TX-ERR 接收,发送数据包时,丢弃了多少数据包
RX-OVR/TX/OVR 由于错误遗失了多少数据包
FLg标记
L 回环地址
R: 这个网络接口正在运行
U: 接口正在处于活动的状态
M: 接收所有的数据包
O: 该接口上禁止arp
P: 端与端的连接
B: 设置了广播地址
查看TX-ERR RX-ERR最好是0,否则表示网络情况不健康,有丢包的现象
# 查看服务器监听
netstat -tunlp | grep 3306 # 监听数据库是否运行
netstat -tunlp | grep 80 # 监听web服务是否运行
netstat -tunlp | grep 3306 # 监听https服务是否运行
...
# linux还有一个网络查看工具,叫做ss # 没装的话需要安装
# yum install iproute -y
ss -an # 显示所有的socket套接字连接情况.
# 显示所有正在监听中的套接字情况
ss -tunlp | grep 80