地址栏输入URL到显示页面的过程

前言

从地址栏输入URL到显示页面都发生了什么?这是一道面试经常会考的面试题。那么下面我们就来探讨一下从你输入URL后到响应,都经历了哪些过程。

1、DNS解析

我们在用户PC中使用网页浏览器来访问外部服务器的内容,在网页浏览器的地址栏中输入外部服务器的域名。比如我们输入www.porttest.com,用户PC中的DNS客户端进程会发送一个DNS查询请求报文,其内容为域名www.porttest.com 所对应的IP地址是什么?

DNS 的查询请求报文需要使用运输层的UDP协议封装成UDP用户数据报,其首部中的源端口字段值在短暂端口号49151~65535中挑选一个未被占用的端口号用来表示DNS客户端进程进程,例如49152。目的端口字段的值设置为53,这是DNS服务器端进程所使用的熟知端口号。

在这里插入图片描述

之后用户PC将UDP用户数据报封装在IP数据报中通过以太网发送给DNS服务器。
在这里插入图片描述

DNS 服务器端收到该数据报后,从中解封出UDP用户数据报。

UDP首部中的目的端口号为53,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS查询请求报文,交付给本服务器中的DNS服务器端进程。DNS服务器端进程解析DNS查询请求报文的内容,然后按其要求查找对应的IP地址。

首先,查询请求会先找到本地DNS服务器来查询是否包含IP地址,如果本地DNS无法查询到目标IP地址,就会向根域名服务器发起一个DNS查询。

如果根域名服务器无法告知本地DNS服务器下一步需要访问哪个顶级域名服务器,就会使用递归查询。

如果根域名服务器能够告知DNS 服务器下一步需要访问的顶级域名服务器,就会使用迭代查询。

再由根域名服务器->顶级域名服务器->权威DNS服务器后,由权威服务器告诉本地服务器目标IP地址,再由本地DNS服务器告诉用户需要访问的IP地址。

下图是DNS 服务器层次系统解析域名 y.abc.com的IP地址过程。

在这里插入图片描述

得知目标IP地址之后,DNS服务器会给用户PC发送DNS的响应报文,其内容为域名www.porttest.com 所对应的IP地址是192.168.0.3。

DNS响应报文需要使用运输层的UDP协议封装成UDP用户数据报,其首部中的原端口字段的值设置为熟知端口号53,表明这是DNS 服务器端进程所发送的UDP 用户数据报,目的端口字段的值设置为49152,这是之前用户PC中发送DNS查询请求报文的DNS客户端进程所使用的短暂端口号。
在这里插入图片描述

DNS 服务器之后将UDP用户数据报封装在IP 数据报中,通过以太网发送给用户PC。
在这里插入图片描述

用户PC收到该数据报后,从中解封出UDP用户数据报。UDP首部中的目的端口号为49452,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS的响应报文交付给用户PC中的DNS客户端进程。DNS客户端进程解析DNS响应报文的内容,就可知道自己之前所请求的外部服务器的域名所对应的IP地址为192.168.0.3。
在这里插入图片描述

2、TCP连接

用户PC的浏览器通过 DNS 获取到 Web 服务器真正的 IP 地址后,便向 Web 服务器发起 TCP 连接请求,通过 TCP 三次握手建立好连接后,浏览器便可以将 HTTP 请求数据发送给Web服务器了。
在这里插入图片描述

3、发起HTTP请求

现在用户PC中的HTTP客户端进程可以向Web服务器发送HTTP请求报文了。其内容为首页内容是什么? HTTP请求报文需要使用运输层的TCP协议封装成TCP报文段,其首部中的源端口字段的值在短暂端口号49151~65535中挑选一个未被占用的用来表示HTTP客户端进程。

例如:源端口仍然使用之前用过的49152,目的端口字段的值设置为80,这是HTTP服务器端进程所使用的熟知端口号,之后将TCP报文段封装在数据报中,通过以太网发送给Web服务器。
在这里插入图片描述

4、处理请求

Web服务器收到该数据报后,从中解封出TCP报文段,TCP 首部中的目的端口号为80,,这表明应该将该TCP报文段的数据载荷部分,也就是HTTP请求报文交付给本服务器中的HTTP 服务器端进程。

HTTP服务器端进程解析HTTP请求报文的内容,然后按其要求查找首页内容,之后会给用户PC发送HTTP响应报文,其内容是HTTP 客户端所请求的首页内容。

HTTP 响应报文需要使用运输层的TCP协议封装成TCP报文段,其首部中的源端口号字段的值设置为熟知端口号80,表明这是HTTP服务器端进程所发送的TCP报文段,目的端口字段的值设置为49152,这是之前用户PC中发送HTTP 请求报文的HTTP客户端进程所使用的短暂端口号。
在这里插入图片描述

之后Web服务器将TCP报文段封装在IP数据报文中,通过以太网发送给用户PC。
在这里插入图片描述

5、浏览器渲染

用户PC收到该数据报后,从中解封出TCP报文段。TCP首部中的目的端口号为49152,,这表明应该将该TCP报文段的数据载荷部分,也就是HTTP响应报文交付给用户PC中的HTTP客户端进程,HTTP 客户端进程解析HTTP响应报文的内容,并在网页浏览器中进行显示。
在这里插入图片描述

6、TCP连接断开

最后客户端和服务器通过四次挥手终止 TCP 连接。

在这里插入图片描述

7、总结

我们将上述过程总结成流程图,如下如所示:
在这里插入图片描述

文字总结:

① DNS 解析:当用户输入一个网址并按下回车键的时候,浏览器获得一个域名,而在实际通信过程中,我们需要的是一个 IP
地址,因此我们需要先把域名转换成相应 IP 地址。

② TCP 连接:浏览器通过 DNS 获取到 Web 服务器真正的 IP 地址后,便向 Web 服务器发起 TCP 连接请求,通过 TCP
三次握手建立好连接后,浏览器便可以将 HTTP 请求数据发送给服务器了。

③ 发送 HTTP 请求:浏览器向 Web 服务器发起一个 HTTP 请求,HTTP 协议是建立在 TCP
协议之上的应用层协议,其本质是在建立起的TCP连接中,按照HTTP协议标准发送一个索要网页的请求。在这一过程中,会涉及到负载均衡等操作。

④ 处理请求并返回:服务器获取到客户端的 HTTP 请求后,会根据 HTTP 请求中的内容来决定如何获取相应的文件,并将文件发送给浏览器。

⑤ 浏览器渲染:浏览器根据响应开始显示页面,首先解析 HTML 文件构建 DOM 树,然后解析 CSS
文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。

⑥ 断开连接:客户端和服务器通过四次挥手终止 TCP 连接。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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、付费专栏及课程。

余额充值