tcpdump [ -addefllnnopqrstuuvxx ] [ -c count ]
[ -c file_size ] [ -f file ]
[ -i inte***ce ] [ -m module ] [ -m secret ]
[ -r file ] [ -s snaplen ] [ -t type ] [ -w file ]
[ -w filecount ]
[ -e spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z user ]
[ expression ]
-w file,將分析寫進檔案
-r file,從檔案中讀出資料進行分析
expression,只有滿足這個表示式的網路包才會被tcpdump處理
-f file,從file讀入expression,並覆蓋命令列中的值
-c count,在不被中斷的情況下,tcpdump將抓到count個網路包才會停
-a,以ascii格式列印網路包
-d,檢視有什麼網路介面可以抓取
$ sudo /usr/sbin/tcpdump -d
1.eth0
2.any (pseudo-device that captures on all inte***ces)
3.lo
-i inte***ce,只處理指定介面的包,any表示所有,預設選-d中的第乙個
-e,列印連線層頭
-n,不把ip轉成網域名稱
-nn,不把埠轉成名字,例如把80埠轉成http
-s,列印序列號的絕對值,而不是相對值
-s snaplen,取包的前snaplen位元組,預設值夠ip, icmp, tcp and udp使用,
這個設定太長,將加大處理時間,並可能提高丟包率,設定0,表示
抓取整個包
-v,-vv,-vvv,完整列印協議頭,越多v列印的資訊越多
proto: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp, udp.
dir: src, dst, src or dst, src and dst
type: host, net, port, portrange
連線符:and(&&), or(||), not(!),compare
expression = proto dir type 引數 + [連線符 proto dir type 引數]
兩個例子:
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
tcpdump 'gateway snup and ip[2:2] > 576'
tcpdump -l > dat & tail -f dat
將分析持續寫入檔案dat,並用tail檢視
$ sudo /usr/sbin/tcpdump -i any -c 100 'tcp port 60530' -nn
tcpdump: warning: promiscuous mode not supported on the "any" device
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type linux_sll (linux cooked), capture size 96 bytes
16:19:00.561084 ip 127.0.0.1.49488 > 127.0.0.1.60530: s 89286447:89286447(0) win 32792
16:19:00.561103 ip 127.0.0.1.60530 > 127.0.0.1.49488: s 335804188:335804188(0) ack 89286448 win 32768
16:19:00.561114 ip 127.0.0.1.49488 > 127.0.0.1.60530: . ack 1 win 257
三次握手結束
16:19:00.561312 ip 127.0.0.1.49488 > 127.0.0.1.60530: p 1:4025(4024) ack 1 win 257
16:19:00.561320 ip 127.0.0.1.60530 > 127.0.0.1.49488: . ack 4025 win 386
16:19:04.691569 ip 127.0.0.1.60530 > 127.0.0.1.49488: p 1:6(5) ack 4025 win 386
四次揮手開始,但是這裡意外關閉發出乙個reset包,
所以只有三次揮手,不用進入time_wait狀態,這也是避免time_wait狀態的乙個辦法。
16:19:04.691591 ip 127.0.0.1.60530 > 127.0.0.1.49488: r 6:6(0) ack 4025 win 386
16:19:04.692180 ip 127.0.0.1.49488 > 127.0.0.1.60530: . ack 6 win 257
16:19:04.692199 ip 127.0.0.1.60530 > 127.0.0.1.49488: r 335804194:335804194(0) win 0
^c9 packets captured
18 packets received by filter
0 packets dropped by kernel
發生異常關閉的情況包括:
1、應用層還沒有把tcp緩衝區內的資料讀完就發起close
2、在讀寫的時候發生了異常,比如記憶體踩空了。
$ sudo /usr/sbin/tcpdump -i any -c 100 'tcp port 60530' -nn
tcpdump: warning: promiscuous mode not supported on the "any" device
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type linux_sll (linux cooked), capture size 96 bytes
22:25:48.571911 ip 127.0.0.1.49525 > 127.0.0.1.60530: s 2056888219:2056888219(0) win 32792
22:25:48.571929 ip 127.0.0.1.60530 > 127.0.0.1.49525: s 2331439954:2331439954(0) ack 2056888220 win 32768
22:25:48.571941 ip 127.0.0.1.49525 > 127.0.0.1.60530: . ack 1 win 257
三次握手結束
22:25:48.572145 ip 127.0.0.1.49525 > 127.0.0.1.60530: p 1:4025(4024) ack 1 win 257
22:25:48.572153 ip 127.0.0.1.60530 > 127.0.0.1.49525: . ack 4025 win 386
22:25:52.408552 ip 127.0.0.1.60530 > 127.0.0.1.49525: p 1:6(5) ack 4025 win 386
四次揮手開始
具體見tcpdump的幫助文件
tcpdump抓包分析利器 wireshark
wireshark有mac版和win版,fiddler有win版。下面看下wireshark怎麼用 先抓點包 zjy ubuntu sudo tcpdump iany w dump.pcap tcpdump listening on any,link type linux sll linux coo...
快速上手tcpdump進行網路抓包分析
簡介 tcpdump是linux中強大的網路資料採集分析工具之一。mannal手冊的簡介 dump the traffic on a network,根據使用者的定義對網路上的資料報進行截獲的包分析工具,支援針對網路層 協議 主機 網路或埠的過濾,並提供and or not等邏輯語句進行篩選過濾。基...
tcpdump 抓包與分析
tcpdump 抓包與分析 tcpdump抓的包內容可以用wireshark進行解析,如 tcpdump c1000 w tmp tcpdump.test.cap wireshark是開源軟體windows和linux下都可以執行,我在windows下測試的,用wireshark開啟 tcpdump...