TCPDUMP簡介
在傳統的網路分析和測試技術中,嗅探器(sniffer)是最常見,也是最重要的技術之一。sniffer工具首先是為網路系統管理員和網路程式員進行網路分析而設計的。對於網路管理員來說,使用嗅探器可以隨時掌握網路的實際情況,在網路效能急劇下降的時候,可以通過sniffer工具來分析原因,找出造成網路阻塞的來源。對於網路程式員來說,通過sniffer工具來偵錯工具。
用過windows平台上的sniffer工具(例如,netxray和sniffer pro軟體)的朋友可能都知道,在共用式的區域網路中,採用sniffer工具簡直可以對網路中的所有流量一覽無餘!Sniffer工具實際上就是一個網路上的抓包工具,同時還可以對抓到的包進行分析。由於在共用式的網路中,資訊包是會廣播到網路中所有主機的網路介面,只不過在沒有使用sniffer工具之前,主機的網路裝置會判斷該資訊包是否應該接收,這樣它就會拋棄不應該接收的資訊包,sniffer工具卻使主機的網路裝置接收所有到達的資訊包,這樣就達到了網路監聽的效果。
Linux作為網路伺服器,特別是作為路由器和網關時,資料的採集和分析是必不可少的。所以,今天我們就來看看Linux中強大的網路資料擷取分析工具——TcpDump。
用簡單的話來定義tcpdump,就是:dump the traffice on a network,根據使用者的定義對網路上的資料包進行截獲的包分析工具。
作為互連網上經典的的系統管理員必備工具,tcpdump以其強大的功能,靈活的截取策略,成為每個進階的系統管理員分析網路,排查問題等所必備的東東之一。
顧名思義,TcpDump可以將網路中傳送的資料包的“頭”完全截獲下來提供分析。它支援針對網路層、協議、主機、網路或連接埠的過濾,並提供and、or、not等邏輯語句來協助你去掉無用的資訊。
tcpdump提供了原始碼,公開了介面,因此具備很強的可擴充性,對於網路維護和入侵者都是非常有用的工具。tcpdump存在於基本的FreeBSD系統中,由於它需要將網路介面設定為混雜模式,普通使用者不能正常執行,但具備root許可權的使用者可以直接執行它來擷取網路上的資訊。因此系統中存在網路分析工具主要不是對本機安全的威脅,而是對網路上的其他電腦的安全存在威脅。
普通情況下,直接啟動tcpdump將監視第一個網路介面上所有流過的資料包。
-----------------------
bash-2.02# tcpdump
tcpdump: listening on eth0
11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50
11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43
0000 0000 0080 0000 1007 cf08 0900 0000
0e80 0000 902b 4695 0980 8701 0014 0002
000f 0000 902b 4695 0008 00
11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97
ffff 0060 0004 ffff ffff ffff ffff ffff
0452 ffff ffff 0000 e85b 6d85 4008 0002
0640 4d41 5354 4552 5f57 4542 0000 0000
0000 00
^C
------------------------
首先我們注意一下,從上面的輸出結果上可以看出來,基本上tcpdump總的的輸出格式為:系統時間 來源主機.連接埠 > 目標主機.連接埠 資料包參數