網絡監聽分析工具 tcpdump

網絡監聽分析工具       tcpdump       sniffit

     

網絡監聽分析的工具有很多種,這裏只簡單介紹兩種比較常用的工具.

1) tcpdump

tcpdump:監聽流經一個本機網絡接口上的數據,功能非常強勁

使用方法:

tcpdump [options]  [expression]

             options部分命令行選項:

命令

說明

-c num

接受到指定num個符合條件的包就退出

-n

Ip信息用數字顯示                                                 

-x

以十六進制方式顯示包內容                                      

-X

同時以十六進制、ascii方式顯示包內容                                      

-i dev

指定要監聽的網絡接口   (例如  -i eth0)

注意::

     在同一臺機器上進行測試時,最好加上參數:

        -iany

     這樣可以接收任何網卡的信息。

-w

把監聽的信息寫入文件中

-r

從用w選項創建的文件中讀取保存的監聽信息

-s(數據包大小)

設置每個數據包的大小   -s2400

表示每個數據包的大小是2400

 -n  

顯示IP信息,而不是主機名

 -A  

將數據包以ascii方式顯示出來

 -d  

把編譯過的數據包編碼轉換成可閱讀的格式,並傾倒到標準輸出。

-dd    

把編譯過的數據包編碼轉換成C語言的格式,並傾倒到標準輸出。

 

           expression 監聽網絡報的條件表達式,只有符合此條件的數據包纔會顯示

        條件表達式有一個或多個條件組成

條件類型

常用條件標誌

協議條件

ip, ip6, arp, rarp, tcp ,udp.

源/目的條件

src dst

具體條件

host,net,port

其中多個條件可以由關係運算符組合在一起 

關係類型

關係運算符

! 或 not

&& 或 and

|| 或 or

使用實例:

a) 顯示所有主機192.168.1.3發送出和接收的數據包

  tcpdump host 192.168.1.3

 

b) 顯示主機 A 與主機(B 或 C)之間的交互IP數據包

  tcpdump ip and host A and (B or C)

 

c) 本機地址192.168.1.3 ,顯示從主機192.168.5.1網絡192.168.1本地53端口udp數據包,但不顯示本機發送到本地53端口的數據包,

同時顯示十六進制和ASCII方式的數據包內容

tcpdump  -X 'udp and dst host 192.168.1.3 and dst port 53 and (src host 192.168.5.1 or src net 192.168.1) and src not 

localhost'

命令參數說明:

udp數據包             :udp

目的地址192.168.1.3   :dst host 192.168.1.3

目的端口 53           :dst port 53

源主機地址192.168.5.1 :src host 192.168.5.1

源網絡地址192.168.1   :src net 192.168.1

非本機發送的包        : src not localhost

 

 

tcpdump解析tcp連接建立和釋放
下面命令抓包:
# tcpdump -n -ieth1 'tcp and dst host 172.25.34.88 and port 7012'
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 <mss1460,sackOK,timestamp 3824018401 0,nop,wscale 2>
2.          14:44:52.174249 IP 172.25.34.88.7012 > 172.25.38.145.49563: S 4294961892:4294961892(0) ack 1986599380 win 5792 <mss1460,sackOK,timestamp 1927787323 3824018401,nop,wscale 2>
3.          14:44:52.174228 IP 172.25.38.145.49563 > 172.25.34.88.7012: . ack 1 win 1460 <nop,nop,timestamp 3824018401 1927787323>
4.          14:44:52.174433 IP 172.25.38.145.49563 > 172.25.34.88.7012: P 1:109(108) ack 1 win 1460 <nop,nop,timestamp 3824018401 1927787323>
5.          14:44:52.174443 IP 172.25.34.88.7012 > 172.25.38.145.49563: . ack 109 win 1448 <nop,nop,timestamp 1927787323 3824018401>
6.          14:44:52.186891 IP 172.25.34.88.7012 > 172.25.38.145.49563: P 1:857(856) ack 109 win 1448 <nop,nop,timestamp 1927787326 3824018401>
7.          14:44:52.186914 IP 172.25.34.88.7012 > 172.25.38.145.49563: F 857:857(0) ack 109 win 1448 <nop,nop,timestamp 1927787326 3824018401>
8.          14:44:52.187054 IP 172.25.38.145.49563 > 172.25.34.88.7012: . ack 857 win 1888 <nop,nop,timestamp 3824018404 1927787326>
9.          14:44:52.195347 IP 172.25.38.145.49563 > 172.25.34.88.7012: F 109:109(0) ack 858 win 1888 <nop,nop,timestamp 3824018406 1927787326>
10.       14:44:52.195355 IP 172.25.34.88.7012 > 172.25.38.145.49563: . ack 110 win 1448 <nop,nop,timestamp 1927787328 3824018406>
 
每一行中間都有這個包所攜帶的標誌:
S=SYN,     發起連接標誌。
P=PUSH,    傳送數據標誌
F=FIN,     關閉連接標誌
ack         表示確認包
RST=RESET, 異常關閉連接
.           表示沒有任何標誌
()          括號中的數字是包的長度,建立連接和關閉連接時,包長都爲0,括號前面的都是序列號
上面抓包的過程解析:
 
1行:14:44:52這個時間,從172.25.38.145client)的臨時端口49563172.25.34.88server)的7012監聽端口發起連接,
                         client初始包序號1986599379
                               win 滑動窗口大小爲5840字節滑動窗口tcp接收緩衝區的大小,用於tcp擁塞控制),
                               mss 大小爲1460(即可接收的最大包長度,通常爲MTU減40字節,IP頭和TCP頭各20字節)。
 
2行:                  server響應連接,同時帶上第一個包的ack信息,爲client端的初始包序號加1,即1986599380
                                         也即server端下次等待接受這個包序號的包,用於tcp字節流的順序控制
                         server端的初始包序號4294961892mss也是1460
3行:client再次確認,tcp連接三次握手完成。
 
4行:client發請求包,包長度108字節。
5行:server響應ack
6行:server回包,包長度856字節。
7行:client響應ack。(這裏應該是有問題的,但應該是這樣)
 
8行:client發起關閉連接請求。
9行:server響應ack,並且也發送FIN標誌關閉。
10行:客戶端響應ack,關閉連接的四次握手完成。

軟件已上傳至資料下載區,需要的話,可以下載

發佈了17 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章