轉(zhuǎn)載自
http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
Linux netstat命令詳解
寫在最前面
同學(xué)們,mac的netstat和linux的是不一樣的啊
前言
netstat命令用于顯示與IP、TCP、UDP和ICMP協(xié)議相關(guān)的統(tǒng)計數(shù)據(jù),一般用于檢驗本機各端口的網(wǎng)絡(luò)連接情況。netstat是在內(nèi)核中訪問網(wǎng)絡(luò)及相關(guān)信息的程序,它能提供TCP連接,TCP和UDP監(jiān)聽,進程內(nèi)存管理的相關(guān)報告。
如果你的計算機有時候接收到的數(shù)據(jù)報導(dǎo)致出錯數(shù)據(jù)或故障,你不必感到奇怪,TCP/IP可以容許這些類型的錯誤,并能夠自動重發(fā)數(shù)據(jù)報。但如果累計的出錯情況數(shù)目占到所接收的IP數(shù)據(jù)報相當(dāng)大的百分比,或者它的數(shù)目正迅速增加,那么你就應(yīng)該使用netstat查一查為什么會出現(xiàn)這些情況了。
netstat命令可以顯示網(wǎng)絡(luò)接口的很多統(tǒng)計信息,包括打開的socket和路由表。無選項運行命令顯示打開的socket。
默認(rèn)
# netstat
我的mac上的輸出
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 alexs-mbp.51472 www.evernote.com.https ESTABLISHED
tcp4 0 0 alexs-mbp.51468 hkg12s09-in-f14..https ESTABLISHED
tcp4 0 0 alexs-mbp.49451 ec2-54-149-28-20.https ESTABLISHED
tcp4 0 0 alexs-mbp.49429 17.188.138.72.5223 ESTABLISHED
tcp4 0 0 alexs-mbp.49425 173.112.255.173..https ESTABLISHED
tcp4 0 0 alexs-mbp.49161 17.252.236.33.5223 ESTABLISHED
udp4 0 0 *.* *.*
udp4 0 0 *.* *.*
udp4 0 0 *.61469 *.*
udp4 0 0 *.* *.*
udp4 0 0 *.* *.*
udp4 0 0 *.* *.*
udp6 0 0 alexs-mbp.local.ntp *.*
udp4 0 0 alexs-mbp.ntp *.*
linux上的輸出
[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
從整體上看,netstat的輸出結(jié)果可以分為兩個部分:
一個是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指的是接收隊列和發(fā)送隊列。這些數(shù)字一般都應(yīng)該是0。如果不是則表示軟件包正在隊列中堆積。這種情況只能在非常少的情況見到。
另一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網(wǎng)絡(luò)套接字一樣,但是只能用于本機通信,性能可以提高一倍)。
Proto顯示連接使用的協(xié)議,RefCnt表示連接到本套接口上的進程號,Types顯示套接口的類型,State顯示套接口當(dāng)前的狀態(tài),Path表示連接到套接口的其它進程使用的路徑名。
套接口類型:
- -t TCP
- -u UDP
- -raw RAW類型
- --unix UNIX域類型
- --ax25 AX25類型
- --ipx ipx類型
- --netrom netrom類型
- -a (all)顯示所有選項,默認(rèn)不顯示LISTEN相關(guān)
- -n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字(比如默認(rèn)會把22顯示為ssh)
- -l 僅列出有在 Listen (監(jiān)聽) 的服務(wù)狀態(tài)
- -p 顯示建立相關(guān)鏈接的程序名
- -r 顯示路由信息,路由表
- -e 顯示擴展信息,例如uid等
- -s 按各個協(xié)議進行統(tǒng)計
- -c 每隔一個固定時間,執(zhí)行該netstat命令。
狀態(tài)說明:
- LISTEN:偵聽來自遠(yuǎn)方的TCP端口的連接請求
- SYN-SENT:再發(fā)送連接請求后等待匹配的連接請求(如果有大量這樣的狀態(tài)包,檢查是否中招了)
- SYN-RECEIVED:再收到和發(fā)送一個連接請求后等待對方對連接請求的確認(rèn)(如有大量此狀態(tài),估計被flood攻擊了)
- ESTABLISHED:代表一個打開的連接
- FIN-WAIT-1:等待遠(yuǎn)程TCP連接中斷請求,或先前的連接中斷請求的確認(rèn)
- FIN-WAIT-2:從遠(yuǎn)程TCP等待連接中斷請求
- CLOSE-WAIT:等待從本地用戶發(fā)來的連接中斷請求
- CLOSING:等待遠(yuǎn)程TCP對連接中斷的確認(rèn)
- LAST-ACK:等待原來的發(fā)向遠(yuǎn)程TCP的連接中斷請求的確認(rèn)(不是什么好東西,此項出現(xiàn),檢查是否被攻擊)
- TIME-WAIT:等待足夠的時間以確保遠(yuǎn)程TCP接收到連接中斷請求的確認(rèn)
- CLOSED:沒有任何連接狀態(tài)
常用
- 附加顯示LISTEN的鏈接
# netstat -a - 顯示當(dāng)前UDP連接狀況
# netstat -nu - 顯示UDP端口號的使用情況
# netstat -apu - 查看10022端口使用情況 / 找出程序運行的端口
netstat -nap | grep 10022
netstat -ap | grep ssh(ssh做端口名) - 在 netstat 輸出中顯示 PID 和進程名稱
netstat -p - 顯示網(wǎng)絡(luò)接口列表
netstat -i - 顯示網(wǎng)絡(luò)統(tǒng)計信息
# netstat -s
按照各個協(xié)議分別顯示其統(tǒng)計數(shù)據(jù)。如果我們的應(yīng)用程序(如Web瀏覽器)運行速度比較慢,或者不能顯示W(wǎng)eb頁之類的數(shù)據(jù),那么我們就可以用本選項來查看一下所顯示的信息。我們需要仔細(xì)查看統(tǒng)計數(shù)據(jù)的各行,找到出錯的關(guān)鍵字,進而確定問題所在。 - 日常查端口
netstat -tulnp |grep ssh(ssh做程序名)