3.3 渲染前后:浏览器执行的所有其他操作
浏览器不仅仅是渲染管道和JavaScript引擎。除了呈现HTML和执行JavaScript之外,现代浏览器还包含许多其他职责的逻辑。浏览器与操作系统连接以解析和缓存DNS地址、解释和验证安全证书、在需要时使用HTTPS编码请求以及根据Web服务器的指令存储和传输cookie。为了理解这些责任是如何结合在一起的,让我们在“幕后”看一下登录到亚马逊网站的用户:
1)用户使用他们喜欢的浏览器访问www.amazon.com。
2)浏览器尝试将域(amazon.com)解析为IP地址。首先,浏览器查询操作系统的DNS缓存。如果找不到任何结果,它将请求互联网服务提供商查看他们的DNS缓存。如果ISP上没有人曾访问过亚马逊的网站(不过这种情况不太可能发生),ISP将在权威DNS服务器上解析该域名。
3)既然已经解析了IP地址,浏览器就会尝试与IP地址对应的服务器发起TCP握手,以便建立安全连接。
4)一旦建立了TCP会话,浏览器就会构造一个HTTP GET请求发送给www.amazon.com。TCP将HTTP请求拆分为数据包,然后将其发送到服务器进行重组。
5)此时,HTTP会话将升级到HTTPS以确保安全通信。浏览器和服务器进行TLS握手,约定加密密码,并交换加密密钥。
6)服务器使用安全通道发送回包含亚马逊网站首页HTML的HTTP响应。浏览器解析并显示页面,通常会触发许多其他HTTP GET请求。
7)用户导航到登录页面,输入他们的登录凭据,并提交登录表单,该表单将生成一个POST请求到服务器。
8)服务器通过在响应中返回Set-Cookie
标头来验证登录凭据并建立会话。浏览器在规定的时间内存储cookie,并将其与后续请求一起发送回亚马逊网站。
完成所有这些操作后,用户就可以访问其亚马逊网站的账户了。