在上一篇博文中我們分別介紹了Tcpdump 和 Wireshark 的簡單使用,這一節我們將介紹使用Wireshark 來分析 Tcpdump 抓住的網絡包,主要分析TCP三次握手的過程。
1.首先我們在Linux系統運行 下面的命令抓包,並保存在 a.cap 文件中,
#tcpdump -i any -w a.cap
然後運行一個簡單的 socket 案例代碼,於是我們在當前目錄下就生成了 a.cap 文件。
2.用 wireshark 軟件打開 a.cap 文件,如圖
圖中可以看到wireshark截獲到了三次握手的三個數據包。
第四個包纔是HTTP的, 這說明HTTP的確是使用TCP建立連接的。
(1)第一次握手
第一次握手數據包,客戶端發送一個TCP,標誌位爲SYN,序列號爲0, 代表客戶端請求建立連接。 如下圖
(2)第二次握手
第二次握手的數據包,服務器發回確認包, 標誌位爲 SYN,ACK. 將確認序號(Acknowledgement Number)設置爲客戶的I S N加1以.即0+1=1, 如下圖
(3)第三次握手
第三次握手的數據包,客戶端再次發送確認包(ACK) SYN標誌位爲0,ACK標誌位爲1.並且把服務器發來ACK的序號字段+1,放在確定字段中發送給對方.並且在數據段放寫ISN的+1, 如下圖:
就這樣通過了TCP三次握手,建立了連接,剩下的就是數據的傳輸過程,請大家自己分析,相信不是很難了哈。