HTTP1.1
HTTP基础知识
HTTP(HyperText Transfer Protocol)是用于传输超文本 的应用层协议,采用客户端-服务器 模型。
客户端(如浏览器)发起请求,服务器响应并返回数据。
工作原理
客户端发送HTTP请求至服务器,请求包含方法(如GET、POST)、资源路径、HTTP版本及可选头信息。
服务器处理请求后返回响应,包含状态码、头信息和响应体。
数据格式
在HTTP协议中,请求报文和响应报文是客户端与服务器通信的基本单位。以下是它们的核心组成部分及详细说明:
1. 请求报文(Request Message)
客户端发送给服务器的HTTP请求包含以下部分:
-
请求行(Request Line)
-
格式:
方法 URI HTTP版本
示例:GET /index.html HTTP/1.1
- 方法:如
GET
(获取资源)、POST
(提交数据)、PUT
(更新资源)等。 - URI:请求的资源路径(如
/api/data
)。 - HTTP版本:如
HTTP/1.1
或HTTP/2
。
- 方法:如
-
请求头(Request Headers)
-
键值对形式,传递附加信息:
Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html Content-Type: application/json
-
请求体(Request Body)
- 用于
POST
、PUT
等方法,携带发送的数据(如表单、JSON)。 GET
请求通常无请求体,数据通过URL参数传递。
- 用于
2. 响应报文(Response Message)
服务器返回给客户端的HTTP响应包含以下部分:
(1)响应行(Status Line)
格式:HTTP版本 状态码 状态文本
示例:
HTTP/1.1 200 OK
- 状态码:
2xx
:成功(如200 OK
)。3xx
:重定向(如301 Moved Permanently
)。4xx
:客户端错误(如404 Not Found
)。5xx
:服务器错误(如500 Internal Server Error
)。
(2)响应头(Response Headers)
服务器返回的元信息,例如:
Content-Type: text/html
Content-Length: 1024
Server: Nginx
Cache-Control: no-cache
Location: https://new-url.com (用于重定向)
(3)响应体(Response Body)
- 服务器返回的实际数据(如HTML页面、JSON、文件等)。
示例(JSON响应):
{"status": "success", "data": {...}}
对比总结
部分 | 请求报文 | 响应报文 |
---|---|---|
起始行 | 请求行(方法+URI+版本) | 响应行(版本+状态码+状态文本) |
头部 | 请求头(客户端信息) | 响应头(服务器元信息) |
主体 | 请求体(发送的数据) | 响应体(返回的数据) |
http 长连接 短连接的问题
http 应用层协议
tcp 传输层协议
IP 网络层协议
常见HTTP方法
- GET:请求指定资源,仅用于数据读取。
- POST:提交数据到服务器(如表单提交)。
- PUT:替换目标资源的所有当前表示。
- DELETE:删除指定资源。
- HEAD:与GET类似,仅返回头信息。
- OPTIONS:询问服务器支持的请求方法。
- TRACE:回显服务器收到的请求(用于调试)。
HTTP状态码分类
- 1xx(信息性):请求已接收,继续处理。
- 2xx(成功):如200(OK)、201(Created)。
- 3xx(重定向):如301(永久移动)、302(临时重定向)。
- 4xx(客户端错误):如404(未找到)、403(禁止访问)。
- 5xx(服务器错误):如500(内部错误)、503(服务不可用)。
HTTPS安全性
HTTPS(HTTP Secure)通过SSL/TLS加密数据,提供:
- 数据完整性:防止传输中被篡改。
- 保密性:加密通信内容。
- 身份验证:验证服务器身份,防止中间人攻击。
HTTPS工作流程:
- 客户端发起HTTPS请求。
- 服务器返回含公钥的SSL证书。
- 客户端验证证书并生成加密会话密钥。
- 双方使用会话密钥加密通信。
关键对比
- HTTP:明文传输,无加密,默认端口80。
- HTTPS:加密传输,默认端口443,需CA签发证书。