■ 北京 趙琳
編者按:tcpdump 是一款強大的網絡抓包工具,它使用libpcap 庫來抓取網絡數據包,這個庫在幾乎在所有的Linux/Unix 中都有。熟悉tcpdump 的使用能夠幫助你分析調試網絡數據。本文將通過一些具體的示例來介紹它在不同場景下的使用方法。
tcpdump的常用參數:$ tcpdump -i eth0 -nn -s0-v port 80
-i:選擇要捕獲的接口,通常是以太網卡或無線網卡,也可以是VLAN 或其他特殊接口。如果只有一個網絡接口,則無需指定。
-nn:單個n 表示不解析域名,直接顯示IP 地址;兩個n 表示不解析域名和端口。這樣不僅方便查看IP 地址和端口號,而且在抓取大量數據時非常高效,因為域名解析會降低抓取速度。
-s0:tcpdump 默認只會截取前96 字節的內容,要想截取所有的報文內容,通過使用-s number(number 是要截取的報文字節數),如果是0 的話,表示截取報文全部內容。
-v:使用-v、-vv 和-vvv來顯示更多的詳細信息,通常會顯示更多與特定協議相關的信息。
port 80:表示僅抓取80 端口上的流量,通常是HTTP。
-p:不讓網絡接口進入混雜模式。默認情況下使用tcpdump 抓包時,會讓網絡接口進入混雜模式。如果設備接入的交換機開啟了混雜模式,使用-p 選項可以有效地過濾噪聲。
-e:顯示數據鏈路層信息。默認情況下tcpdump 不會顯示數據鏈路層信息,使用-e 選項可以顯示源和目的mac 地址,以及 VLAN tag信息。
-w:用來把數據報文輸出到文件。使用tcpdump 截取數據報文的時候,默認會打印到屏幕的默認輸出,你會看到按照順序和格式,很多的數據一行行快速閃過,根本來不及看清楚所有的內容。
-A 表示使用ASCII 字符串打印報文的全部數據,這樣可以使讀取更加簡單,方便使用grep 等工具解析輸出內容。……