从输入url到页面加载完成的过程中都发生了什么

NatChen NatChen     2022-08-24     230

关键词:

根据 URL 请求页面过程

过程概述

  1. 浏览器查找域名对应的 IP 地址;

  2. 浏览器根据 IP 地址与服务器建立 socket 连接;

  3. 浏览器与服务器通信: 浏览器请求,服务器处理请求;

  4. 浏览器与服务器断开连接。

天啦撸,结束了?也太简单了吧。。。各位看官,不急,都说了是概述,且向下看。

根据域名查找 IP 地址

概念解释

  • IP 地址:IP 协议为互联网上的每一个网络和每一台主机分配的一个逻辑地址。IP 地址如同门牌号码,通过 IP 地址才能确定一台主机位置。服务器本质也是一台主机,想要访问某个服务器,必须先知道它的 IP 地址;

  • 域名( DN ):IP 地址由四个数字组成,中间用点号连接,在使用过程中难记忆且易输入错误,所以用我们熟悉的字母和数字组合来代替纯数字的 IP 地址,比如我们只会记住 www.baidu.com(百度域名) 而不是 220.181.112.244(百度的其中一个 IP 地址);

  • DNS: 每个域名都对应一个或多个提供相同服务服务器的 IP 地址,只有知道服务器 IP 地址才能建立连接,所以需要通过 DNS 把域名解析成一个 IP 地址。

知道了上面的概念,大概就知道了想要获得服务器的门牌号码,需要先将域名转换成 IP 地址。转换过程如下(以查询 www.baidu.com 的 IP 地址为例,其中2、3、4步均在上一步未查询成功的情况下进行):

查找过程

  1. 浏览器搜索自己的 DNS 缓存(维护一张域名与 IP 地址的对应表);

  2. 搜索操作系统中的 DNS 缓存(维护一张域名与 IP 地址的对应表);

  3. 搜索操作系统的 hosts 文件( Windows 环境下,维护一张域名与 IP 地址的对应表);

  4. 操作系统将域名发送至 LDNS(本地区域名服务器,如果你在学校接入互联网,则 LDNS 服务器就在学校,如果通过电信接入互联网,则 LDNS 服务器就在你当地的电信那里。)LDNS 查询 自己的 DNS 缓存(一般查找成功率在 80% 左右),查找成功则返回结果,失败则发起一个迭代 DNS 解析请求;

    1. LDNS 向 Root Name Server (根域名服务器,其虽然没有每个域名的的具体信息,但存储了负责每个域,如 com、net、org等的解析的顶级域名服务器的地址)发起请求,此处,Root Name Server 返回 com 域的顶级域名服务器的地址;

    2. LDNS 向 com 域的顶级域名服务器发起请求,返回 baidu.com 域名服务器地址;

    3. LDNS 向 baidu.com 域名服务器发起请求,得到 www.baidu.com 的 IP 地址;

  5. LDNS 将得到的 IP 地址返回给操作系统,同时自己也将 IP 地址缓存起来;

  6. 操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来;

  7. 至此,浏览器已经得到了域名对应的 IP 地址。

补充说明

  • 域名与 URL 是两个概念:域名是一台或一组服务器的名称,用来确定服务器在 Internet 上的位置;URL 是统一资源定位符,用来确定某一个文件的具体位置,例如,segmentfault.com 是 SF 的域名,根据这个域名可以找到 SF 的服务器, segmentfault.com/a/1190000003829539 是 URL ,可以根据这个 URL 定位我写的第一篇博客;

  • IP 地址与域名不是一一对应的关系:可以把多个提供相同服务的服务器 IP 设置为同一个域名,但在同一时刻一个域名只能解析出一个 IP地址;同时,一个 IP 地址可以绑定多个域名,数量不限;

建立连接--三次握手

知道了服务器的 IP 地址,下面便开始与服务器建立连接了。

通俗地讲,通信连接的建立需要经历以下三个过程:

  1. 主机向服务器发送一个建立连接的请求( 您好,我想认识您 );

  2. 服务器接到请求后发送同意连接的信号( 好的,很高兴认识您 );

  3. 主机接到同意连接的信号后,再次向服务器发送了确认信号( 我也很高兴认识您 ),自此,主机与服务器两者建立了连接。

补充说明

  • TCP 协议:三次握手的过程采用 TCP 协议,其可以保证信息传输的可靠性,三次握手过程中,若一方收不到确认信号,协议会要求重新发送信号。

网页请求与显示

当服务器与主机建立了连接之后,下面主机便与服务器进行通信。网页请求是一个单向请求的过程,即是一个主机向服务器请求数据,服务器返回相应的数据的过程。

  1. 浏览器根据 URL 内容生成 HTTP 请求,请求中包含请求文件的位置、请求文件的方式等等;

  2. 服务器接到请求后,会根据 HTTP 请求中的内容来决定如何获取相应的 HTML 文件;

  3. 服务器将得到的 HTML 文件发送给浏览器;

  4. 在浏览器还没有完全接收 HTML 文件时便开始渲染、显示网页;

  5. 在执行 HTML 中代码时,根据需要,浏览器会继续请求图片、CSS、JavsScript等文件,过程同请求 HTML ;

断开连接--四次挥手

  1. 主机向服务器发送一个断开连接的请求( 不早了,我该走了 );

  2. 服务器接到请求后发送确认收到请求的信号( 知道了 );

  3. 服务器向主机发送断开通知( 我也该走了 );

  4. 主机接到断开通知后断开连接并反馈一个确认信号( 嗯,好的 ),服务器收到确认信号后断开连接;

补充说明

  • 为什么服务器在接到断开请求时不立即同意断开:当服务器收到断开连接的请求时,可能仍然有数据未发送完毕,所有服务器先发送确认信号,等所有数据发送完毕后再同意断开。

  • 第四次握手后,主机发送确认信号后并没有立即断开连接,而是等待了 2 个报文传送周期,原因是:如果第四次握手的确认信息丢失,服务器将会重新发送第三次握手的断开连接的信号,而服务器发觉丢包与重新发送的断开连接到达主机的时间正好为 2 个报文传输周期。

性能分析从开始输入url到页面加载完成的过程中都发生了什么事情?

【稍后更新】第一个问题:从输入URL到浏览器接收的过程中发生了什么事情? 第二个问题:浏览器如何向网卡发送数据? 第三个问题:数据如何从本机网卡发送到服务器? 第四个问题:服务器接收到数据后会进行哪... 查看详情

从输入url到页面加载完成的过程中都发生了什么

根据URL请求页面过程过程概述浏览器查找域名对应的IP地址;浏览器根据IP地址与服务器建立socket连接;浏览器与服务器通信:浏览器请求,服务器处理请求;浏览器与服务器断开连接。天啦撸,结束了?也太简单了吧。。。各... 查看详情

一个页面从输入url到页面加载显示完成,这个过程中都发生了什么?

<divstyle="background:#ff6a00;color:#0;font-size:small;">   <p>           作者:        查看详情

一个网页从输入url到页面加载完成的过程中都发生了什么事情?

...一般会经历以下几个过程:1、首先,在浏览器地址栏中输入url2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。3、在发送http请求前,需要域名解析... 查看详情

爱创课堂每日一题第五十七天-一个页面从输入url到页面加载显示完成,这个过程中都发生了什么?

分为4个步骤:    (1),当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询。这能使浏览器获得请求对... 查看详情

从输入url到页面加载显示完成的过程

前言:“一个页面从输入URL到页面加载显示完成,这个过程中都发生了什么?”这个问题我想大多数人都不会陌生,好像是前端面试题经常会出现的,在此我也好好梳理梳理了一番,总结成这篇文章,希望能对和我一样在前端道... 查看详情

一个页面从输入url到页面加载完的过程中都发生了什么事情?

过程概述浏览器查找域名对应的IP地址;浏览器根据IP地址与服务器建立socket连接;浏览器与服务器通信:浏览器请求,服务器处理请求;浏览器与服务器断开连接。以下为详细解析:根据域名查找IP地址概念解释IP地址:IP协议为... 查看详情

从输入url到页面加载完成的过程中都发生了什么事情?

解析URL当你在浏览器中输入URL并敲回车之后,浏览器会把URL分成几部分:1、协议:从计算机获取资源的方式,常见的HTTP、FTP等2、网络地址:域名或者IP,指示网络中的哪一台计算机3、资源路径:指示在该计算机上获取哪一个资... 查看详情

一个页面从输入url到页面加载显示完成,这个过程中发生了什么?

1.浏览器通过DNS查找域名对应的IP地址(DNS查询:浏览器缓存-->系统缓存-->路由器缓存-->ISPDNS缓存-->根域名服务器)2.浏览器向Web服务器发送一个HTTP请求(TCP三次握手)3.服务器301重定向(从http://example.com重定向到http://ww... 查看详情

面试题系列---一个页面从输入url到页面加载显示完成,这个过程都发生什么?

一个页面从输入URL到页面加载显示完成,这个过程都发生什么?1.在浏览器中输入url2.浏览器访问dns服务器,根据域名查找对应的ip3.通过ip找到服务器,建立tcp连接4.发送http请求5.后端服务器接收请求,处理后响应给浏览器6.浏览... 查看详情

从输入url到页面加载发生了什么

...蛮适合我。原文链接https://segmentfault.com/a/1190000006879700从输入URL到页面加载发生了什么最近在进行前端面试方面的一些准备,看了网上许多相关的文章,发现有一个问题始终绕不开:在浏览器中输入URL到整个页面显示在用户面前时... 查看详情

从输入url到页面加载发生了什么

从输入URL到页面加载发生了什么转自:https://segmentfault.com/a/1190000006879700作者写得很不错,作者忽略了的,我加了上去,完善了一些,如get与post的区别等总体来说分为以下几个过程:DNS解析TCP连接发送HTTP请求服务器处理请求并返... 查看详情

一个页面从输入url到加载显示完成,发生了什么?

面试经典题——URL加载一、涉及基本知识点:1.计算机网络五层因特尔协议栈:应用层(dns、http):DNS解析成IP并完成http请求发送;传输层(tcp、udp):三次握手四次挥手模式建立tcp连接;网络层(IP、ARP):IP寻址;数据链路... 查看详情

从输入一个url到加载页面发生了什么?

  惭愧了,很久之前被面试的时候也有面试官问了我这个问题,但是当时回答的很不满意,于是回头看了很多资料,现在也整理一下。  大致可总结为以下几个步骤:  1.DNS解析。  2.TCP链接。  3.发送HTTP请求。  4.... 查看详情

从输入url到页面加载发生了什么

一、从输入URL到页面加载发生了什么1、在浏览器中输入URL如:https://www.cnblogs.com/loveapple/URL分成协议、地址、路径三部分协议:http、https、ftp地址:www.cnblogs.com、localhost:4000路径:/loveapple/2、通过DNS解析获得对应的IP地址DNS作用:... 查看详情

经典面试题:一个页面从输入url到加载显示完成,发生了什么?(转)

一、涉及基本知识点:1.计算机网络五层因特尔协议栈:应用层(dns、http):DNS解析成IP并完成http请求发送;传输层(tcp、udp):三次握手四次挥手模式建立tcp连接;网络层(IP、ARP):IP寻址;数据链路层(PPP):将请求数据... 查看详情

从浏览器输入url到页面加载完成都发生了什么

一个http请求的过程简要介绍一下一个http请求的网络传输过程:DNSLookup先获得URL对应的IP地址SocketConnect浏览器和服务器建立TCP连接SendRequest浏览器发送HTTP请求ContentDownload服务器发送响应接下来讲讲这里存在的性能问题:如果你对D... 查看详情

一个页面从输入url到加载完成,发生什么事

1、浏览器会开启一个线程来处理这个请求,对URL分析判断如果是http协议就按照Web方式来处理;2、调用浏览器内核中的对应方法,比如WebView中的loadUrl方法;3、通过DNS解析获取网址的IP地址,设置UA等信息发出第二个GET请求;4、... 查看详情