tcpdump抓包分析TCP三次握手過程

1、 tcpdump使用 一、首先看下MAN手冊 TCPDUMP(8) NAME tcpdump - dump traffic on a network SYNOPSIS tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ] [ -C file_size ] [ -F file ] [ -i interface ] [ -m module ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,... ] [ -y datalinktype ] [ -Z user ] [ expression ] 選項: -A 以ASCII碼顯示消息包 -c 指定包個數 -C 配合-w,當寫入文件時,先檢查文件大小是否已經超過1M,若超過,生成新文件,文件名爲指定文件名加後綴1。 -d 將匹配信息包的代碼以人們可以理解的彙編格式給出 -dd 將匹配信息包的代碼以c語言程序段的格式給出 -ddd 將匹配信息包的代碼以十進制的形式給出。 -D 列出能夠抓包的全部網絡接口 -e 顯示鏈路層內容 -f 外部的IP以數字方式顯示 -i 指定網絡接口 -l 使標準輸出變爲緩衝行形式 -n IP,端口用數字方式顯示 -t    在輸出的每一行不打印時間戳; -v    輸出一個稍微詳細的信息,例如在ip包中能夠包括ttl和服務類型的信息; -vv   輸出詳細的報文信息; -c    在收到指定的包的數目後,tcpdump就會中止; -F    從指定的文件中讀取表達式,忽略其它的表達式; -i    指定監聽的網絡接口; -r    從指定的文件中讀取包(這些包通常經過-w選項產生); -w   直接將包寫入文件中,並不分析和打印出來; -T    將監聽到的包直接解釋爲指定的類型的報文,常見的類型有rpc (遠程過程調用)和snmp(簡單網絡管理協議;) -x 讓十六進制顯示包內容 二、過濾 (1)指定接口(-i) 如:tcpdump -i eth0 (2)指定IP地址(host),能夠輔加and , or ,!等邏輯符,以及src,dest等表示方向。 如:tcpdump host 192.168.1.23 捕獲192.168.1.23發出或者收到的包 tcpdump -A host 192.168.1.90 and \( 192.168.1.104 or 192.168.1.105 \) 捕獲192.168.1.23與192.168.1.104或者192.168.1.105之間往來的包 tcpdump host ! 192.168.1.23 捕獲除192.168.1.23之外全部主機的包 tcpdump -A src 192.168.1.90 and dst 192.168.1.104 指定從90發往104的包 (3)指定端口(port) 如:tcpdump port 80 指定捕獲80端口的包 (4)指定協議( 協議包括:ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp and udp) 如:tcpdump tcp 指定捕獲TCP包 (5)其它(gateway, broadcast, less, greater) 如:tcpdump broadcast 全部廣播包 2、三次握手過程分析 用netstat -an | grep LISTEN看一下,當前主機正在監聽的端口,使用另外一臺機telnet過來,不輸入任何內容,進行抓包。 咱們這裏以6000爲例 tcpdump port 6000 -c 3 -n 內容以下: 21:07:17.790296 IP 192.168.1.104.2511 > 192.168.1.90.6000: S 3359422806:3359422806(0) win 64240 <mss1460,nop,nop,sackOK> 21:07:17.790317 IP 192.168.1.90.6000 > 192.168.1.104.2511: S 3675079922:3675079922(0) ack 3359422807 win5840 <mss 1460,nop,nop,sackOK> 21:07:17.790675 IP 192.168.1.104.2511 > 192.168.1.90.6000: . ack 1 win 64240 咱們來對第一個包進行分析: 21:07:17(時間). 790296(ID號) IP (協議) 192.168.1.104.2511 > 192.168.1.90.6000: (源IP,端口,目的IP,端口)中間>表示方向 S (表示爲SYN包,即發起鏈接包 緊急指針— URG 確認序號有效—ACK 接收方應該儘快將這個報文段交給應用層—PSH 重建鏈接—RST 同步序號用來發起一個鏈接—SYN 發端完成發送任務—IN ) 3359422806:3359422806(0) (IP包序號,相對序號爲0) win 64240 (數據窗口大小,告訴對方本機接收窗口大小,windows下默認爲64240,可經過setsockopt動態修改,一樣能夠經過修改註冊表項 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters的 TCPWindowSize)來更改默認值) <mss1460,nop,nop,sackOK> 對應TCP包頭中的選項字段 MSS: Maxitum Segment Size 最大分段大小,MSS表示TCP傳往另外一端的最大塊數據的長度。當一個鏈接創建時,鏈接的雙方都要通告各自的MSS。若是一方不接收來自另外一方的MSS值,則MSS就定爲默認的536字節。 以上三個包正好是TCP鏈接的三次握手過程: (1) A主機發送序號爲3359422806的SYN包到B,同時帶有自身的WIN和MSS大小。 (2) B主機收到後,發送SYN+ACK的返回包到A,也帶自身的WIN和MSS大小,3675079922,同時爲爲上一個包的應答包3359422807。 (3) A主機返回ACK,包序號爲1(相對序號,若是須要看絕對序號,能夠在tcpdump命令中加-S) 而後咱們再來分析一下包的具體內容: 咱們在tcpdump命令中加-x選項,後可獲得以下內容: 22:07:13.436638 IP 192.168.1.104.2799 > 192.168.1.90.6000: S 3480877812:3480877812(0) win 64240 <mss 1460,nop,nop,sackOK> 0x0000: 4500 0030 b195 4000 8006 c51f c0a8 0168 0x0010: c0a8 015a 0aef 1770 cf79 faf4 0000 0000 0x0020: 7002 faf0 174e 0000 0204 05b4 0101 0402 22:07:13.436675 IP 192.168.1.90.6000 > 192.168.1.104.2799: S 4226616929:4226616929(0) ack 3480877813 win 5840 <mss 1460,nop,nop,sackOK> 0x0000: 4500 0030 0000 4000 4006 b6b5 c0a8 015a 0x0010: c0a8 0168 1770 0aef fbed 0e61 cf79 faf5 0x0020: 7012 16d0 f10e 0000 0204 05b4 0101 0402 22:07:13.437019 IP 192.168.1.104.2799 > 192.168.1.90.6000: . ack 1 win 64240 0x0000: 4500 0028 b196 4000 8006 c526 c0a8 0168 0x0010: c0a8 015a 0aef 1770 cf79 faf5 fbed 0e62 0x0020: 5010 faf0 39b2 0000 仍是同樣,咱們對第一個包進行分析,第一個包爲SYN包,應該爲一個空包,即只包括IP頭和TCP頭。 IP包頭 4 - IP版本號 IPV4 5 - IP包頭長度 5個32字節 00 - TOS (000 0000 0)前三個BIT優先權,現已忽略;4 bit的TOS分別表明:最小時延、最大吞吐量、最高可靠性和最小費用, 均爲0表示通常服務;最後1BIT未用。 0030 -總長度,48個字節 b195 -包惟一標識 4000 -標誌字段,和片偏移,用於分片 80 - TTL(128) 06 - 協議 TCP c51f - MAC c0a8 0168 - SRC IP,能夠inet_ntoa轉換成點號分隔的IP。 c0a8 015a - DST IP TCP包頭 0aef -源端口,十進制爲2799 1770 -目的端口,十進制爲6000 cf79 faf4 包序號,十進制爲217554863 0000 0000 確認序號,0,未設置ACK,確認序號無效 7002 -TCP包頭長度,標誌位。(0111 000000 000010)前4bitTCP長度7個32BIT,中間6bit保留,後6bit爲標誌位(URG, ACK,PSH, RST, SYN, FIN),能夠看出設置了倒數第二位,SYN位。 faf0 - 窗口大小,十進制爲64240 174e - 校驗和,覆蓋了整個的 T C P報文段: T C P首部和T C P數據 0000 - 緊急指針, 只有當URG標誌置1時緊急指針纔有效 0204 05b4 0101 0402 - 選項字段,8個字節

相關文章
相關標籤/搜索