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建立鏈接和斷開所用到的工具
開啟客戶端和服務端程序並且啟動服務的監聽
開啟服務端
開啟客戶端
TCP測試工具下載地址