浏览器地址栏输入网址后再到浏览器显示发生了什么
主要经历了以下几个过程:
- DNS域名解析(获得IP地址,访问服务器)
- 建立TCP连接(三次握手)
- 发送HTTP请求
- 服务器得到并处理请求,返回HTTP报文
- 浏览器进行渲染
- 断开连接(四次握手) 整个过程也叫做HTTP事物
1.DNS域名解析:
在浏览器输入网址后,因为浏览器并不能直接通过域名找到对应的服务器,而是通过IP地址,所以这需要域名解析系统,转换得到对应的IP,才能访问服务器。
DNS(Domain Name System, 域名系统),本质就是一个数据服务器,里面存储了域名和IP的对应关系,当你在浏览器中输入一个地址时,就会通过DNS得到对应的IP。 例如 www.baidu.com, 其实这段URL并不是真正意义上的地址。经过DNS转换得到对应IP(61.135.169.121) ,互联网上每一台计算机的唯一标识是它的 IP 地址, 但是 IP 地址并不方便记忆(毕竟都是很长的数字串), 所以每个IP的URL就横空出世了,毕竟URL方便记忆。 下面访问百度就是,其百度对应的IP返回的数据:
2.建立TCP连接:
建立TCP连接的过程,实际就是三次握手的过程。
3.发送HTTP请求:
TCP握手成功后,下面浏览器就可以向服务器发送http请求了, 请求数据包。
4.服务器得到并处理请求,返回HTTP报文:
它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用。这一部分工作一般是由Web服务器去进行,我使用过的Web服务器有Tomcat, Nginx和Apache等等,HTTP报文也分成三份,状态码 ,响应报头和响应报文。
5.浏览器解析渲染:
- 解析HTML生成DOM树。
- 解析CSS生成CSSOM规则树。
- 将DOM树与CSSOM规则树合并在一起生成渲染树。
- 遍历渲染树开始布局,计算每个节点的位置大小信息。
- 将渲染树每个节点绘制到屏幕。