在像 HTTP 这样的Client-Server(客户端-服务器)协议中,会话分为三个阶段:
客户端建立一条 TCP 连接(如果传输层不是 TCP,也可以是其他适合的连接)。
客户端发送请求并等待应答。
服务器处理请求并送回应答,回应包括一个状态码和对应的数据。
从 HTTP/1.1 开始,连接在完成第三阶段后不再关闭,客户端可以再次发起新的请求。这意味着第二步和第三步可以连续进行数次。
建立连接
在客户端-服务器协议中,连接是由客户端发起建立的。在HTTP中打开连接意味着在底层传输层启动连接,通常是 TCP。
使用 TCP 时,HTTP 服务器的默认端口号是 80,另外还有 8000 和 8080 也很常用。页面的 URL 会包含域名和端口号,但当端口号为 80 时可以省略。前往 标识互联网上的内容 获取更多内容。
注意: 客户端-服务器模型不允许服务器在没有显式请求时发送数据给客户端。为了解决这个问题,Web 开发者们使用了许多技术:例如,使用 XMLHTTPRequest 或 Fetch API 周期性地请求服务器,使用 HTML WebSockets API,或其他类似协议。
发送客户端请求
一旦连接建立,用户代理就可以发送请求 (用户代理通常是 Web 浏览器,但也可以是其他的(例如爬虫)。客户端请求由一系列文本指令组成,并使用 CRLF 分隔,它们被划分为三个块:
第一行包括请求方法及请求参数:
文档路径,不包括协议和域名的绝对路径 URL
使用的 HTTP 协议版本
接下来的行每一行