如果要在浏览器中访问:https://www.taobao.com
,整个访问过程中的交互细节是什么?
- 用户输入 URL:
用户在浏览器中输入网站的 URL(统一资源定位符):https://www.taobao.com
- DNS 解析
浏览器首先检查本地缓存是否已经存储了这个 URL 对应的 IP 地址。如果没有缓存或缓存过期,浏览器将发起一个 DNS(域名系统)查询,以将域名(https://www.taobao.com
)转换为服务器的 IP 地址。这通常涉及向本地 DNS 服务器或更高级别的 DNS 服务器查询。(本地域名服务器、根域名服务器、顶级域名服务器、权限域名服务器),查询方式主要是递归和迭代相结合的方式。
客户端浏览器收到解析结果后,会将其域名以及对应的IP地址缓存到DNS缓存和hosts文件中。
- 建立 TCP 连接
一旦获取到 IP 地址,浏览器将尝试通过 TCP(传输控制协议)与服务器的指定端口(通常是端口 80 用于 HTTP 或端口 443 用于 HTTPS)建立一个连接。TCP 连接的建立过程(三次挥手、四次分手)
- 发送 HTTP 请求
连接建立后,浏览器会构建一个 HTTP(Hypertext Transfer Protocol,超文本传输协议)请求报文,并通过 TCP 连接发送给服务器。这个请求包含了请求行(如 GET /index.html),请求头部和有时的请求体。
- 服务器处理请求
服务器接收到请求后,会根据请求的内容(如请求不同的页面或执行某些动态操作)进行处理。服务器可能访问数据库,执行后端逻辑,或者直接返回请求的静态资源。
- 服务器返回响应
服务器处理完请求后,会返回一个 HTTP 响应报文,并通过之前建立的 TCP 连接发送回浏览器。这个响应通常包含一个状态码(如 200 表示成功),响应头部,以及响应体(如网页内容)。
- 浏览器解析和显示内容
浏览器接收到响应数据后,会解析响应的 HTML 内容,构建 DOM(文档对象模型),然后加载 CSS 和 JavaScript,渲染页面,最终在屏幕上显示给用户。
- 保持或关闭 TCP 连接
根据 HTTP 头部中的 Connection
字段,连接可能被保持以用于后续的请求,或者关闭以释放资源。
通过 DNS 域名解析得到目的 IP 地址以后,还需要经历网络层的 IP 路由,如果客户端主机处于局域网中,在路由过程中,还会涉及到 NAT(网络地址转换),将私有 IP 转换为公有 IP,然后通过 ARP 地址解析协议 (Address Resolution Protocol )将 IP 地址转换为 MAC 地址,在数据链路层继续寻址(MAC 地址)。