tcpdump常用用法+wireshark分析cap包

工作中的常用用法
一、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七層模型的,數據鏈路層、網絡層、傳輸層、應用層

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