摘自 李兵 《浏览器工作原理与实践》
服务器是如何响应浏览器的
首先服务器会返回响应行,包括协议版本和状态码。
并不是所有的请求都可以被服务器处理的,那么一些无法处理或者处理出错的信息,怎么办呢?
服务器会通过请求行的状态码来告诉浏览器它的处理结果,比如:最常用的状态码是 200,表示处理成功;如果没有找到页面,则会返回 404。
随后,正如浏览器会随同请求发送请求头一样,服务器也会随同响应向浏览器发送响应头。
响应头包含了服务器自身的一些信息,比如服务器生成返回数据的时间、返回的数据类型(JSON、HTML、流媒体等类型),以及服务器要在客户端保存的 Cookie 等信息。
发送完响应头后,服务器就可以继续发送响应体的数据,通常,响应体就包含了 HTML 的实际内容。
以上这些就是服务器响应浏览器的具体过程。
通常情况下,一旦服务器向客户端返回了请求数据,它就要关闭 TCP 连接。
不过如果浏览器或者服务器在其头信息中加入了:
Connection:Keep-Alive
那么 TCP 连接在发送后将仍然保持打开状态,这样浏览器就可以继续通过同一个 TCP 连接发送请求。
保持 TCP 连接可以省去下次请求时需要建立连接的时间,提升资源加载速度。
比如,一个 Web 页面中内嵌的图片就都来自同一个 Web 站点,如果初始化了一个持久连接,你就可以复用该连接,以请求其他资源,而不需要重新再建立新的 TCP 连接。