前言
tcpdump是一款類Unix/Linux環境下的抓包工具,允許用戶截獲和顯示發送或收到的網絡數據包。 tcpdump可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。tcpdump 是一個在BSD許可證下發布的自由軟件。
下面這篇文章將給大家詳細介紹關于Linux中tcpdump命令的相關內容,分享出來供大家參考學習,下面話不多說,來一起看看詳細的介紹吧。
一、命令格式
tcpdump [ -AbdDefhlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ] [ -C file_size ] [ -F file ] [ -G rotate_seconds ] [ -i interface ] [ -m module ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,... ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ expression ]
二、選項說明
-A:以ASCII碼方式顯示每一個數據包(不會顯示數據包中鏈路層頭部信息)。在抓取包含網頁數據的數據包時, 可方便查看數據-b:Print the AS number in BGP packets in ASDOT notation rather than ASPLAIN notation-B [buffer_size],--buffer-size=buffer_size:設置操作系統捕捉緩沖大小,單位KB-c [數據包數目]:收到指定的數據包數目后,就停止進行捕獲操作-C [file-size]:與-w [file]選項配合使用。該選項使得tcpdump在把原始數據包直接保存到文件中之前, 檢查此文件大小是否超過file-size。如果超過了,將關閉此文件,另創一個文件繼續保存原始數據包。新創建的文件名與-w選項指定的文件名一致, 但文件名后多了一個數字,該數字會從1開始隨著新創建文件的增多而增加。 file-size的單位是百萬字節(nt: 這里指1,000,000個字節,并非1,048,576個字節, 后者是以1024字節為1k, 1024k字節為1M計算所得, 即1M=1024*1024 =1,048,576)-d:把編譯過的數據包編碼轉換成可閱讀的格式,并傾倒到標準輸出-dd:把編譯過的數據包編碼轉換成C語言的格式,并傾倒到標準輸出-ddd:把編譯過的數據包編碼轉換成十進制數字的格式,并傾倒到標準輸出-D,--list-interfaces:打印系統中所有tcpdump可以在其上進行抓包的網絡接口。每一個接口會打印出數字編號, 相應的接口名字, 以及一個可能的網絡接口描述。其中網絡接口名字和數字編號可以用在tcpdump的-i [flag]選項(nt:把名字或數字代替flag), 來指定要在其上抓包的網絡接口。此選項在不支持接口列表命令的系統上很有用(nt: 比如, Windows 系統, 或缺乏 ifconfig -a 的UNIX系統); 接口的數字編號在windows 2000 或其后的系統中很有用, 因為這些系統上的接口名字比較復雜, 而不易使用。如果tcpdump編譯時所依賴的libpcap庫太老,-D 選項不會被支持, 因為其中缺乏 pcap_findalldevs()函數-e:每行打印輸出中將包括數據包的數據鏈路層頭部信息 -f:顯示外部的IPv4地址時(nt:foreign IPv4 addresses, 可理解為非本機ip地址), 采用數字方式而不是名字。此選項是用來對付Sun公司的NIS服務器的缺陷(nt: NIS, 網絡信息服務, tcpdump 顯示外部地址的名字時會用到它提供的名稱服務): 此NIS服務器在查詢非本地地址名字時,常常會陷入無盡的查詢循環)由于對外部(foreign)IPv4地址的測試需要用到本地網絡接口(nt: tcpdump 抓包時用到的接口)及其IPv4 地址和網絡掩碼. 如果此地址或網絡掩碼不可用, 或者此接口根本就沒有設置相應網絡地址和網絡掩碼(nt: linux 下的 'any' 網絡接口就不需要設置地址和掩碼, 不過此'any'接口可以收到系統中所有接口的數據包), 該選項不能正常工作。-F [file]: 使用file文件作為過濾條件表達式的輸入, 此時命令行上的輸入將被忽略-G [rotate_seconds]:類似于-C [file_size]命令選項,-C按文件大小來新建文件存儲數據包,-G則根據指定的時間周期,將監聽到的數據包寫入新的文件,新建的文件名由-w選項指定,并且文件名后接有時間串,時間串的格式由strftime(3)指定。如果沒有指定時間串的格式,新的文件將覆蓋舊的文件。如果與-C option同時使用的話,文件名稱格式將是file<count>。-h,--help:打印tcpdump的幫助信息和libpcap的版本信息。(nt:libpcap是unix/linux平臺下的網絡數據包捕獲函數包)--version:打印tcpdump和libpcap的version。-i [interface],--interface=interface: 指定tcpdump 需要監聽的接口. 如果沒有指定, tcpdump 會從系統接口列表中搜尋編號最小的已配置好的接口(不包括 loopback 接口).一但找到第一個符合條件的接口, 搜尋馬上結束。在采用2.2版本或之后版本內核的Linux操作系統上, 'any'這個虛擬網絡接口可被用來接收所有網絡接口上的數據包(nt: 這會包括目的是該網絡接口的,也包括目的不是該網絡接口的)。需要注意的是如果真實網絡接口不能工作在'混雜模式'(promiscuous)下,則無法在'any'這個虛擬網絡接口上抓取其數據包。如果-D標志被指定, tcpdump會打印系統中的接口編號,而該編號就可用于此處的interface參數-l:對標準輸出進行行緩沖(nt: 使標準輸出設備遇到一個換行符就馬上把這行的內容打印出來)-L:列出指定網絡接口所支持的數據鏈路層的類型后退出.(nt: 指定接口通過-i 來指定)-n:不把主機的網絡地址轉換成名字-m [module]:通過module指定的file裝載SMI和MIB模塊(nt: SMI,Structure of Management Information, 管理信息結構;MIB, Management Information Base, 管理信息庫。可理解為,這兩者用于SNMP(Simple Network Management Protoco)協議數據包的抓取。具體SNMP 的工作原理未知, 另需補充)。此選項可多次使用, 從而為tcpdump裝載不同的MIB模塊-M [secret]:如果TCP數據包(TCP segments)有TCP-MD5選項(在RFC 2385有相關描述), 則為其摘要的驗證指定一個公共的密鑰secret-n:不將地址(比如主機地址、端口號等)轉換到對應的名字-N:不要打印主機名的域名資格,比如打印'nic'而不是'nic.ddn.mil'-O,--no-optimize:不啟用進行包匹配時所用的優化代碼. 當懷疑某些bug是由優化代碼引起的, 此選項將很有用-p,--no-promiscuous
新聞熱點
疑難解答