打开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)
如下图所示:
![4624570-fdfc0ed87137649b.png](https://i-blog.csdnimg.cn/blog_migrate/d9af95bf57e9448aefb0b27ea3136b19.webp?x-image-process=image/format,png)
3.3 分析过程
通过上面的报文我们可以看到本地机器(172.16.86.71)与百度先进行了tcp协议的交互,然后TLSv 1.2,然后tcp和TLSv 1.2交互。
3.3.1 tcp的三次握手
![4624570-f2ecad9e7c8fba24.png](https://i-blog.csdnimg.cn/blog_migrate/977f4d01169718ccc3266fa76d0de810.webp?x-image-process=image/format,png)
第一次握手报文,从客户端到服务器端
![4624570-3f06ac1b5e6cd752.png](https://i-blog.csdnimg.cn/blog_migrate/ba51c8e183b19a3940b8491fbcdbbdc2.webp?x-image-process=image/format,png)
第二次握手,从服务器端到客户端
![4624570-ca94b935153c55b2.png](https://i-blog.csdnimg.cn/blog_migrate/641b6aa4742d9ab22b45a47afbb71aba.webp?x-image-process=image/format,png)
第三次握手,从客户端到服务器端
![4624570-07cbd73de9514580.png](https://i-blog.csdnimg.cn/blog_migrate/8dbec1c1b340d65df0c8ac1e6b1823a7.webp?x-image-process=image/format,png)
总结,从上面的分析,可以看出
序号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交互流程,如下图所示
![4624570-10cf5cc28f808341.png](https://i-blog.csdnimg.cn/blog_migrate/98b5ef43f60e8746465baf6308205f6b.webp?x-image-process=image/format,png)
第一阶段
1.client hello
![4624570-08f3cec5a4b53b33.png](https://i-blog.csdnimg.cn/blog_migrate/910a81eb2c03f88b6c5e69fd411ebc6f.webp?x-image-process=image/format,png)
tcp响应
![4624570-1dde9d55976a3869.png](https://i-blog.csdnimg.cn/blog_migrate/943732275aec0b3f414834d1b52323d0.webp?x-image-process=image/format,png)
2.服务端
![4624570-b1d8c36ed9fa68ba.png](https://i-blog.csdnimg.cn/blog_migrate/df1da56cb8e355eb0110323d20234af9.webp?x-image-process=image/format,png)
3.Change Cipher Spec
![4624570-c879c17251293fde.png](https://i-blog.csdnimg.cn/blog_migrate/8f25abfc14fe4c06c6fdd06a6fd790c9.webp?x-image-process=image/format,png)
客户端tcp响应
![4624570-bdba0b16357bc155.png](https://i-blog.csdnimg.cn/blog_migrate/e9549329f6bcf306331389e464c43b8b.webp?x-image-process=image/format,png)
4.Encrypted Handshake Message
![4624570-5f856880415d05eb.png](https://i-blog.csdnimg.cn/blog_migrate/d4852a333cf81c3175959854c520fae6.webp?x-image-process=image/format,png)
客户端发送请求
![4624570-cdada303988d71ea.png](https://i-blog.csdnimg.cn/blog_migrate/81e245b5c4f56b4726e635a77bfaf87d.webp?x-image-process=image/format,png)
5.传送数据
![4624570-9035eb878c622be5.png](https://i-blog.csdnimg.cn/blog_migrate/34bcab82d477da5ecba50404be0d8695.webp?x-image-process=image/format,png)
6.关闭浏览器退出传送数据
![4624570-3d746449a7d1edac.png](https://i-blog.csdnimg.cn/blog_migrate/49008ac68cc84e18bea1d8fb0449368c.webp?x-image-process=image/format,png)
3.3.3 4次挥手
![4624570-fff85fca563a519d.png](https://i-blog.csdnimg.cn/blog_migrate/370fe1692f4e4a99905e47e1ffb629eb.webp?x-image-process=image/format,png)
1.第一次挥手
![4624570-dad56cf76ff4269c.png](https://i-blog.csdnimg.cn/blog_migrate/41b36c5de65b7ca967a38b9f0a90a4e4.webp?x-image-process=image/format,png)
2.第二次挥手
![4624570-1e38e693fd93681b.png](https://i-blog.csdnimg.cn/blog_migrate/323072f5323a7bf1830afaaec5a3b24d.webp?x-image-process=image/format,png)
\3. 第三次挥手
![4624570-84667508751a86d3.png](https://i-blog.csdnimg.cn/blog_migrate/53e2c021eec2052a6ead63fa6ab94d9f.webp?x-image-process=image/format,png)
4.第四次挥手
![4624570-74fae07102f3cd25.png](https://i-blog.csdnimg.cn/blog_migrate/1a5ddadc6a4d38c4974c6ed64a4c557f.webp?x-image-process=image/format,png)
总结:第三次挥手和第四次挥手之间seq和ack倒置了。
参考资料
【1】https://segmentfault.com/a/1190000014740303?utm_source=tag-newest
![4624570-7ad1442474a63a1f.gif](https://i-blog.csdnimg.cn/blog_migrate/e91161d487923eec3e64749ba26533e1.webp?x-image-process=image/format,png)