在浏览器中输入网址回车到页面显示发生的那些事儿
总的思路:在浏览器地址栏键入URL,按下回车之后发生的几个事件:
1)浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址;
2)解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接;
3)浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器;
4)服务器给出相应,把对应的html文本发送给浏览器;
5)释放TCP连接;
6)浏览器将该文本显示出来。
具体的实现:
1、浏览器根据域名查询域名对应的服务器的IP地址。
根据域名查询IP地址的顺序如下:浏览器DNS >>> 操作系统DNS缓存 >>> 本地(ISP)域名服务器缓存 >>> 根域名服务器。
在请求到根域名服务器之后,根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
本地域名服务器向顶级域名服务器dns.com进行查询,顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。
本地域名服务器向权限域名服务器dns.abc.com进行查询,权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
最终查询到IP地址之后,本地域名服务器将IP地址告诉给浏览器。
2、浏览器主机根据IP地址与服务器建立TCP连接。
建立TCP连接需要进行三次握手。
(1)浏览器向服务器发送syn(同步序列编号)包,并进入SYN_SENT(请求连接)状态。syn=j;
(2)服务器接收到syn包后,返回一个ACK(确认包)告诉浏览器我已经接受到你的信息了,并且发送一个自己的syn包,等待浏览器的回复,此时服务端进入SYN_RECIVED(意思是我已经接收到你的信息了)状态。 ACK=j+1 SYN=k
(3)浏览器接受到来自服务器的SYN和ACK包后,向服务器发送确认包ACK,此时,包发送完毕,浏览器和服务器都进入ESTABLISHED(TCP连接成功)状态且完成三次握手。 ACK=k+1
3、浏览器将访问请求封装为一个HTTP请求报文,通过TCP协议发送给服务器。
HTTP请求报文的方法是get方式;如果浏览器存储了该域名下的Cookies,那么会把Cookies放入HTTP请求头里发给服务器。
4、服务器收到请求并响应,生成一个HTTP响应报文,通过TCP协议发送给浏览器主机。
HTTP响应报文的头部包含了状态码(Status-Code),三位数字,有5大类。HTTP响应报文内容则是网页的编码内容。
5、浏览器得到响应报文之后,对响应报文进行解析。
在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了。如果是个静态的页面,那到此就基本结束了。如果是是动态的,那么在浏览器显示HTML时,会获取嵌入在HTML中的对象,浏览器会发送获取请求来重新获得这些文件。
6、浏览器异步请求其他资源。
在分析HTML时,若发现网页引用了其他资源,例如:css、图片等,浏览器则发起HTTP请求,得到响应资源。
阅读更多- 经典问题:从输入网址到浏览器显示页面发生了什么
- 从输入网址到浏览器显示页面发生了什么
- 从浏览器输入一个网址,到该页面显示完成,都发生了那些事情?
- 从浏览器输入网址到显示网站页面之间到底发生了什么?系列(三)
- 从浏览器输入网址到显示网站页面之间到底发生了什么?系列(一)
- 从浏览器输入网址到显示网站页面之间到底发生了什么?系列(四)
- 从浏览器输入网址到显示页面之间发生了什么
- 从浏览器输入网址到显示网站页面之间到底发生了什么?系列(二)
- 当你在浏览器地址栏输入一个URL后回车,页面出现之前发生了什么?
- 从输入URL到浏览器显示页面,后台发生了什么?
- 在浏览器输入一个网址,按回车之后发生了什么?
- 从输入网址到显示页面:浏览器工作原理拆解分析
- 输入一个新的网址后到完全显示页面,浏览器做了哪些工作?
- 从输入网址到最后浏览器呈现页面内容,中间发生了什么?
- 输入URL到显示页面发生了什么&浏览器渲染&回流和重绘
- 从输入网址到最后浏览器呈现页面内容,中间发生了什么?
- 在浏览器输入一个网址,按回车之后发生了什么
- 在浏览器输入网址,直到页面出现,之间发生了什么?(1)
- 当你在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?请从技术的角度描述,如浏览器、网络(UDP、TCP、HTTP等),以及服务器等各种参与对象上由此引发的一系
- 从输入URL到浏览器显示页面发生了什么