[tcp] 快速掌握tcpdump抓包

一說到抓包,好像有點高深莫測,其實在工做中,大部分是應用發生異常時須要抓包,以此來分析緣由,Linux下通常用tcpdump命令抓包,而使用tcpdump其實經常使用的參數也就那麼幾個網絡

抓包主要是看數據傳輸是否都走了正確的TCP協議,好比由於網絡或者攻擊致使某些包(SYN TIME_WAIT)等特別多,這個時候抓包就很容看出來ssh

所以抓包沒必要記太多參數,只要能過濾到咱們想要的包便可tcp

tcpdump命令經常使用參數

-i 指定網絡接口,例如eth0、lo、pp0等等的界面看一段直接用tcpdump命令抓包的文檔
-S 將tcp的序列號以絕對值形式輸出,默認相對值
-nn 不進行端口名稱的轉換,默認轉換,好比22端口會顯示ssh
-w 存儲抓到的包,通常.cap格式
-v 輸出更詳細的報文信息,能夠多個v一塊兒使用,如-vvvv
or|and|nor 與或非,如下參數如多個使用,則須要用到
host 指定過濾的ip,好比10.0.0.1,那麼只抓與該ip相關的包
port 指定過濾的端口
src host 指定過濾的源ip
dst host 指定過濾的目的ip
src port 指定過濾的源端口
dst port 指定過濾的目的端口

tcpdump抓包實例

tcpdump -S -nn port 443 and host 10.88.77.15
tcpdump -S -nn port 443 and host 10.88.77.15 -w /tmp/dump.wapspa

如抓取過濾有host爲10.25.137.230和端口443
tcpdump -S -nn host 10.25.137.230 and port 443code

clipboard.png

15:39:07.427683 IP 10.25.137.230.20260 > 10.29.64.142.443: Flags [P.], seq 1026816011:1026816267, ack 1193238686, win 115, length 256
以此行爲例
  • 15:39:07.427683 網絡包發生的時間

IP 10.25.137.230.20260 > 10.29.64.142.443:接口

  • IP標識
  • 源ip或者源主機名和端口20260;
  • >流向符,數據包從左邊發往右邊
  • 目的ip或者目的主機名和端口443

Flags [P.] Flags的標記,此處爲[P.],表明PST和ACK(.表明ACK確認)ip

seq 1026816011:1026816267, ack 1193238686, win 115, length 256文檔

  • seq爲序列號
  • ack爲確認碼
  • win爲滑動窗口大小
  • length爲承載的數據(payload)長度length,若是沒有數據則爲0

tcpdump抓包的FLags標記

tcpdump的Flags表明了這個數據包的用途,這些標記是TCP首部的內容同步

[S]:SYN同步標識
[.]: .表示ACK確認標識
[S.]:SYN同步標識,以及確認[S]的ACK
[P.]:PSH,push推送,數據傳輸
[R.]:RST,鏈接重置
[F.]:FIN結束鏈接
[DF]:Don't Fragment(不要碎裂),當DF=0時,表示容許分片,通常 -v時纔有這個標識 [FP.]:標記FIN、PUSH、ACK組合,這樣作是爲了提高網絡效率,減小數據來回確認等
相關文章
相關標籤/搜索