nothing but love

从url到页面发生了什么

从url说起

一个常见的url长这个样子
https://name.com,这是一个常见的使用了ssl加密的网站
但有时你会见到
http://name.com,这是一个没有使用ssl加密的网站
这种样子的url,通常还会被浏览器警告危险
但有时你会见到https://name.com:8080
这是因为https默认使用443端口,http默认使用80端口,当用户直接输入网址时,浏览器便会自动访问相应的默认端口,但如果服务不部署在这些端口,那便需要用户自己在网址后加上 :端口号 了

那么输入url后会发生什么,总的来说是

1.域名解析
2.发起tcp三次握手
3.建立tcp连接后发起http请求
4.服务器响应http请求,浏览器得到html代码
5.浏览器解析html代码,并请求html代码中的资源
6.浏览器对页面进行渲染呈现给用户

具体细节来说

  1. 域名解析(DNS)
    浏览器无法直接识别URL,需要进行域名解析。
    DNS协议通过查询域名对应的IP地址,实现域名到IP的映射。
    解析过程包括浏览器缓存、操作系统缓存、路由缓存以及ISP的DNS服务器。
  2. 发起TCP三次握手
    建立与服务器的TCP连接,确保双方能够可靠通信。
    三次握手涉及到同步客户端和服务端的序列号、确认号以及交换TCP窗口大小信息。
  3. 建立TCP连接后发起HTTP请求
    发送HTTP请求报文,包括请求行、请求头和请求体。
    请求方法有GET、POST、PUT、DELETE等,头部包含附加信息。
  4. 服务器响应HTTP请求,浏览器得到HTML代码
    服务器接收请求后进行处理,返回HTTP响应报文。
    响应报文包括响应行、响应头和响应体,其中HTML代码位于响应体中。
  5. 浏览器解析HTML代码,并请求HTML代码中的资源
    浏览器解析HTML代码,构建DOM树。
    解析CSS,生成CSSOM(CSS Object Model)。
    结合DOM和CSSOM生成RenderTree,进行渲染。
    页面中的其他资源如图片、样式表、脚本等也会被请求。
  6. 浏览器对页面进行渲染呈现给用户
    根据RenderTree计算每个节点的信息,进行页面渲染。
    重绘和回流的概念涉及到页面元素样式的变化,可能触发浏览器的重新渲染和重新布局。
  7. 断开连接(TCP四次挥手)
    数据传输完毕后,进行TCP四次挥手,断开与服务器的连接。

本页的评论功能已关闭