一、抓包
拿到一個網絡包時,我們總是希望它是盡可能小的。操作一個大包相當費時,有時甚至會死機。如果讓初學者分析1GB以上的包,估計會被打擊得信心全無。所以抓包時應該盡量只抓必要的部分。
1.只抓包頭。一般能抓到的每個包的最大長度為1514字節,啟用了Jumbo Frame(巨型幀)之后可達9000字節以上,而大多數時候我們只需要IP頭或者TCP頭就足夠分析了。在Wireshark上可以這樣抓到包頭:單擊菜單欄上的Capture-->Options,然后在彈出的窗口上定義“Limit each packet to”的值。我一般設個偏大的數字:80字節,也就是說每個包只抓前80字節。這樣TCP層、網絡層和數據鏈路層的信息都可以包括在內(見圖1)。
圖1
如果問題涉及應用層,就應該再加上應用層協議頭的長度。如果你像我一樣經常忘記不同協議頭的長度,可以輸入一個大點的值。即便設成200字節,也比1514字節小多了。
以上是使用Wireshark抓包時的建議。用tcpdump命令抓包時可以用“-s”參數達到相同效果。比如以下命令只抓eth0上每個包的前80字節,并把結果存到/tmp/tcpdump.cap文件中。[root@server_1 /]# tcpdump -i eth0 -s 80 -w /tmp/tcpdump.cap
2.只抓必要的包。服務器上的網絡連接可能非常多,而我們只需要其中的一小部分。Wireshark的Capture Filter可以在抓包時過濾掉不需要的包。比如在成百上千的網絡連接中,我們只對IP為10.1.1.1的包感興趣,那就可以在Wireshark上這樣設置:單擊菜單欄上的Capture-->Options,然后在Capture Filter中輸入“host 10.1.1.1”(見圖2)。
圖2
二、個性化設置
Wireshark的默認設置堪稱友好,每個人的愛好各不相同,根據自己的喜好自己進行設置即可
1.我經常需要參照服務器上的日志時間,找到發生問題時的網絡包。所以就把Wireshark的時間調成與服務器一樣的格式。單擊Wireshark的View-->Time Display Format-->Date and Time of Day,就可以實現此設置(見圖3)。
圖3
圖3
2.不同類型的網絡包可以自定義顏色,比如網絡管理員可能會把TCP/UDP等協議相關的網絡包設成最顯眼的顏色。而文件服務器的管理員則更關心FTP、SMB和NFS協議的顏色。我們可以通過View -->Coloring Rules來設置顏色。如果同事已經有一套非常適合你工作內容的配色方案,可以請他從Coloring Rules窗口導出,然后導入到你的Wireshark里(見圖4)。記得下次和他吃飯時主動買單,要知道配一套養眼的顏色可要花不少時間。
圖4
3.更多的設置可以在Edit-->Preferences窗口中完成。這個窗口的設置精度可以達到一些協議的細節。比如在此窗口單擊Protocols-->TCP就可以看到多個TCP相關選項,將鼠標停在每一項上都會有詳細介紹。(圖5)
圖5
4.如果你在其他時區的服務器上抓包,然后下載到自己的電腦上分析,最好把自己電腦的時區設成跟抓包的服務器一樣。這樣,Wireshark顯示的時間才能匹配服務器上日志的時間。比如說,服務器的日志顯示2/13/2014 13:01:32有一個錯誤信息。那我們要在自己電腦上調整時區之后,才能到Wireshark上檢查2/13/2014 13:01:32左右的包,否則就得先換算時間。
三、讓wireshark自動分析
有些類型的問題,我們根本不需要研究包里的細節,直接交給Wireshark分析就行了。
1.單擊Wireshark的Analyze-->Expert Info Composite,就可以在不同標簽下看到不同級別的提示信息。比如重傳的統計、連接的建立和重置統計,等等。在分析網絡性能和連接問題時,我們經常需要借助這個功能。圖6是TCP包的重傳統計。
圖6
2.單擊Statistics-->TCP Stream Graph,可以生成幾類統計圖。比如我曾經用Time-Sequence Graph (Stevens)生成了圖7。
圖7
結語
以上就是關于wireshark在使用中的一些技巧,歡迎收藏!