Netstat 是一個用于顯示網絡連接配接、路由表、接口統計等資訊的指令行工具。它在 Linux 和其他類 Unix 系統中都有提供,可以幫助我們分析和診斷網絡問題。本文将介紹 Netstat 指令的基本用法和常見選項。
Netstat 指令的文法
Netstat 指令的基本文法如下:
netstat [選項] [位址族]
其中,選項可以用來指定顯示的資訊類型和格式,位址族可以用來過濾顯示的協定類型,如 inet(IPv4)、inet6(IPv6)、unix(Unix 域套接字)等。如果不指定位址族,則預設顯示所有協定類型的資訊。
Netstat 指令的常見選項
Netstat 指令有很多選項,可以根據不同的需求進行組合使用。下面列舉一些常見的選項及其含義:
- -a:顯示所有套接字(socket),包括監聽(listening)和非監聽(non-listening)的。
- -l:隻顯示監聽狀态的套接字。
- -n:以數字形式顯示位址和端口,不進行域名或服務名的解析。
- -p:顯示每個套接字對應的程序辨別符(PID)和程式名。
- -t:隻顯示 TCP 協定的套接字。
- -u:隻顯示 UDP 協定的套接字。
- -r:顯示路由表(routing table)。
- -i:顯示網絡接口(network interface)的統計資訊。
- -s:顯示網絡協定的統計資訊。
Netstat 指令的示例
下面給出一些使用 Netstat 指令的示例,以便更好地了解其用法。
顯示所有 TCP 連接配接
netstat -at
這個指令會顯示所有 TCP 協定的套接字,包括本地位址(Local Address)、遠端位址(Foreign Address)和連接配接狀态(State)。例如:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:ssh 192.168.1.101:49210 ESTABLISHED
tcp 0 0 192.168.1.100:49212 172.217.160.78:https ESTABLISHED
其中,LISTEN 表示監聽狀态,ESTABLISHED 表示已建立連接配接,其他可能的狀态還有 SYN_SENT、SYN_RECV、FIN_WAIT1、FIN_WAIT2、TIME_WAIT、CLOSE、CLOSE_WAIT、LAST_ACK、CLOSING 等。
顯示所有 UDP 連接配接
netstat -au
這個指令會顯示所有 UDP 協定的套接字,包括本地位址和遠端位址。例如:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 192.168.1.100:ntp 0.0.0.0.0:*
udp 0 0 192.168.1.100:mdns 0.0.0.0:*
其中,bootpc 表示 DHCP 用戶端端口,domain 表示 DNS 服務端口,ntp 表示網絡時間協定(Network Time Protocol)端口,mdns 表示多點傳播 DNS(Multicast DNS)端口。
顯示所有監聽套接字
netstat -l
這個指令會顯示所有監聽狀态的套接字,包括 TCP 和 UDP 協定的。例如:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 192.168.1.100:mdns 0.0.0.0:*
顯示所有套接字及其對應的程序
netstat -p
這個指令會顯示所有套接字及其對應的程序辨別符(PID)和程式名,如果有權限的話。例如:
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 1 1 localhost:49214 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49216 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49218 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49220 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49222 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49224 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49226 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49228 localhost:domain CLOSE_WAIT