浏览器从URL输入到页面展示发生了什么?
1. URL解析
URL(Uniform Resource Locator,统一资源定位符),它是 WWW 服务器用于指定网络资源位置的表示方法。
语法格式:protocol://hostname[:port]/path/[parameters][?query]#fragment
-
protocol:指定使用的传输协议,比如 http,ftp,file。
-
hostname:存放资源的服务器的主机名或 IP 地址。
-
port:传输协议使用的端口号。
-
path:表示主机上的一个目录或文件地址。
-
parameters:可选,用于指定特殊参数。
-
query:可选,用于给动态网页传递参数。多个参数用 & 隔开。
-
fragment:字符串,用于指定网络资源中的片断。
2. DNS查询
用户通过浏览器访问网页,DNS 服务器(域名解析系统)会根据用户输入的服务器域名查找对应的IP地址。
域名解析服务器是基于 UDP 协议实现的一个应用程序,通过监听 53 端口来获取客户端的域名解析请求。
域名解析过程:
-
浏览器 DNS 缓存。
-
操作系统缓存,查找本机的 hosts。
-
路由器 DNS 缓存。
-
递归查询本地域名服务器。
-
迭代查询根域名服务器。
3. 建立TCP连接
浏览器通过 DNS 服务器获取到 Web 服务器的 IP 地址后,便向 Web 服务器发起 TCP 连接请求。通过 TCP 的三次握手建立好连接后,浏览器就可以将 HTTP 请求数据发送给 Web 服务器了。
4. HTTP请求/响应
一个 HTTP 请求报文由请求行、请求头部、空行和请求数据4个部分组成。
HTTP 响应报文由状态行、响应头部、空行以及响应数据组成。
5. 渲染页面
浏览器拿到 HTTP 响应的 html 文档后,解析并渲染页面,最终呈现给用户。