下面是在Ubuntu中進行網絡抓包的教程。
1.安裝wireshark
終端運行:sudo apt-get install wireshark
2.修改init.lua
直接運行wireshark的話會報錯:
Lua: Error during loading:
[string "/usr/share/wireshark/init.lua"]:45: dofile has been disabled
要對其進行修改,終端運行
sudo gedit /usr/share/wireshark/init.lua
倒數第二行改為--dofile(DATA_DIR.."console.lua")
3.啟動軟件
終端運行:sudo wireshark
點擊左上角的圖標,接下來會提示選擇網絡端口,我用的是有線,選擇eth0.
4.分析TCP三次握手過程
我們都知道,在正常情況下的,TCP的連接建立是通過三次握手過程來完成的,如下圖展示的一樣:
具體描述是:
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。 完成三次握手,客戶端與服務器開始傳送數據.