大資料開發Linux系統入門之netstat 命令學習
netstat 命令用於顯示與 IP、TCP、UDP 和 ICMP 協議相關的統計資料,一般用於檢驗本機各埠的網路連線情況。netstat 是在核心中訪問網路及相關資訊的程式,大資料培訓它能提供 TCP 連線,TCP 和 UDP 監聽,程序記憶體管理的相關報告。
如果你的計算機有時候接收到的資料報導致出錯資料或故障,你不必感到奇怪,TCP/IP 可以容許這些型別的錯誤,並能夠自動重發資料報。但如果累計的出錯情況數目佔到所接收的 IP 資料報相當大的百分比,或者它的數目正迅速增加,那麼你就應該使用 netstat 查一查為什麼會出現這些情況了。
1.命令格式:
netstat [-acCeFghilMnNoprstuvVwx][-A<網路型別>][--ip]
2.命令功能:
netstat 用於顯示與 IP、TCP、UDP 和 ICMP 協議相關的統計資料,一般用於檢驗本機各埠的網路連線情況。
3.命令引數:
-a 或–all 顯示所有連線中的 Socket。
-A<網路型別>或–<網路型別> 列出該網路型別連線中的相關地址。
-c 或–continuous 持續列出網路狀態。
-C 或–cache 顯示路由器配置的快取資訊。
-e 或–extend 顯示網路其他相關資訊。
-F 或–fib 顯示 FIB。
-g 或–groups 顯示多重廣播功能群組組員名單。
-h 或–help 線上幫助。
-i 或–interfaces 顯示網路介面資訊表單。
-l 或–listening 顯示監控中的伺服器的 Socket。
-M 或–masquerade 顯示偽裝的網路連線。
-n 或–numeric 直接使用 IP 地址,而不通過域名伺服器。
-N 或–netlink 或–symbolic 顯示網路硬體外圍裝置的符號連線名稱。
-o 或–timers 顯示計時器。
-p 或–programs 顯示正在使用 Socket 的程式識別碼和程式名稱。
-r 或–route 顯示 Routing Table。
-s 或–statistice 顯示網路工作資訊統計表。
-t 或–tcp 顯示 TCP 傳輸協議的連線狀況。
-u 或–udp 顯示 UDP 傳輸協議的連線狀況。
-v 或–verbose 顯示指令執行過程。
-V 或–version 顯示版本資訊。
-w 或–raw 顯示 RAW 傳輸協議的連線狀況。
-x 或–unix 此引數的效果和指定”-A unix”引數相同。
–ip 或–inet 此引數的效果和指定”-A inet”引數相同。
4.使用例項:
例項 1:無引數使用
命令:
netstat
輸出:
[root@localhost ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 268 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED
udp 0 0 192.168.120.204:4371 10.58.119.119:domain ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823
unix 2 [ ] DGRAM 7539
unix 3 [ ] STREAM CONNECTED 7287
unix 3 [ ] STREAM CONNECTED 7286
[root@localhost ~]#
說明:
從整體上看,netstat 的輸出結果可以分為兩個部分:
一個是 Active Internet connections,稱為有源 TCP 連線,其中"Recv-Q"和"Send-Q"指的是接收佇列和傳送佇列。這些數字一般都應該是 0。如果不是則表示軟體包正在佇列中堆積。這種情況只能在非常少的情況見到。
另一個是 Active UNIX domain sockets,稱為有源 Unix 域套介面(和網路套接字一樣,但是隻能用於本機通訊,效能可以提高一倍)。
Proto 顯示連線使用的協議,RefCnt 表示連線到本套介面上的程序號,Types 顯示套介面的型別,State 顯示套介面當前的狀態,Path 表示連線到套介面的其它程序使用的路徑名。
套介面型別:
-t :TCP
-u :UDP
-raw :RAW 型別
--unix :UNIX 域型別
--ax25 :AX25 型別
--ipx :ipx 型別
--netrom :netrom 型別
狀態說明:
LISTEN:偵聽來自遠方的 TCP 埠的連線請求
SYN-SENT:再發送連線請求後等待匹配的連線請求(如果有大量這樣的狀態包,檢查是否中招了)
SYN-RECEIVED:再收到和傳送一個連線請求後等待對方對連線請求的確認(如有大量此狀態,估計被 flood 攻擊了)
ESTABLISHED:代表一個開啟的連線
FIN-WAIT-1:等待遠端 TCP 連線中斷請求,或先前的連線中斷請求的確認
FIN-WAIT-2:從遠端 TCP 等待連線中斷請求
CLOSE-WAIT:等待從本地使用者發來的連線中斷請求
CLOSING:等待遠端 TCP 對連線中斷的確認
LAST-ACK:等待原來的發向遠端 TCP 的連線中斷請求的確認(不是什麼好東西,此項出現,檢查是否被攻擊)
TIME-WAIT:等待足夠的時間以確保遠端 TCP 接收到連線中斷請求的確認
CLOSED:沒有任何連線狀態
例項 2:列出所有埠
命令:
netstat -a
輸出:
[root@localhost ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:smux *:* LISTEN
tcp 0 0 *:svn *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 284 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED
udp 0 0 localhost:syslog *:*
udp 0 0 *:snmp *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 708833 /tmp/ssh-yKnDB15725/agent.15725
unix 2 [ ACC ] STREAM LISTENING 7296 /var/run/audispd_events
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823
unix 2 [ ] DGRAM 7539
unix 3 [ ] STREAM CONNECTED 7287
unix 3 [ ] STREAM CONNECTED 7286
[root@localhost ~]#
說明:
顯示一個所有的有效連線資訊列表,包括已建立的連線(ESTABLISHED),也包括監聽連線請(LISTENING)的那些連線。
例項 3:顯示當前 UDP 連線狀況
命令:
netstat -nu
輸出:
[root@andy ~]# netstat -nu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 ::ffff:192.168.12:53392 ::ffff:192.168.9.120:10000 ESTABLISHED
udp 0 0 ::ffff:192.168.12:56723 ::ffff:192.168.9.120:10000 ESTABLISHED
udp 0 0 ::ffff:192.168.12:56480 ::ffff:192.168.9.120:10000 ESTABLISHED
udp 0 0 ::ffff:192.168.12:58154 ::ffff:192.168.9.120:10000 ESTABLISHED
udp 0 0 ::ffff:192.168.12:44227 ::ffff:192.168.9.120:10000 ESTABLISHED
udp 0 0 ::ffff:192.168.12:36954 ::ffff:192.168.9.120:10000 ESTABLISHED
udp 0 0 ::ffff:192.168.12:53984 ::ffff:192.168.9.120:10000 ESTABLISHED
udp 0 0 ::ffff:192.168.12:57703 ::ffff:192.168.9.120:10000 ESTABLISHED
udp 0 0 ::ffff:192.168.12:53613 ::ffff:192.168.9.120:10000 ESTABLISHED
[root@andy ~]#
說明:
例項 4:顯示 UDP 埠號的使用情況
命令:
netstat -apu
輸出:
[root@andy ~]# netstat -apu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 *:57604 *:* 28094/java
udp 0 0 *:40583 *:* 21220/java
udp 0 0 *:45451 *:* 14583/java
udp 0 0 ::ffff:192.168.12:53392 ::ffff:192.168.9.120:ndmp ESTABLISHED 19327/java
udp 0 0 *:52370 *:* 15841/java
udp 0 0 ::ffff:192.168.12:56723 ::ffff:192.168.9.120:ndmp ESTABLISHED 15841/java
udp 0 0 *:44182 *:* 31757/java
udp 0 0 *:48155 *:* 5476/java
udp 0 0 *:59808 *:* 17333/java
udp 0 0 ::ffff:192.168.12:56480 ::ffff:192.168.9.120:ndmp ESTABLISHED 28094/java
udp 0 0 ::ffff:192.168.12:58154 ::ffff:192.168.9.120:ndmp ESTABLISHED 15429/java
udp 0 0 *:36780 *:* 10091/java
udp 0 0 *:36795 *:* 24594/java
udp 0 0 *:41922 *:* 20506/java
udp 0 0 ::ffff:192.168.12:44227 ::ffff:192.168.9.120:ndmp ESTABLISHED 17333/java
udp 0 0 *:34258 *:* 8866/java
udp 0 0 *:55508 *:* 11667/java
udp 0 0 *:36055 *:* 12425/java
udp 0 0 ::ffff:192.168.12:36954 ::