打開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協議的交互過程。本節我們重點查看和百度網站的交互。
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.第二次揮手
- 第三次揮手
4.第四次揮手
總結:第三次揮手和第四次揮手之間seq和ack倒置了。
參考資料
【1】https://segmentfault.com/a/1190000014740303?utm_source=tag-newest