输入‘域名’在浏览器的完整过程,HTTP和HTTPS请求

面试高频问题之浏览器搜索域名经历的过程

输入www.baidu.com在浏览器的完整过程,越详细越好HTTP请求:
输入‘域名’在浏览器的完整过程,HTTP和HTTPS请求

  1. 浏览器获取输入的域名www.baidu.com
  2. 浏览器向域名系统DNS请求解析www.baidu.com的IP地址
  3. DNS解析出百度服务器的IP地址
  4. 浏览器与服务器建立TCP链接(默认端口80、 TCP三次握手)
  5. 浏览器发出HTTP请求,请求百度首页(请求方式有:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH)
  6. 服务器通过HTTP请求把首页文件发送给浏览器
  7. TCP链接释放
  8. 浏览器解析首页文件,展示web界面

经过一次网络爬虫实践后,发现http请求及其不安全,同时也被绝大多数的网站所摒弃。都采用HTPPS服务请求。
HTTPS加密详细过程:https://blog.csdn.net/qq_38291480/article/details/107593865
输入‘域名’在浏览器的完整过程,HTTP和HTTPS请求
上图是一次HTTPS的请求流程图。其中HTTPS=HTTP+SSL/TLS,其整体流程图如下所示
输入‘域名’在浏览器的完整过程,HTTP和HTTPS请求

  1. 浏览器获取输入的域名www.baidu.com
  2. 浏览器向域名系统DNS请求www.baidu.com的IP地址
  3. DNS解析出百度服务器的IP地址
  4. 浏览器发起往服务器的443端口发送请求,请求携带了浏览器支持的加密算法和哈希算法(第一次请求)
  5. 服务器收到请求,选择浏览器支持的加密算法和哈希算法
  6. 服务器下将数字证书返回给浏览器,这里的数字证书可以是向某个可靠机构申请的(请求返回)
  7. 浏览器进入数字证书认证环节,这一部分是浏览器内置的TSL完成的,先公钥解密,用签名规则对网站进行进行本地签证申请,两相对比。若成功则安全使用公钥。
  8. 随机生成**R
  9. 用公钥加***R发送给服务器 (第二次请求)
  10. 服务器用私钥解密,获取**R
  11. 使用R加密网页发送给浏览器
  12. 浏览器解密R获取网页内容