首页 > 试题广场 >

说一下浏览器输入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后, 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)
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)
①url判断。判断输入的是搜索内容还是url。 ②查找本地缓存。如果能在本地找到缓存直接返回页面,如果没有缓存需要发送网络请求页面。 ③DNS解析:将域名转换为IP地址。 ④通过三次握手建立TCP连接。 ⑤合成请求头信息,发送http请求。 ⑥服务器响应返回结果。 ⑦通过四次挥手释放TCP连接。 ⑧浏览器渲染。 ⑨js引擎解析。
发表于 2022-08-12 12:35:42 回复(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:解析出url中的协议(http\https),主机名以及路径 2、解析DNS:用主机名去域名系统中获取该主机名对应的IP地址 3、建立TCP链接:获取到IP地址后,会和服务器建立TCP连接,这个过程涉及到三次握手,来确保浏览器可以和服务器之间可以进行安全可靠的链接 4、发起HTTP请求 5、服务器相应请求 6、浏览器接收响应 7、渲染页面 8、关闭连接
发表于 2024-06-05 14:50:35 回复(0)
先看本地缓存又没有资源、没有的话去请求服务器,DNS解析、通过三次握手建立TCP链接,合成 请求头信息,发送http请求,处理响应信息,通过四次挥手断开Tcp链接,如果响应吗状态为304则重定向,浏览器进行页面渲染1.解析html 文件生成DOm输,根据css计算节点样式生成styleSheet;生成布局树,为特定元素生成独立图层
编辑于 2024-04-24 14:25:41 回复(0)
我看很多人的答案, 都是四次挥手断开TCP连接了之后, 才开始渲染页面, 这个不太对啊
发表于 2024-04-14 18:17:46 回复(1)
1、解析url,判断输入的url还是内容 2、查找缓存,找到缓存就直接返回页面,找不到就发送请求 3、DNS域名解析 4、3次握手建立TCP连接 5、发送http请求 6、服务器响应返回结果 7、4次挥手释放TCP连接 8、浏览器渲染 9、js引擎渲染
编辑于 2024-03-21 17:11:43 回复(0)
1. dns 域名解析 2.简历tcp链接 3. 发送http请求 4. html文件解析dom树 css生成几点样式 5.js 引擎解析
编辑于 2024-03-04 16:14:35 回复(0)
1.判断是搜索内容还是请求url 2.查找本地缓存,如有有则直接展示 3.DNS域名解析 4.三次握手建立TCP链接 5.发送http请求 6.服务器响应并返回结果 7.四次挥手断开TCP链接 8.浏览器解析
编辑于 2024-03-03 16:46:31 回复(0)
1: URL解析 2: 查找本地缓存,如果有缓存直接返回给页面,没有缓存进入网络请求阶段 3:DNS解析 4: 三次握手建立TCP连接 5: 发起http请求 6: 服务器响应返回结果 7: 四次握手释放TCP连接 8: 浏览器渲染 9: js引擎解析
编辑于 2024-02-21 19:07:08 回复(0)
1.URL解析:判断输入是搜索内容还是URL 2.查找缓存:如果有缓存直接返回,没有则发起请求 3.DNS解析 4.三次握手建立TCP连接 5.发起HTTP请求 6.服务器响应并返回结果 7.浏览器解析渲染页面 8.四次挥手断开TCP连接
发表于 2023-10-10 17:21:53 回复(0)
1. 判断输入的是搜索内容还是URL; 2. 查询当前是否有缓存,如果有,则直接返回页面,如果没有就发送网络请求; 3. DNS域名解析,将域名解析为IP地址; 4. 三次握手协议建立TCP连接; - 第一次握手:客户端主动连接服务端,等待服务端确认; - 第二次握手:服务端收到消息后发送应答; - 第三次握手:客户端收到应答以后,向服务端发送确认发送报文段; - 扩展:为什么是三次握手?防止失效的连接请求报文被服务端接受,没必要四次是因为防止资源的浪费。 - 5. 合成请求头信息,发起HTTP请求; - 6. 四次挥手断开TCP连接; - 7. 解析Html,生成dom树;解析CSS文件生成CSSOM树,合并为render树,进行浏览器渲染; - 8. JS引擎解析。
发表于 2023-09-17 21:28:24 回复(0)
1.URL解析:判断浏览器输入的是搜索内容还是URL; 2.查找缓存:如果能找到缓存则直接返回页面,如果没有缓存则需要发送网络请求页面; 3.DNS域名解析; 4.三次握手建立TCP连接; 5.发起HTTP请求; 6.服务器响应并返回结果; 7.四次挥手释放TCP连接; 8.浏览器渲染; 9.js引擎解析
发表于 2023-09-05 16:05:58 回复(0)