常见的网络状态检测及分析工具
目錄
netcat(nc)
網絡狀態檢測工具
ifconfig和ip
netstat和ss
網絡抓包工具
tcpdump
Wireshark
其他常用工具
sar
nslookup
dstat
netcat(nc)
簡稱nc,被稱為“瑞士軍刀”,使用nc-h查看幫助文檔。
ncat許多參數與nc相同,區別則是nc是明文傳輸,缺乏身份驗證,而ncat彌補了這些缺點。
主要作用:
1、telnet遠程登錄
2、端口掃描
3、傳輸文本信息
4、傳輸文件和目錄
5、加密傳輸文件
網絡狀態檢測工具
ifconfig和ip
Ifconfig和ip用來查看網絡配置:
二者輸出指標基本相同,只是顯示格式有所區別,ip有著更豐富的功能和更易用的接口。
輸出內容有:網絡接口的狀態標志、MTU大小、IP、子網、MAC地址以及網絡包收發的統計信息。
其中有幾個跟網絡性能密切相關的指標需要關注:
(1)網絡接口的狀態標志:ifconfig輸出中的RUNNING或者ip輸出中的LOWER_UP,表示物理網絡是連通的,如果看不到它們,通常可能是網線被拔掉了;
(2)網絡收發的字節數、包數、錯誤數以及丟包情況,特別是 TX和RX部分的errors、dropped、overruns等指標,如果不為0,通常表示出現了網絡I/O問題。
netstat和ss
二者用來查看套接字、網絡接口以及路由表的信息,ss與netstat的輸出也比較類似,但是ss性能要更好。
netstat語法格式為netstat [選項]。
輸出內容有:套接字狀態、接收隊列、發送隊列、本地地址、遠端地址、進程PID和進程名稱等。
其中需要特別關注的是接收隊列(Recv-Q)和發送隊列(Send-Q),二者值通常應該是0,如果非0,說明有網絡包的堆積發生,但在不同的套接字狀態下,它們的含義不同。
netstat常用的選項有:
| -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"參數相同 |
netstat主要用法有:
(1)查看端口服務:netstat -antp | grep 22
其中-a參數表示顯示所有端口;-n表示直接使用ip地址,不通過域名服務器;-t參數表示顯示TCP傳輸協議的端口;-p表示顯示正在使用socket的程序識別碼和程序名稱;
(2)找出程序運行的端口
(3)顯示網絡統計
(4)顯示路由信息
網絡抓包工具
tcpdump和Wireshark是常用的網絡抓包和分析工具,其中tcpdump僅支持命令行格式,Wireshark除了可以抓包外,提供了圖形界面和匯總分析工具,在分析復雜的網絡情景時,比較適用。在實際分析網絡性能時,先用tcpdump抓包,再用Wireshark分析,也是一種常用的方法。
tcpdump
語法格式:
tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ][ -s snaplen ] [ -w file ] [ expression ]
常用的選項和過濾表達式:
Wireshark
可以將tcpdump抓取到的網絡包保存到一個文件中,用Wireshark打開。
$ tcpdump -nn host 93.184.216.34 -w web.pcap
打開界面如下:
Wireshark展示格式更加規整和清楚,還可以查看網絡包在協議棧各層的詳細信息:
在菜單欄中點擊 Statistics -> Flow Graph,然后,在彈出的界面中的 Flow type 選擇 TCP Flows,可以更清晰的看到,整個過程中 TCP 流的執行過程:
這跟曾經學到的三次握手和四次揮手是類似的,但圖中之所有只有三次揮手,是因為服務端把ACK和FIN合并一起發送了。
其他常用工具
sar
sar(System ActivityReporter系統活動情況報告)是目前Linux上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。
nslookup
nslookup用于查詢DNS的記錄,查詢域名解析是否正常,在網絡故障時用來診斷網絡問題。
dstat
dstat是一個可以替換vmstat、iostat、netstat、ifstat這些命令的工具,是一個全能系統信息統計工具。
使用dstat會顯示CPU、磁盤I/O、網絡和內存四種資源的整體使用情況和中斷次數和上下文中斷次數兩個關鍵系統指標,以網絡資源為例,dstat還能輸出一些關于網絡的關鍵指標:
$ dstat –tcp
------tcp-sockets-------
lis act syn tim clo
27 38 0 0 0
27 38 0 0 0
這些指標的含義為:
(1)Lis : 表示處于監聽(Listen)狀態的連接數;
(2)Act:表示處于連接(ESTABLISHED)狀態的連接數;
(3)Syn:處于三次握手階段的連接數,如果該指標過大,往往意味著這瞬間有大量的TCP新建連接請求;
(4)Tim:處于TIME-WAIT狀態的連接數;
(5)Clo:處于CLOSE-WAIT狀態的連接數,這一項如果過多,往往意味著應用程序存在bug,沒有主動去調用close()去關閉這些連接。
總結
以上是生活随笔為你收集整理的常见的网络状态检测及分析工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络连通性测试
- 下一篇: 网络测试一般使用这四个命令就可以了