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狀態;
打開wireshark之後,軟件開始監聽,我們隨便在瀏覽器中點擊一個網站,這個時候電腦就會和別的服務器建立理解,然後就會產生三次握手的報文了。
下面就是我抓到的一些包,看紅線部分:
第一次握手:ack=0,syn=1;客戶向服務器請求。
第二次握手:ack=1,syn=1.服務器回覆。
第三握手:ack=1,syn=0.客戶確認。
參考:結合Wireshark捕獲分組深入理解TCP/IP協議棧之TCP協議(TCP報文格式+三次握手實例)
http://blog.chinaunix.net/uid-9112803-id-3212041.html