Linux性能優化(七)——網絡流量監控工具

一、iftop

1、iftop簡介

iftop命令可以用來監控網卡的實時流量(可以指定網段)、反向解析IP、顯示端口信息等。
在線安裝:yum install iftop

2、iftop命令

iftop -h | [-nNpblP] [-u unit] [-i interface] [-f filter code] [-F net/mask] [-G net6/mask6]
-h:查看幫助信息
-i:指定監控網卡
-b:不顯示流量柱狀圖
-B:以字節爲單位顯示流量(默認bits)
-n:不解析主機名稱,直接都顯示IP
-N:不解析端口服務,直接顯示端口號
-F:顯示特定網段的進出流量
-m limit:設置帶寬上限,可使用K、M、G作爲後綴
iftop -b -n -N -F 192.168.0.0/24
Linux性能優化(七)——網絡流量監控工具
TX:發送流量
RX:接收流量
TOTAL:總流量
cum:累積總流量
peak:流量峯值
rates:分別表示最近2s、10s、40s的平均流量















3、iftop交互命令

按h切換是否顯示幫助
按n切換顯示本機IP或主機名
按s切換是否顯示本機的host信息
按d切換是否顯示遠端目標主機的host信息
按t切換顯示格式爲2行/1行/只顯示發送流量/只顯示接收流量
按N切換顯示端口號或端口服務名稱
按S切換是否顯示本機的端口信息
按D切換是否顯示遠端目標主機的端口信息
按p切換是否顯示端口信息
按P切換暫停/繼續顯示
按b切換是否顯示平均流量圖形條
按B切換計算2秒或10秒或40秒內的平均流量
按T切換是否顯示每個連接的總流量
按l打開屏幕過濾功能,輸入要過濾的字符,
按L切換顯示畫面上邊的刻度;刻度不同,流量圖形條會有變化
按j或按k可以向上或向下滾動屏幕顯示的連接記錄
按1或2或3可以根據右側顯示的三列流量數據進行排序
按<根據左邊的本機名或IP排序;按>根據遠端目標主機的主機名或IP排序
按o切換是否固定只顯示當前的連接
按f可以編輯過濾代碼
按!可以使用shell命令
按q退出監控




















二、netstat

1、netstat簡介

netstat用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各端口的網絡連接情況。

2、netstat命令

netstat [-vWeenNcCF] [<Af>] -r         
netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]

-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,--statistics:顯示網絡工作信息統計表。
-t,--tcp:顯示TCP傳輸協議的連線狀況。
-u,--udp:顯示UDP傳輸協議的連線狀況。
-v,--verbose:查看不支持的地址族。
-V,--version:顯示版本信息。
-w,--raw:顯示RAW傳輸協議的連線狀況。
-x,--unix:此參數的效果和指定"-A unix"參數相同。
--ip,--inet:此參數的效果和指定"-A inet"參數相同。






















3、netstat常用命令

netstat -a
列出所有端口
netstat -at
列出所有TCP端口
netstat -au
列出所有UDP端口
netstat -l
只顯示監聽端口
netstat -lt
只列出所有監聽TCP端口
netstat -lu
只列出所有監聽UDP端口
netstat -lx
只列出所有監聽UNIX端口
netstat -s
顯示所有端口的統計信息
netstat -st
顯示TCP端口的統計信息
netstat -su
顯示UDP端口的統計信息
netstat -pt
輸出PID和進程名稱
netstat -r
顯示核心路由信息
netstat -ap | grep ssh
查找程序運行的端口
netstat -an | grep ':80'
查找運行在指定端口的進程
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
查看連接某服務端口最多的的IP地址
netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}'
TCP各種狀態列表
netstat -anpo | grep "php-cgi" | wc -l
查看phpcgi進程數,如果接近預設值,說明不夠用,需要增加
netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
查看連接某服務端口最多的的IP地址
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
Linux性能優化(七)——網絡流量監控工具
SYN_SENT:客戶端發送一個SYN以請求建立一個連接後狀態置爲SYN_SENT。 SYN_RECV:服務端發出ACK確認客戶端的SYN,同時自己向客戶端發送一個SYN,狀態置爲SYN_RECV。
ESTABLISHED:代表一個打開的連接,雙方可以進行或已經在數據交互。
FIN_WAIT1:主動關閉端應用程序調用close,發出FIN請求主動關閉連接,進入FIN_WAIT1狀態。
CLOSE_WAIT:被動關閉端TCP接到FIN後,就發出ACK以迴應FIN請求,進入CLOSE_WAIT狀態。
FIN_WAIT2:主動關閉端接到ACK後,就進入FIN-WAIT-2狀態。LAST_ACK:被動關閉端一段時間後,接收到文件結束符的應用程序將調用CLOSE關閉連接,發送一個FIN,等待收到對方ACK後狀態爲LAST-ACK。
TIME_WAIT:在主動關閉端接收到FIN後,TCP 就發送ACK包,並進入TIME-WAIT狀態。
CLOSING:等待遠程TCP對連接中斷的確認
CLOSED:被動關閉端在接受到ACK包後,進入CLOSED狀態,連接結束。
UNKNOWN:未知的Socket狀態。













































三、tcpdump

1、tcpdump簡介

tcpdump是用於抓取和分析經過系統的流量數據包的命令行工具,通常被用作網絡故障分析工具以及安全工具。

2、tcpdump命令

tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ] [ -Q|-P in|out|inout ] [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ] [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
[ -Z user ] [ expression ]

-a:將網絡和廣播地址轉換成名稱。
-c count:抓取數據包數目
-e:顯示連接層級的文件頭
-f:用數字顯示網絡地址。
-F 表達文件:指定內含表達方式的文件。
-i interface:指定抓取數據包的網卡設備
-l:使用標準輸出列的緩衝區。
-n:不把主機的網絡地址轉換成名字。
-N:不列出域名。
-O:不將數據包編碼最佳化
-q:快速輸出模式,僅列出少數傳輸協議信息
-r數據包文件:從指定文件讀取數據包數據。
-s 數據包大小:設置每個數據包的大小。
-S:用絕對而非相對數值列出TCP關聯數。
-t:不顯示時間戳
-tt:顯示未經格式化的時間戳
-T 數據包類型:強制將表達方式所指定的數據包轉譯成設置的數據包類型。
-v:詳細顯示指令執行過程。
-vv:更詳細顯示指令執行過程。
-x:用十六進制字碼列出數據包資料。
-w數據包文件: 把數據包數據寫入指定的文件。



















tcpdump  -enfN -r test.cap
tcpdump -r test.cap

3、tcpdump常用命令

tcpdump -i wlp3s0 tcp port 80
抓取wlp3s0網卡的TCP協議80端口的數據包
tcpdump -i wlp3s0 dst host 192.168.0.104
抓取wlp3s0網卡的目的主機爲192.168.0.104的數據包。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章