输入‘域名’在浏览器的完整过程,HTTP和HTTPS请求
面试高频问题之浏览器搜索域名经历的过程
输入www.baidu.com在浏览器的完整过程,越详细越好HTTP请求:
- 浏览器获取输入的域名www.baidu.com
- 浏览器向域名系统DNS请求解析www.baidu.com的IP地址
- DNS解析出百度服务器的IP地址
- 浏览器与服务器建立TCP链接(默认端口80、 TCP三次握手)
- 浏览器发出HTTP请求,请求百度首页(请求方式有:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH)
- 服务器通过HTTP请求把首页文件发送给浏览器
- TCP链接释放
- 浏览器解析首页文件,展示web界面
经过一次网络爬虫实践后,发现http请求及其不安全,同时也被绝大多数的网站所摒弃。都采用HTPPS服务请求。
HTTPS加密详细过程:https://blog.csdn.net/qq_38291480/article/details/107593865
上图是一次HTTPS的请求流程图。其中HTTPS=HTTP+SSL/TLS
,其整体流程图如下所示
- 浏览器获取输入的域名www.baidu.com
- 浏览器向域名系统DNS请求www.baidu.com的IP地址
- DNS解析出百度服务器的IP地址
- 浏览器发起往服务器的443端口发送请求,请求携带了浏览器支持的加密算法和哈希算法(第一次请求)
- 服务器收到请求,选择浏览器支持的加密算法和哈希算法
- 服务器下将数字证书返回给浏览器,这里的数字证书可以是向某个可靠机构申请的(请求返回)
- 浏览器进入数字证书认证环节,这一部分是浏览器内置的TSL完成的,先公钥解密,用签名规则对网站进行进行本地签证申请,两相对比。若成功则安全使用公钥。
- 随机生成**R
- 用公钥加***R发送给服务器 (第二次请求)
- 服务器用私钥解密,获取**R
- 使用R加密网页发送给浏览器
- 浏览器解密R获取网页内容