netstat命令:它是网络状态的查看命令,既可以查看本机开启的端口,也可以查看有哪些客户端连接。它也是一个监控TCP/IP网络的非常有用的工具,可以显示网络连接,路由表,接口统计以及每一个网络接口设备的状态信息。
常见用法: netstat -a(列出所有的网络状态,包括Socket程序)
netstat -n(使用IP地址和端口号显示,不使用域名与服务名,能显示数字的全部转化成数字)
netstat -p(显示PID和程序名)
netstat -t (显示TCP协议端口端口的连接情况)
netstat -u (显示UCP协议端口端口的连接情况)
netstat -i(显示网卡信息)
netstat -l(显示监听状态的连接)
netstat -r(显示路由表,不过一般用netstat -rn)
netstat -s (可以打印出网络统计数据,包括某个协议下的收发包数量)
1.查看本机开启的端口:netstat -tuln
[root@mo ~]# netstat -tuln
Active Internet connections (only servers)
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
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp6 0 0 ::1:323 :::*
关键字解释:
- Proto: 网络连接的协议,一般是TCP或者UDP协议。
- Recv-Q:表示接受到的数据,已经在本地的缓冲中,但是还没被进程取走。
- Send-Q:表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,一般不具备ACK标志的数据包。
- Local Address:本机的IP地址和端口号。
- Foreifn Adress: 远程主机的IP地址和端口号 。
- State: 状态常见的状态主要有下面几种:
LISTEN:监听数据,只有TCP协议需要监听,而UDP协议不需要监听。
ESTABLISHED: 已经建立的连接状态。
SYN_SENT: SYN发起包,就是主动发起连接的数据包。
SYN_RECV: 接受到主动连接的数据包。
2.查看本机有哪些程序开启的端口,如果使用了-p,则可以查看到哪个程序占用了端口,并且可以知道这个程序的PID.
[root@mo ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7152/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7290/master
tcp6 0 0 :::80 :::* LISTEN 7752/httpd
tcp6 0 0 :::22 :::* LISTEN 7152/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7290/master
udp 0 0 127.0.0.1:323 0.0.0.0:* 6559/chronyd
udp6 0 0 ::1:323 :::* 6559/chronyd
这里能直接看到80端口为Apache 的 httpd 服务开启80端口。
- ifconfig命令其实只能查看IP,子网掩码,MAC地址并不能查看网关,用netstat -rn便可查看到我们的网关。
[root@mo ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.126.2 0.0.0.0 UG 0 0 0 ens33
192.168.126.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33