• 请说一下浏览器从输入URL 到页面展示这个过程中都经历了什么?你能答出来吗?


    小结:地址栏输入url地址 -> 进行DNS解析 -> 建立TCP连接 -> 发送http/https请求 -> 服务器返回数据 -> 浏览器解析并渲染页面 -> 断开TCP连接

    用户在地址栏输入地址后回车,

    1. 浏览器校验输入信息
      1. 校验是否是合法URL
      2. 合法则校验URL是否完整。如果不完整的话,可能对地址进行猜测,补全前缀或者后缀。
      3. 不合法的话,则会将输入信息作为查询内容使用默认浏览器查询。
    2. 域名DNS解析成IP地址
      1. 检查浏览器缓存和本地hosts文件是否有这个网址记录;
      2. 没有则采用TCP/IP参数设置中的DNS服务器查询。如果查询结果在本地配置资源中,则直接返回解析结果;
      3. 还没有则检查本地DNS服务器是否缓存该网址的记录,有则返回;
      4. 如果还没有,本地DNS服务器发送查询报文到DNS根服务器,返回顶级域服务器地址;然后本地DNS服务器向顶级域服务器发起查询,返回权威域服务器地址;再然后本地DNS服务器向权威域服务器发起查询,拿到ip地址。
    3. 通过TCP三次握手建立TCP连接
    4. 发送HTTP请求。如果使用HTTPS,会在TCP和HTTP中间加一层协议,用于加密与认证。HTTPS采用ssl和tls协议。
      1. SSL协议的作用是认证客户端和服务器,确保数据发送到正确的客户端和服务器,加密数据防止数据中途被窃取,维护数据完整性,确保数据过程中不被改变。
      2. 安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性
    5. 服务响应请求(服务端也会有很多处理。)。
    6. 浏览器并渲染页面。大概是构建HTML dom树,构架CSS dom树,合并两棵树为一棵渲染树,根据渲染树计算每个节点的几何信息,将各个节点渲染到屏幕上。
    7. 断开TCP连接,四次挥手(长连接)。
      在这里插入图片描述
  • 相关阅读:
    《关于我因为flink成为spark源码贡献者这件小事》
    Redis事务管理
    【Docker】docker部署springboot+vue+mysql+nginx前后端分离项目【部署实战篇】
    Vue-配置代理(解决跨域问题)
    通过UDP方式点灯
    C++征途 --- STL中的常用算法(下)
    SpikTransformer
    二叉树习题总结
    运维常用概念
    本地项目推送到gitlab仓库,基本的git命令
  • 原文地址:https://blog.csdn.net/LIZHONGPING00/article/details/126337856