打开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

【2】https://mp.weixin.qq.com/s?__biz=MzI3NzE0NjcwMg==&mid=2650123669&idx=1&sn=55743603e490373474be439cb35430ae&chksm=f36bb0b4c41c39a2cfb36d4e362b932a7dcee682a26b78570050ee5860a14be5e021155a7bfe&scene=27#wechat_redirect

【3】https://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247486411&idx=2&sn=18f4245ae36c37ccd8d261114f4a453b&chksm=fa49747acd3efd6cddee211efa6cb695a69776cc780aa41d64096958859307b9e5850edbf574&scene=27#wechat_redirect

访问了一次百度网页,你都经历了什么?https及tcp协议揭秘的更多相关文章

  1. ueditor富文本编辑器使用百度地图自定义动态地图组件及兼容https及http协议

    ueditor富文本编辑器默认支持百度地图组件,但是如果导入动态地图后会加很多默认的地图组件在上面.如果需要自定义动态地图的组件则需要修改ueditor特定的html. ueditor百度地图组件所在 ...

  2. paip.点击每个网页链接都提示下载的解决。

    paip.点击每个网页链接都提示下载的解决.   作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn. ...

  3. 百度网页搜索部来自Console的招聘信息

    百度网页搜索部来自Console的招聘信息,小伙伴们,你发现了吗?

  4. Android 仿百度网页音乐播放器圆形图片转圈播放效果

    百度网页音乐播放器的效果  如下 : http://www.baidu.com/baidu?word=%E4%B8%80%E7%9B%B4%E5%BE%88%E5%AE%89%E9%9D%99& ...

  5. 一次完整的HTTP事务的过程、从输入URL到网页展示,浏览器都经历了什么?

    详细介绍:老生常谈-从输入url到页面展示到底发生了什么 (1)一次完整的HTTP事务的过程 基本流程: a. 域名解析 b. 发起TCP的3次握手 c. 建立TCP连接后发起http请求 d. 服务 ...

  6. 前端回答从输入URL到页面展示都经历了些什么

    浏览器和服务器涉及大量网络通信内容,此处做了弱化介绍,作为前端主要关注第四部分.一. 网络环境保障我们先假定我们访问的URL为www.abc.com并且地址不在局域网内:首先我们所处的局域网的总路由应 ...

  7. 一个页面从输入url到页面加载显示完成,中间都经历了什么

    第一种解释: 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作. 3 ...

  8. 2018年,JavaScript都经历了什么?

    摘要: 对JSer来说,这是很有意思的1年. 本文灵感来自JavaScript Weekly周报,欢迎大家订阅. The State of JavaScript 2018 The State of J ...

  9. django从请求到返回都经历了什么[转]

    原文地址:http://projectsedu.com/2016/10/17/django从请求到返回都经历了什么/ 从runserver说起 ruserver是使用django自己的web serv ...

随机推荐

  1. 用Python写WebService接口并且调用

    一.用ladon框架封装Python为Webservice接口 另用soaplib实现请看:    http://www.jianshu.com/p/ad3c27d2a946 功能实现的同时,希望将接 ...

  2. config.go 源码阅读

    package main import (     "io/ioutil"     "launchpad.net/goyaml" ) // ProxyConfi ...

  3. mysql binlog格式

    Binlog Event 对于一个 Binlog Event 来说,它分为三个部分,header,post-header 以及 payload.MySQL 的 Binlog Event 有很多版本,我 ...

  4. bzoj 3166 可持久化Tire

    每一个数能做出的贡献就是其两端第二个比他大的中间的数和他的异或值 按权值大小排序,按照位置扔进set,set内的元素都是比他大的,也是全的 然后Tire上跑就行了.. #include<cstd ...

  5. noip 2015 斗地主 大爆搜!!!

    反正肯定是大模拟 但是每一个可以出的牌都搜一定不是最优的 考虑最特殊的出牌方案:顺子(单,对,三) 每一种方案再加上暴力贪心打出剩下的牌的步数 #include<cstdio> #incl ...

  6. BZOJ_4516_[Sdoi2016]生成魔咒_后缀数组+ST表+splay

    BZOJ_4516_[Sdoi2016]生成魔咒_后缀数组+ST表+splay Description 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一个魔 ...

  7. HTTP 和 WebSocket的区别

    有关http和WebSocket 的区别网上有很多的质料. 个人在此仅仅是记录以下自己的学习心得,自己的理解. 1. http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要 ...

  8. MySQL-5.6.36-部署安装(编译版)

    1.系统环境(本站使用centos6.8_x64) [root@centos ~]# cat /etc/redhat-release CentOS release 6.8 (Final) 2.yum安 ...

  9. uiautomator——简单的将自动化测试与截图对比相结合使用的小例子!

    1.在使用uiautomator进行自动化测试过程当中,执行某些动作之后,要进行判断是否已执行的动作成功时,需要添加检查点来判断,因此添加判断点除了使用id.text.view等方式进行之外,存在一种 ...

  10. Tensorflow源码解析1 -- 内核架构和源码结构

    1 主流深度学习框架对比 当今的软件开发基本都是分层化和模块化的,应用层开发会基于框架层.比如开发Linux Driver会基于Linux kernel,开发Android app会基于Android ...