一次HTTPS请求的过程

1. 一个问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7q5fSXJ6-1574595004584)(./resources/image/01/01-1.png)]

在浏览器中敲入这样的一个url,回车后,到底发生了什么?

整个过程可以大致分为下面几个子过程:

  1. DNS解析得到IP地址
  2. 与服务器进行TCP连接
  3. 建立SSL会话
  4. 发送与收取数据
  5. TCP连接断开

HTTPS协议发生在端口443,HTTP发生在80

如果是HTTP协议请求,就没有第3步

HTTPS协议 = HTTP协议 + SSL协议
HTTPS协议 = HTTP协议 + 认证 + 加密 + 完整性保护

注:上述部分过程我在其他博文中有详细分析可以直接点击取跳转,在此分析的并不多,其中发送与收取数据,涉及到具体的HTTP协议内容,这个对于软件开发人员来说很重要,会在接下来将会写的博文中逐渐显现。

2. DNS解析

访问目标地址的方式:

  1. 使用目标IP,这个时候是不需要使用DNS解析的
  2. 使用域名,需要使用DNS解析为IP

DNS解析使用的是UDP协议,端口53

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t2RsOFME-1574595004587)(./resources/image/01/01-2.png)]

以Chrome浏览器为例,Chrome会解析域名对应的IP地址。

(1)Chrome浏览器会首先搜索浏览器自身的DNS缓存,浏览器自身的DNS缓存有效期比较短,且容纳有限,大概是1000条。如果自身的缓存中存在,对应的IP地址并且没有过期,则解析成功。

(2)如果(1)中未找到,那么Chrome会搜索操作系统自身的DNS缓存(可以在命令行下使用 ipconfig /displaydns 查看)。如果找到且没有过期则成功。

(3)如果(2)中未找到,那么尝试读取位于C:\Windows\System32\drivers\etc下的hosts文件,如果找到对应的IP地址则解析成功。

(4)如果(3)中未找到,浏览器首先会找TCP/IP参数中设置的本地DNS服务器,如果要查询的域名包含在本地配置的区域资源中,则完成域名解析,否则根据本地DNS服务器会请求根DNS服务器。

(5)本地DNS会把请求发至13台根DNS,根DNS服务器收到请求后会返回负责这个域名(.com)的服务器的一个IP,本地DNS服务器使用该IP信息联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,会返回.com域的下一级DNS服务器地址给本地DNS服务器。以此类推,直至找到。

注:参考 https://www.cnblogs.com/amingxiansen/p/9072115.html

3. SSL会话建立

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kJlqiIKt-1574595004589)(./resources/image/01/01-3.png)]

在最开始第三方被信任的证书版本机构CA将会为服务器颁布证书,当然是不免费的,浏览器会内置CA版本的公钥

图片的中的具体过程前跳转

图片来自https://www.jianshu.com/p/2a18578e3610

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值