HTTP(HyperText Transfer Protocol,超文本传输协议)是一种应用层协议,定义了客户端和服务器之间请求和响应的格式。它工作在TCP/IP模型之上,通常使用端口80。以下是HTTP传输协议的几个关键特点和组成部分:
- 应用层协议:HTTP是TCP/IP模型中应用层的一部分,用于分布式、协作式、超媒体信息系统。
- 基于TCP/IP:HTTP协议工作在传输层的TCP协议之上,确保数据的可靠传输。
- 无状态协议:HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理。每次请求都是独立的,服务器不会记住之前发生过的请求。
- 客户端-服务器模型:HTTP遵循经典的客户端—服务端模型,客户端发起请求,服务器响应请求。
工作流程
1. 客户端发起请求:用户通过客户端(如Web浏览器)输入URL,客户端向服务器发起一个HTTP请求。
2. 服务器处理请求:服务器接收到请求后,根据请求的类型(如GET、POST等)和请求的资源,进行相应的处理。
3. 服务器返回响应:服务器将处理结果包装成HTTP响应消息,发送回客户端。
4. 客户端渲染页面:客户端接收到响应后,根据响应内容(如HTML、图片等)渲染页面,展示给用户。
- 请求行:包括请求方法(如GET、POST)、资源URI、HTTP版本。
- 请求头:包含客户端环境信息、请求体的大小和类型等。
- 请求体:可选,通常用于POST和PUT请求,包含要发送给服务器的数据。
- 响应行:包括HTTP版本、状态码、状态消息。
- 响应头:包含服务器信息、内容类型、内容长度等。
- 响应体:服务器返回给客户端的内容,如HTML文档、图片、视频等。
HTTP协议支持多种请求方法,常见的包括:
- GET:请求从服务器获取指定资源。
- POST:请求服务器接受并处理请求体中的数据,通常用于表单提交。
- PUT:请求服务器存储一个资源,并用请求体中的内容替换目标资源的所有内容。
- DELETE:请求服务器删除指定的资源。
- HEAD:与GET类似,但不获取资源的内容,只获取响应头信息。
状态码分为五类:
- 1xx(信息性状态码):表示接收的请求正在处理。
- 2xx(成功状态码):表示请求正常处理完毕。
- 3xx(重定向状态码):需要后续操作才能完成这一请求。
- 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
- 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。
- HTTP/1.1:支持持久连接,允许多个请求/响应通过同一个TCP连接传输。
- HTTP/2:基于二进制分帧,支持多路复用,允许同时通过单一的HTTP/2连接发起多重的、独立的、双向的交流。
- HTTP/3:基于QUIC协议,旨在减少网络延迟,提高传输速度和安全性。
HTTP本身不提供数据加密,但可以通过HTTPS(HTTP Secure)实现加密传输。HTTPS在HTTP的基础上增加了SSL/TLS协议,提供了数据加密、完整性校验和身份验证。