首页 > 试题广场 >

说一下浏览器输入URL发生了什么?

[问答题]
说一下浏览器输入URL发生了什么?
1. url解析:判断是搜索内容还是请求URL 2. 查找本地缓存:如果有缓存直接返回给页面,没有缓存则进入网络请求阶段 3. DNS解析 4. 通过三次握手建立TCP连接 5. 合成请求头信息,发送http请求 6. 处理响应信息 7. 通过四次挥手断开TCP连接 8. 如果响应状态码301,则重定向 9. 浏览器进行页面渲染:1)解析html,生成DOM树;2)根据css计算节点样式,生成stylesheet;3)生成布局树;4)为特定的元素生成独立图层;5)...
发表于 2022-05-10 17:33:51 回复(0)
1、URL解析:判断浏览器输入的是搜索内容还是URL;2、查找缓存:如果能找到缓存则直接返回页面,如果没有缓存则需要发送网络请求页面;3、DNS域名解析;4、三次握手建立TCP连接;5、发起HTTP请求;6、服务器响应并返回结果;7、通过四次握手释放TCP连接;8、浏览器渲染;9、js引擎解析
发表于 2022-05-23 11:25:35 回复(4)
1.解析URL
2.查找缓存
3.DNS解析
4.TCP握手
5.HTTP请求
6.TCP挥手
7.HTML渲染
发表于 2022-06-26 22:57:36 回复(0)
【1、URL解析】:判断浏览器输入的是搜索内容还是URL
【2、查找缓存】:如果能找到缓存则直接返回页面,如果没有缓存则需要发送网络请求页面
【3、DNS域名解析】:将域名转换为IP地址的过程,得到了服务器具体的IP地址,才可以进行TCP链接以及数据的传输。
【4、三次握手建立TCP连接】:
- 第一次握手:客户端主动链接服务器,发送初始序列号seq=x与SYN=1同步请求标志,并进入同步已发送SYN_SENT状态,等待服务器确认。
- 第二次握手:服务端收到消息后发送确认标志ACK=1与同步请求标志SYN=1,发送自己的序列号seq=y以及客户端确认序号ack=x+1,此时服务器进入同步收到SYN_RECV状态。
- 第三次握手:客户端收到消息后发送确认标志ACK=1,发送自己的序列号seq=x+1与服务器确认号ack=y+1,发送过后即确认链接已建立状态ESTABLISHED,服务端接收确认信息后进入链接已建立状态ESTABLISHED。
【5、发起HTTP请求】:浏览器构建HTTP请求报文,并通过TCP协议传送到服务器的指定端口,HTTP请求报文一共有三个部分
- 报文首部,通常包含请求行与各种请求头字段等;
- 空行,告诉服务器请求头部到此为止
- 报文主体,即发送的数据信息,通常并不一定要有报文主体。
【6、服务器响应并返回结果】:服务端响应HTTP请求,返回响应报文,HTTP响应报文由四部分组成:响应行、响应头、空行、响应体。
【7、通过四次握手释放TCP连接】
【8、浏览器渲染】
【9、js引擎解析】
发表于 2023-01-08 13:00:57 回复(0)
1.输入地址,先依次判断浏览器、操作系统、本地文件hosts中是否有有效期内的,与域名相关的DNS缓存,若有则不需要DNS解析,否则DNS解析得出ip地址。 2.浏览器向ip地址指向的web服务器建立TCP链接,判断是否是HTTP缓存,如果是强制缓存且在有效期内,不再向服务器发请求。 3.浏览器向web服务器发送HTTP请求,如果是HTTP协商缓存向后端发送请求且和后端服务器对比,在有效期内,服务器返回304,直接从浏览器获取数据,如果不在有效期内服务器返回200,返回新数据。服务器若返回重定向,则浏览器再按照重定向的地址重新发送请求。 如果请求的参数有问题,服务器端返回404,如果服务器端挂了返回500。 4.断开TCP链接,四次挥手 5.根据返回的数据加载内容,根据HTML文档从上到下的加载,遇到静态资源会去请求相应的静态资源,遇到js脚本文件,如果没有defer 或者async属性,则会被阻塞,待js被加载且执行后才能继续HTML文档的加载。根据加载生成DOM tree 和 stylesheet 6.根据DOM树 和 stylesheet 生成布局树,为布局树分层,为每个图层绘制列表,将图表分成图块,紧接着光栅栏化将图块转化为位图,最后合成绘制页面。
发表于 2022-09-25 22:34:39 回复(0)
①url判断。判断输入的是搜索内容还是url。 ②查找本地缓存。如果能在本地找到缓存直接返回页面,如果没有缓存需要发送网络请求页面。 ③DNS解析:将域名转换为IP地址。 ④通过三次握手建立TCP连接。 ⑤合成请求头信息,发送http请求。 ⑥服务器响应返回结果。 ⑦通过四次挥手释放TCP连接。 ⑧浏览器渲染。 ⑨js引擎解析。
发表于 2022-08-12 12:35:42 回复(0)
用户在浏览器中输入URL后, 1.浏览器要做的第一个工作就是解析URL。DNS的流程:首先查浏览器本地存储;如果没有,就查看host文件;如果没有,就请求本地DNS服务器;本地DNS服务器会代理请求根服务器,根服务器返回顶级域名服务器IP;本地DNS服务器会代理请求顶级域名服务器,顶级域名服务器返回权威服务器IP;本地DNS服务器代理请求权威服务器,权威服务器返回URL对应的IP地址;本地DNS服务器将结果返回给浏览器。浏览器开始封装数据包。 2.浏览器要做的第二个工作就是封装数据包。以应用层HTTP协议为例,HTTP报文;接着进入传输层TCP,在TCP头部加上源port和目的port;接着进入网络层IP,在IP头部加上源IP和目的IP;接着进入数据链路层,在数据链路头部加入源MAC和目的MAC;最后进入物理层,数据包被编码为01进行传输。 3.浏览器要做的第三个工作就是发送数据包。浏览器所在的主机会判断目的IP和源IP是否在同一个网段,如果在,会将数据包发送给局域网的交换机进行传输;如果不在,会将数据包发送给局域网的网关进行传输。网关一般是路由器,路由器会查找路由表将数据包传输给下一个网段,经过多个路由器的传输,数据包最终到达服务器所在网段,并由网络内的交换机下发给服务器。 4.浏览器要做的第四个工作就是解析页面。服务器接收请求数据包后,会返回页面资源给浏览器。经历过同样的网络传输后,浏览器拿到页面资源并开始解析。首先解析HTML代码生成DOM树,同时获取html文件引用的css文件;再解析css文件生成CSSOM树;解析完DOM树后,会解析获取到的JS文件对DOM树和CSS树进行修改;最后将DOM树和CSS树结合生成render树;接着对render树上的元素进行布局;布局后对元素进行绘制;最后解析图片及视频文件,呈现最终的页面。
编辑于 2022-08-18 11:21:32 回复(0)
我看很多人的答案, 都是四次挥手断开TCP连接了之后, 才开始渲染页面, 这个不太对啊
发表于 2024-04-14 18:17:46 回复(1)
1、URL解析:判断浏览器输入的是搜索内容还是URL;
2、查找缓存:如果能找到缓存则直接返回页面,如果没有缓存则需要发送网络请求页面;
3、DNS域名解析;
4、三次握手建立TCP连接;
5、发起HTTP请求;
6、服务器响应并返回结果;
7、通过四次握手释放TCP连接;
8、浏览器渲染;
9、js引擎解析;
发表于 2023-02-06 11:10:05 回复(0)
1、URL解析:判断浏览器输入的是搜索内容还是URL;2、查找缓存:如果能找到缓存则直接返回页面,如果没有缓存则需要发送网络请求页面;3、DNS域名解析;4、三次握手建立TCP连接;5、发起HTTP请求;6、服务器响应并返回结果;7、通过四次挥手释放TCP连接;8、浏览器渲染;9、js引擎解析
发表于 2022-08-15 20:00:32 回复(0)
输入地址,浏览器查找域名的IP地址。浏览器向该IP地址的web服务器发送一个HTTP请求,在请求发送之前浏览器和服务器建立TCP的三次握手,判断是否是HTTP缓存,如果是强制缓存且在有效期内,不在向服务器发请求,如果是HTTP协商缓存向后端发送请求且和后端服务器对比,在有效期内,服务器返回304,直接从浏览器获取数据,如果不在有效期内服务器返回200,返回新数据。请求发送出去服务器返回重定向,浏览器再按照重定向的地址重新发送请求。如果参数有问题,服务器返回404,如果服务端挂了返回500.如果有数据一切正常,当浏览器拿到服务器的数据之后,开始渲染页面同时获取HTML页面中图片,音频,视频,css,js,在这期间获取到js文件之后会直接执行js代码,阻塞浏览器渲染,因为渲染引擎和js引擎互斥,不能同时工作,所以通常把script标签放在body底部。渲染过程就是先将HTML转换成dom树,再将css样式转换成stylesheet创建布局树,对布局树进行分层,为每个图层生成绘制列表,再将图层分为图块,紧接着光栅将图块转换成位图,最后合成绘制生成页面。
发表于 2022-07-19 16:23:55 回复(0)
1. 解析 URL 2. 检查缓存 3. 是否升级 HTTPS 4. DNS 5. TCP 6. 请求资源 7. 解析 HTML 成 DOM 树 8. 解析 CSS 成 CSSOM 树 9. DOM + CSSOM = 渲染树 10. 分层(只回流层) + 光栅化(只处理可是区域) 11. 布局:计算位置 12. 绘制:绘制元素 13. 合成:渲染层合成最终显示效果
发表于 2025-09-23 15:22:00 回复(0)
先从本地进行查找如何查找不到就在 DNS进行查找还会经过三次协议握手
发表于 2025-08-27 15:15:14 回复(0)
1、url解析,判断是搜索内容还是url 2、查找本地缓存,若存在直接返回不存在则发起网络请求3、DNS解析4、通过三次握手建立tcp连接5、发送http请求6、服务器响应并返回结果7、通过四次挥手断开tcp链接8、浏览器进行页面渲染
发表于 2025-08-19 14:13:52 回复(0)
(1)判断输入信息是搜索内容or请求URL(检测出是URL); (2)查找缓存,若有缓存则直接返回页面; (3)无缓存则发送网络请求页面,即把查询请求发送给网络设置中配置的DNS解析器; (4)DNS解析,即把域名解析为IP地址; (5)三次握手建立TCP连接; (6)发起HTTP请求; (7)服务器响应并返回结果; (8)四次挥手释放TCP连接; (9)浏览器渲染; (10)js引擎解析
发表于 2025-06-24 16:42:51 回复(0)
输入一个url后,浏览器将域名转化为ip地址,通过tcp三次握手与服务器建立联系。在发送请求之前,浏览器检测资源是否在缓存中,浏览器缓存分为强制缓存和协商缓存,如果在强制缓存有效期内,就从本地直接获取资源;如果没在强制缓存有效期内,就触发协商缓存,浏览器像服务器发送请求,服务器检测资源是否更新,没更新就可以直接获取,更新就返回新的资源,状态码为200(ok)。如果服务器返回状态码是301或302(永久/临时重定向),代表资源已经移到新地址,重新发送请求到新地址。http请求发出去之后,开始渲染,因为渲染引擎和JS引擎不能同时工作,所以渲染JS是会暂停页面渲染。渲染过程为解析html生成dom树,解析style生成stylesheet,根据dom树和stylesheet,创建布局树,并对其进行分层,对每个层生成绘制列表,分成多个图块,再将图块光栅化转化为位图,最后合成绘制生成页面。
发表于 2025-04-25 12:01:06 回复(1)
https://juejin.cn/post/7263009476058562616
发表于 2025-04-09 16:14:34 回复(0)
1.url 解析 判断是内容还是请求url 2.查找本地缓存,有缓存直接返回给页面 ,没缓存进入网络请求阶段3.DNS解析,将url解析成ip地址,4通过三次握手建立tcp连接5 发起http请求6 拿到服务端给的响应保温7 四次挥手断开tcp连接8 浏览器对画面进行渲染
发表于 2025-03-12 10:26:12 回复(0)
1.url解析:先解析输入内容是搜索内容还是url 2.缓存判断:判断是否已存在缓存,有缓存则直接读取加载,无缓存则请求新页面 3.DNS域名解析 4.三次握手建立tcp连接 5.发送http请求 6.服务器响应并返回结果 7.四次握手断开tcp连接 8.浏览器渲染 9.js解析
发表于 2025-02-18 15:10:45 回复(0)
1.url解析,判断浏览器输入的是搜索内容还是请求url,查找本地缓存,如果有缓存直接返回给页面,没有缓存则进入网路请求阶段;DNS解析,域名解析;通过三次握手建立TCP连接,发起HTTP请求,服务器响应并返回结果;通过四次挥手释放TCP连接;浏览器渲染,js引擎解析
发表于 2024-11-12 14:54:59 回复(0)