在InternetRFC標準中,Netstat的定義是:Netstat是在內核中訪問網絡及相關信息的程序,它能提供TCP連接,TCP和UDP監聽,進程內存管理的相關報告。
Netstat是控制臺命令,是一個監控TCP/ip網絡的非常有用的工具,它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備的狀態信息。Netstat用于顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用于檢驗本機各端口的網絡連接情況。
如果你的計算機有時候接收到的數據包導致出錯數據或故障,你不必感到奇怪,TCP/IP可以容許這些類型的錯誤,并能夠自動重發數據包。但如果累計的出錯情況數目占到所接收的IP數據報相當大的百分比,或者它的數目正迅速增加,那么你就應該使用Netstat查一查為什么會出現這些情況了。
一般用netstat-an來顯示所有連接的端口并用數字表示。
netstat命令的功能是顯示網絡連接、路由表和網絡接口信息,可以讓用戶得知有哪些網絡連接正在運作。使用時如果不帶參數,netstat顯示活動的TCP連接
該命令的一般格式為:
netstat[-a][-e][-n][-o][-pPRotocol][-r][-s][Interval]
輸出信息執行netstat后,其輸出結果為
Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHEDtcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHEDtcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHEDtcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHEDtcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSEActive UNIX domain sockets (w/o servers)Proto RefCnt Flags Type State I-Node Pathunix 1 [ ] STREAM CONNECTED 16178 @000000ddunix 1 [ ] STREAM CONNECTED 16176 @000000dcunix 9 [ ] DGRAM 5292 /dev/logunix 1 [ ] STREAM CONNECTED 16182 @000000df
從整體上看,netstat的輸出結果可以分為兩個部分:
一個是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指%0A的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟件包正在隊列中堆積。這種情況只能在非常少的情況見到。
另一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是只能用于本機通信,性能可以提高一倍)。 Proto顯示連接使用的協議,RefCnt表示連接到本套接口上的進程號,Types顯示套接口的類型,State顯示套接口當前的狀態,Path表示連接到套接口的其它進程使用的路徑名。
選項命令中各選項的含義如下:
-a(all)顯示所有socket,包括正在監聽的。
-c每隔1秒就重新顯示一遍,直到用戶中斷它。
-i顯示所有網絡接口的信息,格式“netstat-i”。
-n以網絡IP地址代替名稱,顯示出網絡連接情形。
-r 顯示核心路由表,格式同“route-e”。
-t(TCP)顯示TCP協議的連接情況
-u(UDP)顯示UDP協議的連接情況。
-v顯示正在進行的工作。
-p顯示指定協議信息。
-b顯示在創建每個連接或偵聽端口時涉及的可執行程序。
-e顯示以太網統計。此選項可以與-s選項結合使用。
-f顯示外部地址的完全限定域名(FQDN)。
-o顯示擁有的與每個連接關聯的進程ID。
-s顯示每個協議的統計。
-x顯示NetworkDirect連接、偵聽器和共享端點。
-y顯示所有連接的TCP連接模板。無法與其他選項結合使用。
interval重新顯示選定的統計,各個顯示間暫停的間隔秒數。按CTRL+C停止重新顯示統計。如果省略,則netstat將打印當前的配置信息一次。
常用選項netstat-s
——本選項能夠按照各個協議分別顯示其統計數據。如果你的應用程序(如Web瀏覽器)運行速度比較慢,或者不能顯示Web頁之類的數據,那么你就可以用本選項來查看一下所顯示的信息。你需要仔細查看統計數據的各行,找到出錯的關鍵字,進而確定問題所在。
netstat-e
——本選項用于顯示關于以太網的統計數據,它列出的項目包括傳送數據報的總字節數、錯誤數、刪除數,包括發送和接收量(如發送和接收的字節數、數據包數[1]),或有廣播的數量??梢杂脕斫y計一些基本的網絡流量。
netstat-r
——本選項可以顯示關于路由表的信息,類似于后面所講使用routeprint命令時看到的信息。除了顯示有效路由外,還顯示當前有效的連接。
netstat-a
——本選項顯示一個所有的有效連接信息列表,包括已建立的連接(ESTABLISHED),也包括監聽連接請求(LISTENING)的那些連接。
netstat-n
——顯示所有已建立的有效連接。[3]
netstat-p
——顯示協議名查看某協議使用情況
常見狀態即連接狀態。在原模式中沒有狀態,在用戶數據報協議中也經常沒有狀態,于是狀態列可以空出來。若有狀態,通常取值為:[4]
LISTEN:偵聽來自遠方的TCP端口的連接請求
SYN-SENT :在發送連接請求后等待匹配的連接請求
SYN-RECEIVED:在收到和發送一個連接請求后等待對方對連接請求的確認
ESTABLISHED :代表一個打開的連接
FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN-WAIT-2 :從遠程TCP等待連接中斷請求
CLOSE-WAIT :等待從本地用戶發來的連接中斷請求
CLOSING :等待遠程TCP對連接中斷的確認
LAST-ACK:等待原來的發向遠程TCP的連接中斷請求的確認
TIME-WAIT:等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
CLOSED:沒有任何連接狀態
注意:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
查看端口是否被占用:netstat-anp|grepport
lsof-i:port
查看端口被那個進程占用:netstat-anp|grepport
或使用lsof-i:port
顯示結果的有進程id,
再ps-ef|greppid即可
查看進程(如java進程)使用的端口:ps-aux|grepjava
找到pid
再lsof-i|greppid
或使用netstat-anp|greppid即可
參考資料:http://www.CUOXin.com/ggjucheng/archive/2012/01/08/2316661.html
新聞熱點
疑難解答