在浏览器地址栏输入URL之后发生了什么?

在浏览器地址栏输入URL之后发生了什么?eg:www.baidu.com

  •  URL解析
  1. 地址解析:首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。
  2. https:由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面。
  3. 其它操作:浏览器还会进行一些额外的操作,比如安全检查、访问限制(之前国产浏览器限制 996.icu)。
  • 解析域名(DNS解析)
  1. 将输入域名解析成IP地址,具体步骤:
  2. 先查找浏览器缓存(即浏览器里的书签和历史记录),如果有就直接推给你
  3. 查找系统缓存(即本地hosts文件),如果hosts文件中有指定IP就解析这个IP地址
  4. 查找本地DNS服务器。本地DNS服务器会先查找缓存,如果缓存中存在就返回IP,如果没有本地DNS就向根DNS服务器发起请求。
  5. 根DNS服务器不会存储域名和IP的对应关系,而是告诉本地DNS可以去.com域服务器上查询,而且会给.com出域服务器的地址。
  6. 域服务器上同样也不会存储域名和IP的对应关系,而是告诉本地DNS可以去域名解析服务器上查询,会给出域名解析服务器的地址。
  7. 最后,本地DNS想域名解析服务器发起请求,最终就会得到该域名对应的IP地址。本地DNS在获取到IP地址之后,不光会返回到浏览器里,还会保存在缓存中,下次就可以直接在缓存中读取。

  扩展:DNS劫持

  • 建立TCP链接
  1. 三次握手建立链接,即客户端发送链接请求,服务端收到请求后返回给客户端,最后客户端在回传一个数据给服务端。三次握手之所以要链接三次,就是为了保证客户端和服务端既能保证自己能正常发送消息,又能确保对方能正常收到信息。

   如图所示:

   

   客户端发送一个带有SYN标志的数据包给服务端,服务端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息,最后客户端再回传一个带ACK标志的数据包,代表握手结束,连接成功。

通俗点理解三次握手:

   客户端:老弟我要跟你链接

   服务端:好的,同意了

   客户端:好嘞

  • 浏览器想web服务器发起http请求

   建立TCP连接之后,发起HTTP请求,请求一般分为三部分

   请求方法URI协议/版本

   请求头(Request Header)

      请求正文

   下面是完整的请求示意图:

   

    扩展:HTTPS请求

  • 服务器端处理

   服务器端收到请求后的由web服务器(准确说应该是http服务器)处理请求,诸如Apache、Ngnix、IIS等。web服务器解析用户请求,知道了需要调度哪些资源文件,再通过相应的这些资源文件处理用户请求和参数,并调用数据库信息,最后将结果通过web服务器返回给浏览器客户端。

   如图所示:

   

  • 关闭TCP链接

   为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求。与创建TCP连接的3次握手类似,关闭TCP连接,需要4次握手。

   

   通俗点理解四次握手:

   客户端:老弟,我这边没数据要传了,咱们关闭链接吧

   服务端:好的,接收到了,我看看我这边还有没有要传的

   服务端:我这边也没有了,关闭吧

   客户端:好嘞

  • 浏览器解析资源

   对于获取到的HTML、CSS、JS、图片等等资源。

   浏览器通过解析HTML,生成DOM树,解析CSS,生成CSS规则树,然后通过DOM树和CSS规则树生成渲染树。渲染树与DOM树不同,渲染树中并没有head、display为none等不必显示的节点。

   在解析CSS的同时,可以继续加载解析HTML,但在解析执行JS脚本时,会停止解析后续HTML,这就会出现阻塞问题,关于JS阻塞相关问题,这里不过多阐述。

   

  •  浏览器布局渲染

   根据渲染树布局,计算CSS样式,即每个节点在页面中的大小和位置等几何信息。

   HTML默认是流式布局的,CSS和js会打破这种布局,改变DOM的外观样式以及大小和位置。这时就要提到两个重要概念:repaint和reflow。

   repaint:屏幕的一部分重画,不影响整体布局,比如某个CSS的背景色变了,但元素的几何尺寸和位置不变。

   eflow: 意味着元件的几何尺寸变了,我们需要重新验证并计算渲染树。是渲染树的一部分或全部发生了变化。这就是Reflow,或是Layout。

   有些情况下,比如修改了元素的样式,浏览器并不会立刻 reflow 或 repaint 一次,而是会把这样的操作积攒一批,然后做一次 reflow,这又叫异步 reflow 或增量异步 reflow。

   有些情况下,比如 resize 窗口,改变了页面默认的字体等。对于这些操作,浏览器会马上进行 reflow。

   此答案参考文章:https://www.cnblogs.com/yuanzhiguo/p/8119470.html

 

### 回答1: 1. 用户在浏览器地址栏输入URL。 2. 浏览器URL发送给DNS服务器,以获取域名的IP地址。 3. DNS服务器返回IP地址给浏览器。 4. 浏览器使用HTTP协议向服务器发送请求。 5. 服务器接收请求并返回响应。 6. 浏览器接收响应并解析HTML代码。 7. 浏览器根据HTML代码渲染页面。 8. 页面加载完成后,浏览器执行JavaScript代码。 9. 页面加载完成后,浏览器发送异步请求,如AJAX请求,以获取更多数据。 10. 页面加载完成后,浏览器将页面缓存起来,以便下次访问时更快地加载。 ### 回答2: 亲爱的用户,首先让我来解答你的问题。从浏览器地址栏输入URL到显示页面的步骤大致可以分为以下几步: 1. 域名解析 当你在浏览器输入网址时,首先浏览器通过网络调用DNS域名解析服务,将域名解析为一个IP地址,这个IP地址是服务器的地址。 2. 发送HTTP请求 浏览器收到页面的URL和服务器的IP地址后,向服务器发送一个HTTP请求。这个请求包含请求方法(GET、POST、PUT等)、请求头、请求体等信息。 3. 服务器处理请求 在收到浏览器发送的HTTP请求之后,服务器根据请求的内容,来进行相应的处理。服务器解析请求并查找出被请求的资源文件。 4. 服务器响应 服务器在处理完请求后,将处理结果发送给浏览器。响应包括状态码、响应头和响应体。状态码表示请求的状态,200表示请求成功,404表示请求的资源未找到等。 5. 浏览器解析渲染页面 浏览器在收到服务器响应后,根据响应的类型来进行相应的处理。如果服务器响应的是HTML文件,浏览器对HTML文件进行解析,并根据CSS、JavaScript等文件来进行页面的渲染和呈现。 最终,页面就浏览器呈现给用户。整个过程虽然简单,但其的原理和技术却十分复杂,需要浏览器、服务器、DNS等多个系统协同合作,才能最终实现我们常见的网络请求和数据传输。 ### 回答3: 当用户在浏览器地址栏输入URL并回车后,开始URL解析和页面加载的一系列过程。这个过程涉及到多个步骤,可以简述为以下几个步骤: 1. DNS解析:浏览器首先发送一个DNS请求到本地DNS服务器,请求其解析URL对应的IP地址。如果本地DNS服务器没有缓存该域名对应的IP地址,则向根域名服务器发送请求,依次查询该域名的顶级域名服务器以及该域名的授权域名服务器,直到找到该域名对应的IP地址,然后再将IP地址返回给浏览器。 2. TCP连接:浏览器通过IP地址连接到服务器上,通过TCP协议进行可靠的连接。 3. 发送HTTP请求:在TCP连接建立后,浏览器向服务器发送HTTP请求。请求包含请求类型(GET、POST等)、请求路径、请求头(浏览器信息、语言、Cookie等)和请求体(POST请求携带的表单数据)。 4. 服务器处理请求并返回HTTP响应:服务器接收到请求后进行处理,处理完后返回HTTP响应。响应包含状态码、响应头和响应体(HTML、CSS、JavaScript等文件)。 5. 浏览器解析HTML并构建DOM树:浏览器收到响应后,将响应体的HTML代码解析,构建成DOM树,DOM树用于描述HTML文档的结构和内容。 6. 浏览器解析CSS并构建CSSOM树:浏览器解析响应体的CSS代码,构建CSSOM树,CSSOM树用于描述HTML元素的样式。 7. 渲染页面:根据DOM树和CSSOM树,浏览器合并生成渲染树,并进行布局和绘制,最终将渲染结果显示在用户的屏幕上。 以上是从浏览器地址栏输入URL到显示页面的主要步骤。在这个过程,涉及到浏览器、网络、服务器等多个部分协同工作,以便向用户呈现出最终的页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值