tcpdump 和 wireshark 抓包工具 ,介紹、安裝、命令使用。 詳解三次握手、四次揮手。兩個結合使用,會更好分析報文
文章目錄
前言
- 一般的
前後端聯調
是用不到抓包的,可以通過postman、chrome的開發者工具進行除錯,檢視請求和相應。 - 當做
資料對接
,或者再做幾個服務連線的時候,中間會有restful或者thirft請求,這個時候之只能通過抓包
來看請求和相應了。 抓包
其實就是:將網路傳輸傳送
與接收的資料包
進行截獲、重發、編輯、轉存等操作,也用來檢查網路安全。抓包也經常被用來進行資料擷取等。- 這裡的包就是
資料包
,也就是TCP/IP協議
通訊傳輸中的資料單位
,一般也稱“資料包”
補充:TCP/IP協議是工作在OSI模型第三層(網路層)、第四層(傳輸層)上的,幀工作在第二層(資料鏈路層)。上一層的內容由下一層的內容來傳輸,所以在區域網中,“包”是包含在“幀”裡的。
一、tcpdump 工具
1、tcpdump 工具
Tcpdump提供了一整套完善的規則來對截獲的資料包進 行過濾,由於大多數影像化的嗅探器都使用類似的過濾機制,因此對Linux網路管理員來說,瞭解如何使用Tcpdump來捕獲感興趣的資料包是一項必須掌控的基本功。
2、下載
可到 官網: http://www.tcpdump.org 下載最新的Tcpdump原始碼包。
注意:
因tcpdump的執行需要pcap的支援,所以最好先行安裝pcap軟體包,另外還要注意軟體的版本問題,建議按照網站上匹配的軟體包tcpdump和pcap一同下載。
前期在測試時我使用的yum 安裝的pcap包(版本1.9.1),然後在網上下載了tcpdump(版本為4.9.3)。
此處使用的作業系統是 CentOS release 5.5 (Final)
3、編譯安裝
在編譯Tcpdump之前,應先確定pcap庫(libpcap)已安裝完畢。這個庫是編譯Tcpdump時所必需的。
安裝過程非常簡單如下示:
tar -zxvf libpcap-1.9.1.tar.gz
cd libpcap-1.3.0
./configure
make
make install
該庫已安裝完畢,下面執行下面的命令來編譯並安裝Tcpdump:
tar -zxvf tcpdump-4.9.3.tar.gz
cd tcpdump-4.3.0
./configure
make
make install
二、抓包命令選項
Tcpdump是個命令列方式的 網路嗅探器
。他通過使用命令選項來過濾網路卡截獲的資料包,假如不進行過濾,過多數量的包會使網路管理員很難理清頭緒。Tcpdump的命令格式如下:
這個就可以直接使用:
tcpdump -s 0 -i any host ip -w 路徑 -v
tcpdump常用引數
-n 顯示IP地址和埠號
-v 顯示更多資訊,ttl,長度,其他選項等,tcpdump的詳細資訊有3個級別,因此-vvv顯示最多資訊
-D 列出可以抓包的網路介面
-i + 網路介面抓包
-c + 數字 一次抓取多少資料包後停止抓取
-w + 檔名 抓包結果儲存到檔案
-r + 檔名 讀取抓包檔案
-s + 數字 抓包的大小
如:tcpdump -nvvv -i any -c 100
tcpdump的過濾器引數
協議名,如icmp,過濾出icmp的制定報文
host + ip 特定主機,抓取目標地址和源地址為特定ip的資料包
port + 數字 特定埠抓包
src + [host] ip 源地址
dst + [host] ip 目標地址
多條件選擇使用and,or和小括號,在shell中需要用引號包含多個條件的過濾規則如, tcpdump -nvvv -i any -c 20 ‘port 80 or port 443’
-X 以十六進位制列印出資料包文
-A 列印資料包文的ASCII值
抓包之後,需要對報文進行分析。如果用wireshark 進行分析的話,就特別清晰明瞭
三、wireshark工具
-
wireshark 也可以進行抓包,這是一個window上面的一個應用。一般是再本地進行抓包。然後對報文進行視覺化分析。
-
而我一般則是在Linux上使用 tcpdump 進行抓報文,抓取報文之後,再使用 wireshark 進行分析報文。這樣可以準確看到再TCP/IP協議中的 請求 和 響應 情況。
1. 概念介紹
提取特徵時,要對session(會話)進行過濾,找到關鍵的stream,這裡總結了wireshark過濾的基本語法,供自己以後參考。(腦子記不住東西)
wireshark進行過濾時,按照過濾的語法可分為協議過濾
和內容過濾
。
對標準協議,既支援粗粒度的過濾如HTTP,也支援細粒度的、依據協議屬性值進行的過濾如tcp.port= =53、http.request.method==“GET”。
對內容的過濾,既支援深度的字串匹配過濾如http contains “Server”,也支援特定偏移處值的匹配過濾如tcp[20:3] == 47:45:54。
2. 兩種過濾
捕捉過濾器
(CaptureFilters):用於決定將什麼樣的資訊記錄在捕捉結果中。
顯示過濾器
(DisplayFilters):用於在捕捉結果中進行詳細查詢。
- 捕捉過濾器在抓抱前進行設定,決定抓取怎樣的資料;顯示過濾器用於過濾抓包資料,方便stream的追蹤和排查。
- 捕捉過濾器僅支援協議過濾,顯示過濾器既支援協議過濾也支援內容過濾。
- 兩種過濾器它們支援的過濾語法並不一樣。
四、下載、安裝使用
下載官網:https://www.wireshark.org/download.html
六、三次握手、四次揮手詳解
解讀 報文時 ,看著 一行行的程式碼有點懵逼。 仔細看了一下,大體還是能瞭解的,比如No、Time、Source、Destination、Protocol、Length 欄位 還是可以明白的,但是 Info 資訊,就直接懵逼了,看不懂,百度了一下,是資料 TCP 協議的 三次握手、四次揮手的知識,那這裡需要學習一下了。
1. flags欄位(記住)
首先,在TCP層,有個FLAGS欄位,這個欄位有以下幾個標識:SYN, FIN, ACK, PSH, RST, URG.
其中,對於我們日常的分析有用的就是前面的五個欄位。這裡一定要記住:
SYN
表示建立連線,FIN
表示關閉連線,ACK
表示響應,PSH
表示有 DATA資料傳輸,RST
表示連線重置。
分析:
- 其中,ACK是可能與SYN,FIN等同時使用的,比如SYN和ACK可能同時為1,它表示的就是建立連線之後的響應,
- 如果只是單個的一個SYN,它表示的只是建立連線。
- TCP的幾次握手就是通過這樣的ACK表現出來的。
- 但SYN與FIN是不會同時為1的,因為前者表示的是建立連線,而後者表示的是斷開連線。
- RST一般是在FIN之後才會出現為1的情況,表示的是連線重置。
- 一般地,當出現FIN包或RST包時,我們便認為客戶端與伺服器端斷開了連線;而當出現SYN和SYN+ACK包時,我們認為客戶端與伺服器建立了一個連線。
- PSH為1的情況,一般只出現在 DATA內容不為0的包中,也就是說PSH為1表示的是有真正的TCP資料包內容被傳遞。
- TCP的連線建立和連線關閉,都是通過請求-響應的模式完成的。
2. 三次握手
TCP(Transmission Control Protocol)傳輸控制協議
,TCP是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立一個連線:
位碼
即 tcp標誌位
,有6種標示
:
SYN(synchronous建立聯機)
ACK(acknowledgement 確認)
PSH(push傳送)
FIN(finish結束)
RST(reset重置)
URG(urgent緊急)
Sequence number(順序號碼)
Acknowledge number(確認號碼)
TCP連線三次握手 示意圖:
圖文分析:
-
第一步:客戶端主動開啟,傳送連線請求報文段,將SYN標識位置為1,Sequence Number置為x(
TCP規定SYN=1時不能攜帶資料
,x為隨機產生的一個值),然後進入SYN_SEND狀態;
伺服器 由SYN=1知道,A要求建立聯機 -
第二步:伺服器收到SYN報文段進行確認,將SYN標識位置為1,ACK置為1,Sequence Number置為y,Acknowledgment Number置為x+1,然後進入SYN_RECV狀態,這個狀態被稱為半連線狀態
-
第三步:客戶端再進行一次確認,將ACK置為1(此時不用SYN),Sequence Number置為x+1,Acknowledgment Number置為y+1發向伺服器,最後客戶端與伺服器都進入ESTABLISHED狀態。
主機B收到後確認 seq=x+1 與ACK=1則連線建立成功。
完成三次握手,主機A與主機B開始傳送資料。
3. 四次揮手
TCP三次握手是TCP連線建立的過程,TCP四次揮手則是TCP連線釋放的過程。
TCP四次揮手的流程圖:
當客戶端沒有資料再需要傳送給服務端時,就需要釋放客戶端的連線,這整個過程為:
-
第一步:客戶端傳送一個報文給服務端(沒有資料),其中FIN設定為1,Sequence Number置為u,客戶端進入FIN_WAIT_1狀態
-
第二步:服務端收到來自客戶端的請求,傳送一個ACK給客戶端,Acknowledge置為u+1,同時傳送Sequence Number為v,服務端年進入CLOSE_WAIT狀態
-
第三步:服務端傳送一個FIN給客戶端,ACK置為1,Sequence置為w,Acknowledge置為u+1,用來關閉服務端到客戶端的資料傳送,服務端進入LAST_ACK狀態
-
第四步:客戶端收到FIN後,進入TIME_WAIT狀態,接著傳送一個ACK給服務端,Acknowledge置為w+1,Sequence Number置為u+1,最後客戶端和服務端都進入CLOSED狀態
五、wireshark 詳解分析 pcap報文檔案
從第四章學習了 三次握手和四次揮手,主要學習這兩個階段的流程和其中的欄位。
接下來就分析用wireshark開啟的報文協議。
先開啟 編輯->查詢分組,就會出現一個過濾器:
- 第一處紅框:就是 過濾協議 的地方,
- 第二處紅框:就是準確過濾的地方。
- 第三處紅框:就是報文協議的詳細資訊,從欄位名稱就可以知道其意思,最應該關注的是 最右邊的 info 資訊
我按IP地址過濾後
ip.address=
相關文章
- Wireshark抓包分析TCP“三次握手,四次揮手”TCP
- 實戰:tcpdump抓包分析三次握手四次揮手TCP
- (圖文並茂,權威最詳細)Wireshark抓包分析 TCP三次握手/四次揮手詳解TCP
- wireshark安裝使用與tcpdump的抓包分析TCP
- WireShark抓包分析以及對TCP/IP三次握手與四次揮手的分析TCP
- TCP三次握手四次揮手介紹TCP
- 使用tcpdump+wireshark抓包分析網路資料包TCP
- 詳解TCP一:三次握手、四次揮手TCP
- TCP三次握手、四次揮手概念圖詳解TCP
- TCP的三次握手與四次揮手詳解TCP
- TCP三次握手和四次揮手TCP
- 圖解TCP的三次握手和四次揮手圖解TCP
- TCP三次握手和四次揮手理解TCP
- TCP 三次握手四次揮手TCP
- TCP三次握手四次揮手TCP
- TCP三次握手&四次揮手TCP
- 簡述TCP三次握手和四次揮手TCP
- HTTP協議三次握手和四次揮手HTTP協議
- TCP三次握手與四次揮手TCP
- TCP 三次握手 與 四次揮手TCP
- TCP 、 UDP、三次握手、四次揮手TCPUDP
- 說說TCP的三次握手和四次揮手TCP
- TCP協議的三次握手和四次揮手TCP協議
- TCP 三次握手和四次揮手圖解(有限狀態機)TCP圖解
- TCP三次握手及四次揮手理解TCP
- TCP的三次握手與四次揮手TCP
- 在 Linux 命令列中使用 tcpdump 抓包Linux命令列TCP
- tcpdump抓包mysql建聯驗證TCP的三次握手TCPMySql
- TCP-三次握手和四次揮手簡單理解TCP
- TCP協議特點和三次握手/四次揮手TCP協議
- 看圖理解TCP的三次握手和四次揮手TCP
- TCP的三次握手,四次揮手及常見面試題詳解TCP面試題
- 使用WireShark抓包分析TCP協議TCP協議
- 漫畫:一招學會TCP的三次握手和四次揮手TCP
- tcp三次握手、四次揮手過程解析TCP
- “三次握手,四次揮手”你真的懂嗎?
- tcpdump抓包及tshark解包方法介紹TCP
- 深入解析:HTTP和HTTPS的三次握手與四次揮手HTTP