基本概念
wireshark是個開源的好用軟件,用來分析數據包。
數據包:通常就是四層信息
物理層數據幀,數據鏈路層以太幀頭部。網絡層IP包頭部。傳輸層TCP包頭部。最后就是應用層信息。
基礎功能使用
打開軟件界面。就不介紹了不懂的自己打開看一下吧!
過濾器按照命令填寫,基礎的篩選與追蹤流這種最常用的功能就不說了。
主要想說一下如果不記得篩選的命令怎么填了,可以點擊對應的指標,選擇作為過濾器應用。
還有時候默認的列,不滿足我們需要排查問題需要,可以選擇應用為列。
比如我們看到TCP流的情況判斷是亂序還是丟包了。開啟IP層的ID應用為列。就可以清晰的判斷問題。
簡單的過濾條件and與or使用。&&與||。條件記得括號更標準好看。現在直接使用and與or也是可以的了。
常用的排錯過濾條件
tcp.analysis.lost_segment:表明已經在抓包中看到不連續的序列號。報文丟失會造成重復的ACK,這會導致重傳。
tcp.analysis.duplicate_ack:顯示被確認過不止一次的報文。大量的重復ACK是TCP端點之間高延時的跡象。
tcp.analysis.retransmission:顯示抓包中的所有重傳。如果重傳次數不多的話還是正常的,過多重傳可能有問題。這通常意味著應用性能緩慢和/或用戶報文丟失。
tcp.analysis.window_update:將傳輸過程中的TCP window大小圖形化。如果看到窗口大小下降為零,這意味著發送方已經退出了,并等待接收方確認所有已傳送數據。這可能表明接收端已經不堪重負了。
tcp.analysis.bytes_in_flight:某一時間點網絡上未確認字節數。未確認字節數不能超過你的TCP窗口大小,為了最大化吞吐量你想要獲得盡可能接近TCP窗口大小。如果看到連續低于TCP窗口大小,可能意味著報文丟失或路徑上其他影響吞吐量的問題。
tcp.analysis.ack_rtt:衡量抓取的TCP報文與相應的ACK。如果這一時間間隔比較長那可能表示某種類型的網絡延時(報文丟失,擁塞,等等)。
ps:這段直接復制的 嘻嘻
字節流搜索
我在工作中常用的功能。因為XXXXXXX的原因。我會使用解碼的關聯信息來搜索,如果只有一份,就說明鏡像過來的流量有丟包。巴拉巴拉hhh,如果有需要搜索的明文字符串也可以直接搜索。
去重與合并數據包
在wirkshark的安裝目錄下有許多exe文件。
editcap.exe,數據包去重命令為 editcap -d input.pcap output.pcap。(我之前就遇到了鏡像之后tap過來的流量同一個ipid有四份,后面查看有兩個兩對mac流量,篩選一對mac的,之后使用該命令去重,獲得一份正常的流量)
mergecap.exe,數據包合并命令為 mergecap -w out.pcap intput1.pcap input2.pcap inputN.pcap。
editcap.exe的數據包截取就算了吧。直接gui界面就可以文件——導出特定分組——range選填。
篩選再篩選
如果我們抓到的數據包很大很大,但是我們僅僅需要部分ip到ip的分析。可以先使用過濾條件之后界面上——文件——導出特定分組——Displayed的。之后再打開那個pcap查看分析。
其他小功能介紹
分析——專家信息(看看就好)
統計——流量圖(這個可以看起來比較直觀)也支持過濾條件
編輯——首選項——Protocols——對于部分協議進行個性化配置
編輯——首選項——RSA密鑰可以添加之后解密HTTPS信息
常見異常分析說明
Packet size limited during capture:標記了的包沒抓全
TCP Previous segment not captured:Wireshark 發現后一個包的 Seq 大于 Seq+Len,就知道中間缺失了一段。
TCP ACKed unseen segment:發現被 Ack 的那個包沒被抓到,就會提示。
TCP Out-of-Order:后一個包的 Seq 號小于前一個包的 Seq+Len 時。
TCP Dup ACK:當亂序或丟包發生時,接收方會收到一些 Seq 號比期望值大的包。沒收到一個這種包就會 Ack 一次期望的 Seq 值,提現發送方。
TCP Fast Retransmission:三次DUP ACK之后出發快速重傳。
TCP Retransmission:發送方只好等到超時了再重傳。
TCP zerowindow:0窗口懂得都懂!沒法再收。
TCP window Full:窗口耗盡。沒法再發!
Time-to-live exceeded:分片無法正常組裝
小想法
除非是客戶端上或者服務器上抓出來的包,不然真的可能很多是鏡像源的問題。如果你的流量是鏡像源過來的,真的不要100%信任它。