Linux使用netstat查看网络状态

2022-10-21,,,,

查看本机的网络状态。使用netstat查看网络状态。显示系统端口使用情况。UDP类型的端口。TCP类型的端口。只显示所有监听端口。只显示所有监听tcp端口。

命令使用举例

命令 说明
netstat -anp 显示系统端口使用情况
netstat -nupl UDP类型的端口
netstat -ntpl TCP类型的端口
netstat -l 只显示所有监听端口
netstat -lt 只显示所有监听tcp端口

输入命令后,输出里包含着协议、本地地址、外部地址及状态信息

Proto Local Address Foreign Address State
协议 本地地址 外部地址 状态

各属性将在后文介绍。

组合命令

netstat -na | grep ESTABLISHED | wc -l 统计已连接上的,状态为"established"

显示系统端口使用情况 netstat -anp

???+ note "netstat -anp"

截取部分结果
```sh title="显示系统端口使用情况"
$ netstat -anp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:3478 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:3478 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN -
tcp 0 0 172.16.16.13:37432 169.254.0.55:5574 ESTABLISHED -
tcp 0 600 172.16.16.13:22 222.216.195.223:17351 ESTABLISHED -
tcp6 0 0 :::9010 :::* LISTEN 8708/main.js
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ] DGRAM 19037 1744/systemd /run/user/500/systemd/notify
unix 2 [ ACC ] STREAM LISTENING 13532 - /var/lib/lxd/unix.socket
unix 2 [ ACC ] STREAM LISTENING 19038 1744/systemd /run/user/500/systemd/private
unix 2 [ ACC ] SEQPACKET LISTENING 9722 - /run/udev/control
unix 2 [ ] DGRAM 71848026 - /usr/local/qcloud/YunJing/conf/ydrpc_3
unix 3 [ ] DGRAM 9712 - /run/systemd/notify
```

查看UDP类型的端口 netstat -nupl

???+ note "netstat -nupl"

```sh title="查看UDP类型的端口"
$ netstat -nupl
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:3478 0.0.0.0:* -
udp 0 0 0.0.0.0:3478 0.0.0.0:* -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
udp 0 0 172.16.16.13:123 0.0.0.0:* -
udp 0 0 127.0.0.1:123 0.0.0.0:* -
udp 0 0 0.0.0.0:123 0.0.0.0:* -
udp6 0 0 :::123 :::* -
```

查看TCP类型的端口 netstat -nupl

???+ note "netstat -nupl"

截取部分结果
```sh title="查看TCP类型的端口"
$ netstat -ntpl
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
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:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN -
tcp6 0 0 :::9010 :::* LISTEN 8708/main.js
tcp6 0 0 :::22 :::* LISTEN -
```

只显示所有监听端口 netstat -l

???+ note "netstat -l"

部分结果
```sh title="只显示所有监听端口"
$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:http *:* LISTEN
tcp 0 0 *:3478 *:* LISTEN
tcp 0 0 *:3478 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:https *:* LISTEN
tcp6 0 0 [::]:9010 [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
udp 0 0 *:3478 *:*
udp 0 0 *:3478 *:*
udp 0 0 *:bootpc *:*
udp 0 0 172.16.16.13:ntp *:*
udp 0 0 localhost.localdoma:ntp *:*
udp 0 0 *:ntp *:*
udp6 0 0 [::]:ntp [::]:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 13532 /var/lib/lxd/unix.socket
unix 2 [ ACC ] STREAM LISTENING 19038 /run/user/500/systemd/private
```

只显示所有监听tcp端口 netstat -lt

???+ note "netstat -lt"

部分结果
```sh title="只显示所有监听端口"
$ netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:http *:* LISTEN
tcp 0 0 *:3478 *:* LISTEN
tcp 0 0 *:3478 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:https *:* LISTEN
tcp6 0 0 [::]:9010 [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
```

各属性介绍

各个属性(标题)含义是什么?

Proto 协议名

比如tcp,udp

Recv-Q 本地缓冲队列

表示本地缓冲中的数据,这些数据还没有被进程取走。

一般来说这里的值是0

Send-Q 发送缓存队列

对方还没收到数据,或者还没ack的数据,还在本地缓冲区中。

如果这里不能很快清零,可能是我方发送过快,或者对方接收太慢。

一般来说这里的值是0

Local Address 本地地址

0.0.0.0:80 表示监听本地服务器上所有ip的80端口(0.0.0.0表示所有ip)

:::9010 表示监听本地服务器上所有ip的9010端口。这里是IPv6地址。

::: 有3个冒号。前2个是0:0:0:0:0:0:0:0的缩写。表示本地所有IPv6地址。

第三个冒号是IP和端口的分隔符号。

127.0.0.1:123 表示监听本机的loopback(回环地址)地址的123端口。

形如::1:9011,表示监听IPv6的回环地址的9011端口。

Foreign Address 外部地址

与本地服务器通信的另外的地址,显示规则和上面本地地址的相同。

State 状态

网络链路的状态。常见 LISTEN,ESTABLISHED 等等

LISTEN 打开监听后状态为LISTEN,等待其他机器前来连接
ESTABLISHED 链接已建立,双方可以进行或正在数据交互

PID(Program)

进程id,表示使用这个连接的进程

扩展阅读

Linux awk命令的使用,逐行处理文本,搜索统计单词个数
find的使用,寻找特定文件
grep 搜索字符串
Shell for 循环语句

Linux使用netstat查看网络状态的相关教程结束。

《Linux使用netstat查看网络状态.doc》

下载本文的Word格式文档,以方便收藏与打印。