1. 一个问题
在浏览器中敲入这样的一个url,回车后,到底发生了什么?
整个过程可以大致分为下面几个子过程:
- DNS解析得到IP地址
- 与服务器进行TCP连接
- 建立SSL会话
- 发送与收取数据
- TCP连接断开
HTTPS协议发生在端口443,HTTP发生在80
如果是HTTP协议请求,就没有第3步
HTTPS协议 = HTTP协议 + SSL协议
HTTPS协议 = HTTP协议 + 认证 + 加密 + 完整性保护
注:上述部分过程我在其他博文中有详细分析可以直接点击取跳转,在此分析的并不多,其中发送与收取数据,涉及到具体的HTTP协议内容,这个对于软件开发人员来说很重要,会在接下来将会写的博文中逐渐显现。
2. DNS解析
访问目标地址的方式:
- 使用目标IP,这个时候是不需要使用DNS解析的
- 使用域名,需要使用DNS解析为IP
DNS解析使用的是UDP协议,端口53
以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会话建立
在最开始第三方被信任的证书版本机构CA将会为服务器颁布证书,当然是不免费的,浏览器会内置CA版本的公钥
图片的中的具体过程前跳转