浏览器从URL输入到页面展示发生了什么?
1. URL解析
URL(Uniform Resource Locator,统一资源定位符),它是 WWW 服务器用于指定网络资源位置的表示方法。
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 文档后,解析并渲染页面,最终呈现给用户。