HTTP(HyperText Transfer Protocol,超文本传输协议)是万维网(WWW)的核心协议,用于 Web 浏览器与 Web 服务器之间的通信。HTTP 是应用层协议,基于 TCP 传输(HTTP/1.0 和 HTTP/1.1),端口号为 80。HTTP 是无状态协议,服务器不保存客户端的历史请求信息,这通过 Cookie 和 Session 机制来弥补。
HTTP 报文分为请求报文和响应报文。请求报文包含:请求行(方法、URL、版本)、请求头部(Header)和请求体(Body)。常见请求方法有 GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)。响应报文包含:状态行(版本、状态码、原因短语)、响应头部和响应体。常见状态码:200(成功)、301(永久重定向)、302(临时重定向)、304(未修改,使用缓存)、400(客户端错误)、403(禁止)、404(未找到)、500(服务器内部错误)。
HTTP/1.0 默认非持久连接(每次请求建立新 TCP 连接),HTTP/1.1 默认持久连接(同一 TCP 连接上可发送多个请求/响应)。持久连接有两种工作方式:非流水线(收到响应后才发下一个请求)和流水线(不等响应就发下一个请求)。HTTP/2 引入了多路复用、头部压缩和服务器推送等特性。
| 概念 | 定义 |
|---|---|
| URL | 统一资源定位符,格式为 协议://主机:端口/路径 |
| Cookie | 服务器发送给客户端的小型数据,用于维持状态 |
| Session | 服务器端保存的用户会话信息,通过 Session ID 关联 |
| 状态码 | 三位数字,表示请求的处理结果(1xx~5xx) |
| 持久连接 | 同一 TCP 连接上可传输多个 HTTP 请求/响应(HTTP/1.1 默认) |
| 非持久连接 | 每个请求/响应对使用独立的 TCP 连接(HTTP/1.0 默认) |
| 流水线 | 不等待响应就连续发送请求,提高效率 |
| 代理服务器 | 位于客户端和服务器之间的中间实体,可缓存和过滤请求 |
| 考点 | 说明 |
|---|---|
| HTTP 报文格式 | 请求行/状态行、头部字段、空行、正文的结构 |
| 状态码分类 | 1xx 信息、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务器错误 |
| 持久/非持久连接 | HTTP/1.0 默认非持久,HTTP/1.1 默认持久;计算页面加载时间 |
| Cookie 与 Session | HTTP 无状态性及其解决方案 |
| GET 与 POST | GET 参数在 URL 中、可缓存;POST 参数在 Body 中、不可缓存 |
| 页面加载时间计算 | 非持久:n 个对象需 2n 个 RTT;持久非流水线:1+(n) 个 RTT |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。