當前位置:
首頁 > 知識 > Linux netstat命令詳解

Linux netstat命令詳解

Linux netstat命令詳解



來源:ggjucheng


鏈接:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html


簡介

Netstat 命令用於顯示各種網路相關信息,如網路連接,路由表,介面狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。


輸出信息含義


執行netstat後,其輸出結果為


Active Internet connections(w/oservers)


ProtoRecv-QSend-QLocal Address Foreign Address State


tcp2210.34.6.89:telnet210.34.6.96:2873ESTABLISHED


tcp296210.34.6.89:1165210.34.6.84:netbios-ssn ESTABLISHED


tcplocalhost.localdom:9001localhost.localdom:1162ESTABLISHED


tcplocalhost.localdom:1162localhost.localdom:9001ESTABLISHED


tcp80210.34.6.89:1161210.34.6.10:netbios-ssn CLOSE

Active UNIX domain sockets(w/oservers)


Proto RefCnt FlagsTypeStateI-Node Path


unix1[]STREAMCONNECTED16178@000000dd


unix1[]STREAMCONNECTED16176@000000dc


unix9[]DGRAM5292/dev/log


unix1[]STREAMCONNECTED16182@000000df


從整體上看,netstat的輸出結果可以分為兩個部分:


一個是Active Internet connections,稱為有源TCP連接,其中」Recv-Q」和」Send-Q」指%0A的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟體包正在隊列中堆積。這種情況只能在非常少的情況見到。


另一個是Active UNIX domain sockets,稱為有源Unix域套介面(和網路套接字一樣,但是只能用於本機通信,性能可以提高一倍)。


Proto顯示連接使用的協議,RefCnt表示連接到本套介面上的進程號,Types顯示套介面的類型,State顯示套介面當前的狀態,Path表示連接到套介面的其它進程使用的路徑名。

常見參數


-a (all)顯示所有選項,默認不顯示LISTEN相關


-t (tcp)僅顯示tcp相關選項


-u (udp)僅顯示udp相關選項


-n 拒絕顯示別名,能顯示數字的全部轉化成數字。


-l 僅列出有在 Listen (監聽) 的服務狀態


-p 顯示建立相關鏈接的程序名


-r 顯示路由信息,路由表


-e 顯示擴展信息,例如uid等


-s 按各個協議進行統計

-c 每隔一個固定時間,執行該netstat命令。


提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到


實用命令實例


1. 列出所有埠 (包括監聽和未監聽的)


列出所有埠 netstat -a


# netstat -a | more


Active Internet connections(serversandestablished)


ProtoRecv-QSend-QLocal Address Foreign Address State


tcplocalhost:30037*:*LISTEN


udp*:bootpc*:*

Active UNIX domain sockets(serversandestablished)


Proto RefCnt FlagsTypeStateI-Node Path


unix2[ACC]STREAMLISTENING6135/tmp/.X11-unix/X0


unix2[ACC]STREAMLISTENING5140/var/run/acpid.socket


列出所有 tcp 埠 netstat -at


# netstat -at


Active Internet connections(serversandestablished)


ProtoRecv-QSend-QLocal Address Foreign Address State


tcplocalhost:30037*:*LISTEN


tcplocalhost:ipp*:*LISTEN

tcp*:smtp*:*LISTEN


tcp6localhost:ipp[::]:*LISTEN


列出所有 udp 埠 netstat -au


# netstat -au


Active Internet connections(serversandestablished)


ProtoRecv-QSend-QLocal Address Foreign Address State


udp*:bootpc*:*


udp*:49119*:*


udp*:mdns*:*


2. 列出所有處於監聽狀態的 Sockets

只顯示監聽埠 netstat -l


# netstat -l


Active Internet connections(onlyservers)


ProtoRecv-QSend-QLocal Address Foreign Address State


tcplocalhost:ipp*:*LISTEN


tcp6localhost:ipp[::]:*LISTEN


udp*:49119*:*


只列出所有監聽 tcp 埠 netstat -lt


# netstat -lt


Active Internet connections(onlyservers)

ProtoRecv-QSend-QLocal Address Foreign Address State


tcplocalhost:30037*:*LISTEN


tcp*:smtp*:*LISTEN


tcp6localhost:ipp[::]:*LISTEN


只列出所有監聽 udp 埠 netstat -lu


# netstat -lu


Active Internet connections(onlyservers)


ProtoRecv-QSend-QLocal Address Foreign Address State


udp*:49119*:*


udp*:mdns*:*

只列出所有監聽 UNIX 埠 netstat -lx


# netstat -lx


Active UNIX domain sockets(onlyservers)


Proto RefCnt FlagsTypeStateI-Node Path


unix2[ACC]STREAMLISTENING6294private/maildrop


unix2[ACC]STREAMLISTENING6203public/cleanup


unix2[ACC]STREAMLISTENING6302private/ifmail


unix2[ACC]STREAMLISTENING6306private/bsmtp


3. 顯示每個協議的統計信息


顯示所有埠的統計信息 netstat -s


# netstat -s


Ip:


11150total packetsreceived


1with invalidaddresses


forwarded


incoming packetsdiscarded


11149incoming packetsdelivered


11635requests sent out


Icmp:


ICMP messagesreceived


input ICMP messagefailed.


Tcp:


582active connectionsopenings


2failed connectionattempts


25connection resets received


Udp:


1183packetsreceived


4packetstounknown portreceived.


.....


顯示 TCP 或 UDP 埠的統計信息 netstat -st 或 -su


# netstat -st


# netstat -su


4. 在 netstat 輸出中顯示 PID 和進程名稱 netstat -p


netstat -p 可以與其它開關一起使用,就可以添加 「PID/進程名稱」 到 netstat 輸出中,這樣 debugging 的時候可以很方便的發現特定埠運行的程序。


# netstat -pt


Active Internet connections(w/oservers)


ProtoRecv-QSend-QLocal Address Foreign Address StatePID/Program name


tcpramesh-laptop.loc:52750lax:wwwESTABLISHED2109/firefox


5. 在 netstat 輸出中不顯示主機,埠和用戶名 (host, port or user)


當你不想讓主機,埠和用戶名顯示,使用 netstat -n。將會使用數字代替那些名稱。


同樣可以加速輸出,因為不用進行比對查詢。


# netstat -an


如果只是不想讓這三個名稱中的一個被顯示,使用以下命令


# netsat -a --numeric-ports


# netsat -a --numeric-hosts


# netsat -a --numeric-users


6. 持續輸出 netstat 信息


netstat 將每隔一秒輸出網路信息。


# netstat -c


Active Internet connections(w/oservers)


ProtoRecv-QSend-QLocal Address Foreign Address State


tcpramesh-laptop.loc:43758server-101-101-43-2:www ESTABLISHED


^C


7. 顯示系統不支持的地址族 (Address Families)


netstat--verbose


在輸出的末尾,會有如下的信息


netstat:no supportfor`AFIPX onthissystem.


netstat:no supportfor`AFAX25 onthissystem.


netstat:no supportfor`AFX25 onthissystem.


netstat:no supportfor`AFNETROM onthissystem.


8. 顯示核心路由信息 netstat -r


# netstat -r


Kernel IP routing table


Destination Gateway Genmask Flags MSS Window irttIface


192.168.1.0*255.255.255.0Ueth2


link-local*255.255.0.0Ueth2


default192.168.1.10.0.0.0UGeth2


注意: 使用 netstat -rn 顯示數字格式,不查詢主機名稱。


9. 找出程序運行的埠


並不是所有的進程都能找到,沒有許可權的會不顯示,使用 root 許可權查看所有的信息。


# netstat -ap | grep ssh


tcp1dev-db:ssh101.174.100.22:39213CLOSE_WAIT-


tcp1dev-db:ssh101.174.100.22:57643CLOSE_WAIT-


找出運行在指定埠的進程


# netstat -an | grep :80


10. 顯示網路介面列表


# netstat -i


KernelInterfacetable


Iface MTU MetRX-OKRX-ERRRX-DRPRX-OVRTX-OKTX-ERRTX-DRPTX-OVR Flg


eth01500BMU


lo1643644LRU


顯示詳細信息,像是 ifconfig 使用 netstat -ie:


# netstat -ie


KernelInterfacetable


eth0Linkencap:EthernetHWaddr00:10:40:11:11:11


UP BROADCAST MULTICASTMTU:1500Metric:1


RXpackets:errors:dropped:overruns:frame:


TXpackets:errors:dropped:overruns:carrier:


collisions:txqueuelen:1000


RXbytes:(0.0B)TXbytes:(0.0B)


Memory:f6ae0000-f6b00000


11. IP和TCP分析


查看連接某服務埠最多的的IP地址


wss8848@ubuntu:~$netstat-nat|grep"192.168.1.15:22"|awk |awk-F: |sort|uniq-c|sort-nr|head-20


18221.136.168.36


3154.74.45.242


278.173.31.236


262.183.207.98


2192.168.1.14


2182.48.111.215


2124.193.219.34


2119.145.41.2


2114.255.41.30


175.102.11.99


TCP各種狀態列表


wss8848@ubuntu:~$netstat-nat|awk


established)


Foreign


LISTEN


TIME_WAIT


ESTABLISHED


TIME_WAIT


SYN_SENT


先把狀態全都取出來,然後使用uniq -c統計,之後再進行排序。


wss8848@ubuntu:~$netstat-nat|awk |sort|uniq-c


143ESTABLISHED


1FIN_WAIT1


1Foreign


1LAST_ACK


36LISTEN


6SYN_SENT


113TIME_WAIT


1established)


最後的命令如下


netstat-nat|awk |sort|uniq-c|sort-rn


分析access.log獲得訪問前10位的ip地址


awk access.log|sort|uniq-c|sort-nr|head-10


參考資料:http://blog.maxiang.net/10-netstat-command-examples/139/


http://www.ipcpu.com/2011/07/netstat-linux/


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序源 的精彩文章:

如何獲得一份滿意的 offer?
讓web app更快的HTML5最佳實踐
Spring AOP 的實現原理
Ubuntu LAMP WEB開發環境搭建
創業做一個app究竟要花多少錢?

TAG:程序源 |

您可能感興趣

乾貨詳解 Linux phantomJs install course
Linux中的top命令詳解
Python super 詳解
《快學BigData》-Linux grep 命令詳解
詳解Pony最新妝容-Flower that booms at night
Linux wget 命令用法詳解
詳解Elasticsearch的基友Logstash
Spring Security 5.0 的 DelegatingPasswordEncoder 詳解
WebExtension安全漏洞詳解 Part 1
MyBatis 配置 typeHandlers 詳解
詳解 RestTemplate 操作
Tensorboard 詳解
基於Python Selenium Unittest PO設計模式詳解
Symantec NetBackup 部署需要調整Linux內核詳解
eBay運營之best match規則詳解
聚合查詢慢——詳解Global Ordinals與High Cardinality
Linux的chown和chmod授權詳解
詳解react、redux、react-redux之間的關係
Python Excel處理庫openpyxl詳解
pentestdb 架構詳解