tcpdump使用總結

2021-06-20 08:50:41 字數 3830 閱讀 9455

原文

tcpdump是linux下自帶的網路分析工具。可以將網路中傳送的資料報完全截獲下來提供分析。它支援針對網路層、協議、主機、網路或埠的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的資訊。

tcpdump

主要選項

型別host, net, port

方向src, dst, src or   dst, src and dst

協議ip, tcp, udp,   arp, rarp, ether, fddi

邏輯and, or, not 或者 &&, ||, !

選項-i指定網絡卡, -n顯示ip, -a文字顯示

-c抓包數, -x/-xx/-x/-xx二進位制顯示, -r讀, -w寫

型別

host指定主機或目的位址。

net制定網路位址。net可以用來指定子網。

port指定監聽埠。

如果要制定多種型別,用邏輯運算符號連線。

tcpdump net 192.168.1。監聽子網192.168.1.0

tcpdump net 192.168.1.0/24

tcpdump host 192.168.1.124 and port 80。監聽指定主機的80埠。

方向

src指定源位址,dst指定目的位址。

監聽來自192.168.1.10 或 192.168.1.11的80埠:

tcpdump port 80 and \(src 192.168.1.10 or src 192.168.1.11\)

協議

用來捕獲特定協議的資料報有:ether(ethernet), tcp, udp, icmp, ip, ip6(ipv6), arp, rarp(reverse arp)等。

邏輯

tcpdump port 80 and \(host 192.168.1.10 or host 192.168.1.11\)。監聽主機192.168.1.10 或 192.168.1.11的80埠。

使用()

一定要用

\轉義。

獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通訊的ip包:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

選項

-i:指定網絡卡。

-n:顯示ip,而不是主機名。

-c:指定抓多少個包後退出。

-a:以ascii方式顯示包內容,這個選項對文字格式的協議包非常有用。

-s:指定抓包顯示一行的寬度,-s0表示顯示完整的包,經常和-a一起用。

-x/-xx/-x/-xx:以十六進製制顯示包內容,幾個選項只有細微的差別,詳見man手冊。

-vv:詳細資訊。

-r:從檔案中讀取。

-w:匯出到指定檔案。

監聽來自172.25.38.145到埠7012的資料,並到處到指定檔案:

tcpdump tcp dst port 7012 and src host 172.25.38.145 -vv ?w output.dat

從指定檔案載入監聽資料:

tcpdump -r output.dat

監聽網絡卡eth1埠7012的資料:

tcpdump tcp port 7012 -ieth1 ?n

tcpdump

解析tcp

連線建立和釋放

下面命令抓包:

# tcpdump tcp port 7012 and host 172.25.34.88 -ieth1 -n

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth1, link-type en10mb (ethernet), capture size 96 bytes

1.14:44:52.174122 ip 172.25.38.145.49563 > 172.25.34.88.7012: s 1986599379:1986599379(0) win 5840

2.14:44:52.174249 ip 172.25.34.88.7012 > 172.25.38.145.49563: s 4294961892:4294961892(0) ack 1986599380 win 5792

3.14:44:52.174228 ip 172.25.38.145.49563 > 172.25.34.88.7012:.ack 1 win 1460

4.14:44:52.174433 ip 172.25.38.145.49563 > 172.25.34.88.7012: p 1:109(108) ack 1 win 1460

5.14:44:52.174443 ip 172.25.34.88.7012 > 172.25.38.145.49563: .

ack 109 win 1448

6.14:44:52.186891 ip 172.25.34.88.7012 > 172.25.38.145.49563: p 1:857(856) ack 109 win 1448

7.14:44:52.186914 ip 172.25.34.88.7012 > 172.25.38.145.49563: f 857:857(0) ack 109 win 1448

8.14:44:52.187054 ip 172.25.38.145.49563 > 172.25.34.88.7012: .

ack 857 win 1888

9.14:44:52.195347 ip 172.25.38.145.49563 > 172.25.34.88.7012: f 109:109(0) ack 858 win 1888

10.14:44:52.195355 ip 172.25.34.88.7012 > 172.25.38.145.49563: .

ack 110 win 1448

每一行中間都有這個包所攜帶的標誌:

s=syn,發起連線標誌。

p=push,傳送資料標誌。

f=fin,關閉連線標誌。

ack表示確認包。

rst=reset,異常關閉連線。

. 表示沒有任何標誌。

上面抓包的過程解析:

第1行:14:44:52這個時間,從172.25.38.145(client)的臨時埠49563向172.25.34.88(server)的7012監聽埠發起連線,client初始包序號為1986599379,滑動視窗大小為5840位元組(滑動視窗即tcp接收緩衝區的大小,用於tcp擁塞控制),mss大小為1460(即可接收的最大包長度,通常為mtu減40位元組,ip頭和tcp頭各20位元組)。

第2行:server響應連線,同時帶上第乙個包的ack資訊,為client端的初始包序號加1,即

1986599380,即server端下次等待接受這個包序號的包,用於tcp位元組流的順序控制。server端的初始包序號為

4294961892,mss也是1460。

第3行:client再次確認,tcp連線三次握手完成。

第4行:client發請求包,包長度108位元組。

第5行:server響應ack。

第6行:server回包,包長度856位元組。

第7行:client響應ack。

第8行:client發起關閉連線請求。

第9行:server響應ack,並且也傳送fin標誌關閉。

第10行:客戶端響應ack,關閉連線的四次握手完成。

tcpdump使用總結

tcpdump是linux下自帶的網路分析工具。可以將網路中傳送的資料報完全截獲下來提供分析。它支援針對網路層 協議 主機 網路或埠的過濾,並提供and or not等邏輯語句來幫助你去掉無用的資訊。tcpdump主要選項 型別host,net,port 方向src,dst,src or dst,s...

tcpdump使用詳解

tcpdump採用命令列方式,它的命令格式為 tcpdump adeflnnopqstvx c 數量 f 檔名 i 網路介面 r 檔名 s snaplen t 型別 w 檔名 表示式 1.tcpdump的選項介紹 a 將網路位址和廣播位址轉變成名字 d 將匹配資訊包的 以人們能夠理解的彙編格式給出 ...

tcpdump 日常使用

使用 i引數指定tcpdump監聽的網路介面,這在計算機具有多個網路介面時非常有用,使用 c引數指定要監聽的資料報數量,使用 w引數指定將監聽到的資料報寫入檔案中儲存 a想要截獲所有210.27.48.1 的主機收到的和發出的所有的資料報 tcpdump host 210.27.48.1 b想要截獲...