TCPDUMP 總結

tcpdumpLinux下自帶的網絡分析工具。可以將網絡中傳送的數據包完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供andornot等邏輯語句來幫助你去掉無用的信息。

 
 
tcpdump主要選項
類型
host, net, port
方向
src, dst, src or dst, src and dst
協議
ip, tcp, udp, arp, rarp, ether, fddi
邏輯
and, or, not 或者 &&, ||, !
選項
-i指定網卡, -n顯示ip, -A文本顯示
-c抓包數, -x/-xx/-X/-XX二進制顯示, -r, -w
 
類型
host指定主機或目的地址。
net制定網絡地址。net可以用來指定子網。
port指定監聽端口。
如果要制定多種類型,用邏輯運算符號連接。
tcpdump net 192.168.1。監聽子網192.168.1.0
tcpdump net 192.168.1.0/24
tcpdump host 192.168.1.124 and port 80。監聽指定主機的80端口。
 
方向
src指定源地址,dst指定目的地址。
監聽來自192.168.1.10 192.168.1.1180端口:
tcpdump port 80 and \(src 192.168.1.10 or src 192.168.1.11\)
 
協議
用來捕獲特定協議的數據包有:ether(ethernet), tcp, udp, icmp, ip, ip6(ipv6), arp, rarp(reverse arp)等。
 
邏輯
tcpdump port 80 and \(host 192.168.1.10 or host 192.168.1.11\)。監聽主機192.168.1.10 192.168.1.1180端口。
使用()一定要用\轉義
獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
 
選項
-i:指定網卡。
-n:顯示ip,而不是主機名。
-c:指定抓多少個包後退出。
-A:以ASCII方式顯示包內容,這個選項對文本格式的協議包非常有用。
-s:指定抓包顯示一行的寬度,-s0表示顯示完整的包,經常和-A一起用。
-x/-xx/-X/-XX:以十六進制顯示包內容,幾個選項只有細微的差別,詳見man手冊。
-vv:詳細信息。
-r:從文件中讀取。
-w:導出到指定文件。
監聽來自172.25.38.145到端口7012的數據,併到處到指定文件:
tcpdump tcp dst port 7012 and src host 172.25.38.145 -vv –w output.dat
從指定文件加載監聽數據:
tcpdump -r output.dat
監聽網卡eth1端口7012的數據:
tcpdump tcp port 7012 -ieth1 –n
 
tcpdump解析tcp連接建立和釋放
下面命令抓包:
# tcpdump tcp port 7012 and host 172.25.34.88 -ieth1 -n
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 <mss 1460,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 <mss 1460,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,異常關閉連接。
. 表示沒有任何標誌。
 
上面抓包的過程解析:
1行:14:44:52這個時間,從172.25.38.145client)的臨時端口49563172.25.34.88server)的7012監聽端口發起連接,client初始包序號爲1986599379,滑動窗口大小爲5840字節(滑動窗口即tcp接收緩衝區的大小,用於tcp擁塞控制),mss大小爲1460(即可接收的最大包長度,通常爲MTU40字節,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,關閉連接的四次握手完成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章