前言:
这个问题可以说是面试必问的问题了,而且涉及的知识点有好几个,如html解析、渲染、DNS解析等,也有很多延伸的问题,之前面试的时候,我只是简单的背了背答题流程,详细的并不是很了解,所以决定总结一下。
一、主要过程
- 输入地址,回车
- 浏览器解析URL,解析出域名host
- DNS域名解析:浏览器将域名转换成服务器ip地址,通过IP地址与服务器建立TCP连接(三次握手)
- 客户端向服务端发送HTTP请求,如果服务器返回以 301 之类的重定向,浏览器根据相应头中的 location 再次发送请求
- 服务器收到请求并响应HTTP请求,处理请求生成 html 代码,返回给浏览器
- 浏览器开始解析渲染页面并显示
- 如果有多个资源,重复456,直至资源全部加载完毕
- 关闭连接(四次挥手)
二、知识点详解
1、DNS域名解析
(1)为什么要域名解析?
因为浏览器并不能通过域名直接找到对应的服务器,而是要通过 IP 地址查找。
(2)什么是DNS?
DNS,又称域名系统,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 协议可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53,但大多数情况下 DNS 都使用 UDP 进行传输。
(3)什么是DNS域名解析?
DNS域名解析实际就是,通过域名,得到该域名对应的IP地址的过程。