netstat的含義是Net Status,顧名思義,是指網絡狀態。使用netstat指令可以查詢主機使用中的端口(連接埠,Port),以及使用此端口的程式與應用服務為何。藉此可以判斷主機是否遭到不明程式甚至惡意程式的侵擾。 目前常用的主機有Windows與Linux兩種,在此將集中講述這兩種主機的端口掃描指令。 Windows主機 netstat [-a] [-e] [-n] [-s] [-p proto] [-r] [interval] 其中的參數說明如下: -a 顯示所有連接和監聽端口。 -b 顯示包含於創建每個連接或監聽端口的可執行組件; 在某些情況下已知可執行組件擁有多個獨立組件, 並且在這些情況下包含於創建連接或監聽端口的組件序列被顯示; 這種情況下,可執行組件名在底部的[]中,頂部是其調用的組件, 直到TCP/IP部分。 注意:此選項可能需要很長時間,如果沒有足夠權限可能失敗。 -e 顯示以太網統計信息,此選項可以與-s選項組合使用。 -n 以數字形式顯示地址和端口號。 -o 顯示與每個連接相關的所屬進程PID。 -p proto 顯示proto指定的協議的連接;proto可以是下列協議之一:TCP、UDP、TCPv6或UDPv6; 如果與-s選項一起使用以顯示按協議統計信息,proto可以是下列協議之一: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。 -r 顯示路由表。 -s 顯示按協議統計信息。默認地,顯示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6 的統計信息; -p選項用於指定默認情況的子集。 -t 顯示當前連接卸載狀態。 -v 與-b選項一起使用時將顯示包含於為所有可執行組件創建連接或監聽端口的組件。 interval 重新顯示選定統計信息,每次顯示之間暫停時間間隔(以秒計); 按CTRL+C停止重新顯示統計信息; 如果省略,netstat顯示當前配置信息(只顯示一次)。 Linux主機 Linux與Windows主機所使用的netstat指令大同小異,其中有部分不同。例如Linux下查看伺服器連接端口的指令是netstat -tln,顯示與每個連接相關的所屬進程PID的指令是netstat -p而不是Windows主機所用的netstat -o。在Linux中,輸入lsof -i :<端口號>還可以查看相關端口正在執行的程式或應用服務。例如lsof -i :3306就可以查到這個端口由MySQL使用。另外,Windows主機使用MSDOS輸入指令,Linux則使用SSH輸入。 其它事項 netstat指令遠遠不止這些,然而其它指令並不常用,故不在此贅述。 netstat的指令可以組合使用。每附加一個指令,只需在原有指令後面輸入相關的字母即可。例如netstat -ano(-a、-n與-o的組合)可以顯示所有連接和監聽端口,以數字形式顯示地址和端口號並且顯示與每個連接相關的所屬進程PID;指令的組合有各種變化,視乎具體的查詢需要。 |