打開https://www.baidu.com/ 網頁一個簡單的動作,都經歷了什么?你想探究內部的原理嗎?那我們一起去探索吧
1.准備工作
安裝好wireshark。Wireshark(前稱Ethereal)是一個網絡報文分析軟件。網絡封包分析軟件的功能是擷取網絡封包,並盡可能顯示出最為詳細的網絡封包資料。Wireshark使用WinPCAP作為接口,直接與網卡進行數據報文交換。
2.抓取報文
打開wireshark,並開啟監聽模式,打開瀏覽器,輸入https://www.baidu.com/ ,等待返回后,關閉瀏覽器,最后停止wireshark監聽,並保存文件。
3.分析報文
3.1 查看百度的地址,cmd命令行nslookup
C:\Users\dell>nslookup www.baidu.com 服務器: ns-pd.online.sh.cn Address: 202.96.209.133 非權威應答: 名稱: www.a.shifen.com Addresses: 115.239.210.27 115.239.211.112 Aliases: www.baidu.com
從上面可以知道,先訪問的是DNS服務器,上篇文章<
你所忽略的DNS---DNS實戰及深度解讀
>已經詳細描述了dns協議的交互過程。本節我們重點查看和百度網站的交互。
3.2 分析報文
從上面可以知道百度有兩個IP地址,
115.239.210.27 115.239.211.112
從wireshark抓取的情況看,給我提供服務的是第一個ip地址
115.239.210.27
那么,我就可以根據ip地址在wireshark上進行分析了
(ip.src==172.16.86.71 and ip.dst_host==115.239.210.27) or (ip.src==115.239.210.27 and ip.dst_host==172.16.86.71)
如下圖所示:
3.3 分析過程
通過上面的報文我們可以看到本地機器(172.16.86.71)與百度先進行了tcp協議的交互,然后TLSv 1.2,然后tcp和TLSv 1.2交互。
3.3.1 tcp的三次握手
第一次握手報文,從客戶端到服務器端
第二次握手,從服務器端到客戶端
第三次握手,從客戶端到服務器端
總結,從上面的分析,可以看出
序號123,124,125是一個握手過程
序號122,126,127是一個握手過程。
3.3.2 https
- TLS概述:TLS和他的前身SSL,都是提供在計算機網絡上安全通信的密碼學協議,最常見就是用於HTTPS中,用來保護Web通信的。
- 發展史:網景公司開發了原始的SSL協議,SSL 1.0因為本身存在着嚴重的安全問題,所以從未被公開發布。只有SSL 2.0和SSL 3.0是被公開發布和使用的。后來為了對SSL進行標准化,推出了TLS,TLS 1.0就對應着SSL 3.0。TLS后來又有了1.1版本和1.2版本,1.3版本目前還在草案中。現在除了TLS 1.2和TLS 1.3草案之外,所有早期的協議都存在安全性問題,不建議使用。
https交互流程,如下圖所示
第一階段
1.client hello
tcp響應
2.服務端
3.Change Cipher Spec
客戶端tcp響應
4.Encrypted Handshake Message
客戶端發送請求
5.傳送數據
6.關閉瀏覽器退出傳送數據
3.3.3 4次揮手
1.第一次揮手
2.第二次揮手
3. 第三次揮手
4.第四次揮手
總結:第三次揮手和第四次揮手之間seq和ack倒置了。
參考資料
【1】https://segmentfault.com/a/1190000014740303?utm_source=tag-newest