Wireshark抓包分析TCP建立/釋放連結的過程以及狀态變遷分析
一、介紹計算機網絡體系結構
1.計算機的網絡體系結構
在抓包分析TCP建立連結之前首先了解下計算機的網絡通信的模型,我相信學習過計算機網絡的都比較熟悉,如下圖所示是一個OSI七層模型、TCP/IP四層模型以及五層模型的對比圖。(此圖來源于計算機網絡第七版-謝希仁版本書)。
其中OSI模型以及TCP/IP的模型大夥都應該熟悉,至于說五層模型,就是講網絡接口層分成 資料鍊路層、和實體層,關于這個問題,謝老這麼解釋的
2.計算機網絡模型每層所包含的資訊内容
内容介紹
- 實體層
- 通過線路傳送原始的比特流
- 隻完成一個節點到另一個節點的傳送
- 資料鍊路層
- 通過實體網絡傳送包(這裡的包指的是資料報)
- 實作點到點的可靠傳輸
- 網絡層
- 把包裡面的目的位址拿出來,進行路由選擇,決定要往哪個方向傳輸
- 負責從源通過路由選擇到目的地的過程,達到從源主機傳輸資料到目标主機的目的
- 傳輸層
- 網絡層隻是把資料送到主機,但不會送到程序,傳輸層負責程序與主機間的傳輸,主機到主機的傳輸交由網絡層負責
- 傳輸層實作端到端的可靠傳送
- 會話層
- 通過資料流建立會話關系
- 展示層
- 資料壓縮、解壓、加密、解密、資料類型、格式變換等一切與資料展示有關的操作
- 應用層
- 專門針對某些應用提供服務
針對以上内容展現一個圖例
此圖來源于https://www.jianshu.com/p/c793a279f698 不定非常準确,參考
二、使用抓包工具分析TCP連結過程
1.安裝Wireshark(自己百度下載下傳安裝)
我使用版本Version 1.4.9 ,工具有好多比如Sniffer等等,這個工具自己解決
2.開啟wireshark
輕按兩下打開本軟體--點選接口清單或者單擊這個圖示 ,彈出網卡監聽的界面對話框,可以選擇對應的網卡監聽、滑鼠點選ip位址可以從IPV4與IPV6互相切換,點選開始即可。
點選開始即可監聽該網卡所流經過的資料
我使用倆台機器來測試抓取封包 如下圖所示,服務開啟端口為4455,用戶端随機開啟一個 我測試過程中的為40183
可以看到頭部的Filter 過濾規則、如果為空白,則會将流經本網卡的所有資料均監聽采集上來,為了友善抓取我們所需要的資料包,我們需要過濾掉無關的消息
3.輸入過濾規則進行過濾
過濾規則
- tcp->隻顯示TCP協定的記錄;
- http->隻看HTTP協定的記錄;
- ip.src ==192.168.0.110 ->顯示源位址為192.168.0.110的記錄;
- ip.dst==192.168.0.1120 ->目标位址為192.168.0.120的記錄;
- ip.addr == 42.121.252.58 ->隻顯示與某主機的通信;
- tcp.port ==80->端口為80的;
- tcp.srcport == 80 ->隻顯示TCP協定的源端口為80的;
- http.request.method=="GET" ->隻顯示HTTP GET方法的;
- eth.type == 0x806->隻顯示ARP封包,這個字段的值表示是ARP封包,如果是ip封包此值為0x8000
- 注:Type後面的值記不住的話,可以在Expression中選擇,
例如:ip.src == 192.168.0.109 or ip.dst == 192.168.0.109 and tcp 表示ip位址來源是192.168.0.120 或者ip位址目的為192.168.0.120并且通信協定是tcp
我輸入的是:tcp.srcport == 4455 or tcp.dstport == 4455 表示隻檢視目的端口和來源端口為4455的資訊
過濾封包如下
過濾規則也有說明打擊表達式可以檢視别的規則文法
檢視具體抓到的資料包對應的協定層
4.TCP的連結建立
TCP的三次握手
包資料
TCP的三次握手建立連結圖(此圖依然來源于計算機網絡-謝希仁)
由上圖可以看出TCP的連結三次握手信号的過程 A為用戶端,B為伺服器
建立過程的描述請看謝老的講述、以及封包抓取截圖中的信号

5.資料的發送
6.TCP的連結釋放
TCP連結釋放封包互動資訊
TCP連結釋放的過程,也就是通常說的四次揮手
7.TCP的有限狀态機
為了能夠更加清晰的看清楚TCP連結過程的狀态變化情況,以及狀态之間的關系下圖介紹了TCP的有限狀态機
6.TCP建立連結和斷開所用到的工具
開啟用戶端和服務端程式并且啟動服務的監聽