2021-05-12 14:32:11
使用wireshark分析tcpdump出來的pcap檔案
工作中的常用用法
一、tcpdump常用用法:
1,-i 指定網口 -vnn 常用選項,顯示詳細資訊並且不解析IP,埠 ;
抓取某個網口上發往或來自某個IP的報文
tcpdump -i ethX host 192.168.1.100 -vnn
2,可以用or 或者and 連線多個過濾條件,port前的tcp表示tcp協定,也可為udp;
抓取某個網口上發往或來自某個IP、並且指定埠的報文
tcpdump -i ethX host 192.168.1.100 and tcp port 22(埠號) -vnn
3, -c 指定抓取報文的數量, 用 -w 把抓取的封包寫入檔案;
抓取某網口50個包並寫入dump.cap(為什麼是 .cap?因為wireshark識別此擴充套件名)檔案:
tcpdump -i ethX -c 50 -w /root/dump.cap
4,可以用關鍵字 src 或者 dst 表示 源 或者 目的;
抓取源埠號為22(tcp協定)的報文
tcpdump -i ethX tcp src port 22(埠號) -vnn
以上為常用用法,可以根據實際情況靈活組合。
二、wireshark分析報文:
1,淡紫色封包為正常封包,包括封包和ACK包
2,黑色為異常包,包括丟包ACK、重傳等
2.1 Packet Size limited during capture
這個標誌說明封包並沒被完全抓到,而只是抓到了一部分。這種情況多數是由於抓包方式引起,在某些系統中tcpdump只抓每個幀的前96個位元組。我們可以”-s”引數來指定想要的位元組數。
2.2 TCP previous segment not captured
TCP傳輸過程中同一台主機發出的資料應該是連續的,即後一個封包的Sequence應該等一前一個封包的sequence+len,如果後面捕捉到的封包不符合這樣的規律,即sequence比前一個包的sequence+len大的話,我們就可以認定中間的封包就沒有抓到,導致這個封包沒有按時到達的原因可能有亂序或者丟包導致。
2.3 TCP ACKed unseen segment
當WireShark發現被ACK的那個包沒被抓到,就會提示[TCP ACKed unseen segment],這種提示一般沒有什麼問題,就是WireShark漏抓了。
2.4 TCP Dup ACK
當出現亂序或者丟包等情況的時候,本來應該收到的封包沒有收到,反而收到了一些Sequence號比較大的封包,這時候用戶端就會回復一個ACK,ACK本應該收到卻沒有收到的包,如果後面來的還不是所期望的封包,那麼用戶端每收到一個其他封包就會回復一個ACK,由於這些ACK是重複的,所以就會提示[TCP Dup ACK]。
2.5 TCP Out-of-Order
TCP傳輸過程中封包的Sequence號應該是持續遞增的,也就是說每個封包之間應該只差一個Len的資料,但是在傳輸過程中如果Sequence比較大的封包比Sequence比較小的封包先到達的話,就會觸發[TCP Previous Segment not cpatured],然後如果在後續收到了“遲到”的封包,就會被標記[TCP Out-of-order]。
2.6 TCP Fast Retransmission
當伺服器收到3個或以上的[TCP Dup ACK]後就會判定所ACK的包丟失了,哪怕還沒有超過定時器的規定,都會立即重新傳送,用戶端收到後會標記為[TCP fast retransmission]。
2.7 TCP Retransmission
一般來說一個封包丟失後又沒有足夠的後續封包來觸發[TCP Fast Retransmission]的話,超過定時器的時限後就會觸發超時重傳,這時候用戶端收到的封包就會被標記[TCP Retransmission]。
2.8 TCP Zerowindow
在TCP封包中,Info那一欄的中的”win=XX”中XX代表了接收視窗的大小,代表了這個資訊的源地址的主機還有多少資料可以接收,或者說快取區還有多少空間。當win=0的時候就會給相應ACK打上[TCP Zerowindow]的標誌,告訴傳送方我沒有資料可以接收了。
2.9 TCP window full
當出現這個標誌的時候證明傳送方已傳送的但還沒有確認的封包已經達到了接收方接收視窗的上限,也就是說這個時候傳送方就會停止傳送資料,而不是等接收方回復[TCP Zerowindow]後才停止傳送。所以[TCP window full]針對的是傳送方沒法傳送資料,而[TCP Zerowindow]指的是接收方沒法接收資料,不管出現哪一種情況,都會中斷資料的傳輸,直到快取區有新的空間存放資料。
3,封包的標籤從左到右依次為:
封包編號---時間---源地址---目標地址---協定型別---長度---總長度---封包序號---下一個封包序號---ACK號---身份識別碼---RTT---一些視窗引數
4,再點選一個報文後,我們在WireShark的下端可以看到更為詳細的資訊:
分別對應OSI七層模型的,資料鏈路層、網路層、傳輸層、應用層
相關文章