‘netstat’ 是一个用于查看网络相关信息的命令行工具。
‘netstat’指令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
这个工具通常都会预装在Ubuntu操作系统中。
- netstat -a
-
该输出显示了当前活动的Internet连接,包括处于监听状态和已建立的连接。
- Active Internet connections (servers and established)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
- tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN
- tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
- tcp 0 0 pcq-mirror-02v:53416 151.101.128.223:https ESTABLISHED
- tcp 25 0 pcq-mirror-02v:44984 151.101.64.223:https CLOSE_WAIT
-
每一行代表一个连接,包含以下信息:
- Proto:协议类型,这里为tcp。
- Recv-Q和Send-Q:接收队列和发送队列中的字节数。
- Local Address:本地地址和端口。
- Foreign Address:远程地址和端口。
- State:连接状态。
-
这会显示所有当前活动的网络连接,包括监听和已建立的连接。
- netstat -l
-
netstat -l 命令用于显示所有处于监听状态的 TCP 和 UDP 端口。
- Active Internet connections (only servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
- tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN
- tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
- tcp6 0 0 [::]:http [::]:* LISTEN
- tcp6 0 0 [::]:sunrpc [::]:* LISTEN
- tcp6 0 0 [::]:ssh [::]:* LISTEN
- udp 0 0 localhost:domain 0.0.0.0:*
- udp 0 0 0.0.0.0:sunrpc 0.0.0.0:*
- udp6 0 0 [::]:sunrpc [::]:*
- raw6 0 0 [::]:ipv6-icmp [::]:* 7
- raw6 0 0 [::]:ipv6-icmp [::]:* 7
-
监听状态的端口是指已经准备好接受连接的端口。这些端口通常是在服务器上使用的,用于等待客户端的连接请求。使用 -l 选项,netstat 命令将只显示处于监听状态的端口,而不显示已建立的连接。
输出将包括本地地址、外部地址和端口号,以及连接的状态。
netstat -t 命令用于显示所有活动的 TCP 连接。
- netstat -t
-
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的协议,它提供了一种可靠的数据传输服务。使用 -t 选项,netstat 命令将只显示当前处于活动状态的 TCP 连接。
输出将包括本地地址、远程地址和端口号,以及连接的状态。
这会显示所有TCP连接的详细信息。
- netstat -u
-
netstat -u 命令用于显示所有UDP(User Datagram Protocol)连接和相关的网络统计信息。UDP是一种无连接的传输协议,通常用于快速传输数据,但不提供可靠性或流控制。
- Proto Recv-Q Send-Q Local Address Foreign Address State
- udp 0 0 0.0.0.0:68 0.0.0.0:*
- udp 0 0 0.0.0.0:5353 0.0.0.0:*
- udp 0 0 0.0.0.0:5353 0.0.0.0:*
- udp 0 0 0.0.0.0:5353 0.0.0.0:*
-
这个输出显示了四个UDP连接的信息,包括本地地址、本地端口、远程地址、远程端口以及连接状态。通常情况下,UDP连接的状态较简单,可能是"ESTABLISHED"(已建立)或其他一些特定状态。
- netstat -tuln -p
-
运行这个命令将列出所有正在监听的TCP和UDP连接,并显示与每个连接关联的进程名称和PID。
- (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 127.0.0.53:53 0.0.0.0:* LISTEN -
- tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
- tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
- tcp6 0 0 :::80 :::* LISTEN -
- tcp6 0 0 :::111 :::* LISTEN -
- tcp6 0 0 :::22 :::* LISTEN -
- udp 0 0 127.0.0.53:53 0.0.0.0:* -
- udp 0 0 0.0.0.0:111 0.0.0.0:* -
- udp6 0 0 :::111 :::* -
-
这个命令对于排查网络连接问题、识别哪些进程在使用网络以及监视网络活动非常有用。
运行 netstat -n 将列出当前系统上的网络连接信息,包括本地地址、本地端口、远程地址、远程端口等,但不会显示主机名或服务名。
- netstat -n
-
- 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 192.168.1.2:54234 203.0.113.10:80 ESTABLISHED
- tcp6 0 0 :::80 :::* LISTEN
- udp 0 0 0.0.0.0:53 0.0.0.0:*
-
以上输出可以看到网络连接的协议(例如TCP、UDP、TCP6),本地地址和端口,远程地址和端口,以及连接状态,但没有进行主机名或服务名的解析。
使用 netstat -n 可以加快查看网络连接的速度,并在需要时更容易分析和理解连接的情况。
- netstat -s
-
输出显示各种网络统计信息,包括接收和发送的数据包数量、错误等。
这些统计数据提供了有关网络协议的使用情况的信息,包括收到的数据包数量、发送的数据包数量、错误、连接状态等。
- netstat -r
-
运行 netstat -r 命令将列出系统的路由表,包括目标网络地址、网关、接口、标志等信息。
- Destination Gateway Genmask Flags MSS Window irtt Iface
- default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
- 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
-
- netstat -4 # 仅显示IPv4连接
- netstat -6 # 仅显示IPv6连接
-
执行该命令:netstat -4后,将输出与 IPv4 网络连接相关的信息。输出通常包括本地地址和端口、远程地址和端口、协议类型、状态等。
如果执行netstat -6,则输出与IPv6网络连接相关的信息。
- netstat -g
-
执行该命令后,将输出与系统的组网统计信息相关的输出。这些信息包括组播统计、接口统计和 IP 统计等。
- IPv6/IPv4 Group Memberships
- Interface RefCnt Group
- --------------- ------ ---------------------
- lo 1 all-systems.mcast.net
- ens160 1 all-systems.mcast.net
- ens192 1 all-systems.mcast.net
- lo 1 ip6-allnodes
- lo 1 ff01::1
- ens160 1 ff02::1:ffbe:94d8
- ens160 2 ip6-allnodes
- ens160 1 ff01::1
- ens192 1 ff02::1:ffbe:1ea3
- ens192 2 ip6-allnodes
- ens192 1 ff01::1
-
- netstat --help
-
netstat --help在有的版本里面,用man ss 取代。
ss 命令是 netstat 命令的替代工具,用于查看套接字(socket)统计信息。与 netstat 不同,ss 更快速、更有效,并且支持更多的选项。
在Ubuntu系统中执行‘man ss’
- man ss
-