1.定义
- HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网上最常用的协议之一,用于在 Web 浏览器和 Web 服务器之间传输超文本数据,如网页、图像、视频等。
-
2.请求与响应模式
- 客户端(通常是 Web 浏览器)向服务器发送一个 HTTP 请求,请求包含方法(如 GET、POST、PUT、DELETE 等)、URL、协议版本、头部信息和可能的请求体。
- 服务器接收到请求后,根据请求的内容进行处理,并返回一个 HTTP 响应,响应包含协议版本、状态码、头部信息和可能的响应体。
3.连接建立与断开
- HTTP 基于 TCP/IP 协议,在发送请求之前,客户端需要与服务器建立 TCP 连接。
- 一旦请求和响应完成,连接可以被关闭以释放资源。然而,为了提高性能,HTTP/1.1 引入了持久连接(keep-alive),允许在同一个连接上发送多个请求和响应。
4.资源定位与请求方法
- URL(Uniform Resource Locator,统一资源定位符)用于唯一标识 Web 上的资源。
- 常见的请求方法有 GET(用于获取资源)、POST(用于提交数据以创建或更新资源)、PUT(用于更新资源)、DELETE(用于删除资源)等。
5.特点
-
简单灵活
HTTP 协议设计简单,易于实现和理解。 -
无状态
HTTP 是无状态协议,即服务器不会记住客户端的状态信息。
-
可扩展性
HTTP 协议具有良好的可扩展性,可以通过添加新的头部字段、方法和状态码来满足不断变化的需求。
6.HTTP 报文结构
-
请求报文
请求行:包含请求方法、URL 和协议版本。
头部字段:包含各种关于请求的信息,如用户代理、接受的内容类型、缓存控制等。
请求体(可选):用于提交数据,如表单数据、文件上传等。
-
响应报文
状态行:包含协议版本、状态码和状态描述。
头部字段:包含各种关于响应的信息,如内容类型、内容长度、缓存控制等。
响应体:包含服务器返回的资源内容。
7.常见状态码
- 200 OK:表示请求成功,服务器返回了请求的资源。
- 301 Moved Permanently:表示资源被永久移动到了新的 URL,客户端应该使用新的 URL 进行访问。
- 302 Found:表示资源被临时移动到了新的 URL,客户端可以继续使用原来的 URL 进行访问,但下次请求时应该使用新的 URL。
- 400 Bad Request:表示客户端发送的请求有语法错误或无法被服务器理解。
- 401 Unauthorized:表示请求需要身份验证,客户端未提供有效的身份验证信息。
- 403 Forbidden:表示服务器拒绝了客户端的请求,通常是由于权限不足或访问被禁止。
- 404 Not Found:表示服务器无法找到请求的资源。
- 500 Internal Server Error:表示服务器在处理请求时发生了内部错误。
- 502 Bad Gateway:表示服务器作为网关或代理,从上游服务器接收到了无效的响应。
六、应用场景
-
Web 浏览
- HTTP 是 Web 浏览器与 Web 服务器之间通信的基础协议,用于获取网页、图像、视频等资源。
-
API 接口
- 许多 Web 应用程序提供基于 HTTP 的 API 接口,允许客户端通过发送 HTTP 请求来获取或操作数据。
-
移动应用
- 移动应用通常也使用 HTTP 协议与服务器进行通信,以获取数据、提交用户输入等。