mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1018 字
3 分钟
一点点计算机网络的知识
2026-03-27

HTTP协议#

HTTP协议介绍#

通用描述(HyperText Transfer Protocol,超文本传输协议)是计算机网络应用层中最核心的协议之一,用于在**客户端(如浏览器、Postman、移动 App)与服务器之间传输超文本(如 HTML、JSON、图片等)。**它是万维网(WWW)数据通信的基础。

定义#

HTTP 是一种无状态、面向连接、基于请求-响应模型的应用层协议。

·无状态(Stateless):每个请求独立,服务器不记录上下文(需靠 Cookie/JWT 等模拟状态)
·可扩展:通过 Header 字段支持新功能(如 Authorization, Content-Encoding
·媒体无关可传输任意类型数据(文本、图片、视频等),由 Content-Type 标识

HTTP协议默认使用TCP作为传输层协议, HTTPS协议运行在TLS/SSL之上

HTTP报文结构#

HTTP报文的基本格式如下:

组成部分
协议行
协议头
空行(\r\n\r\n
协议体

HTTP请求报文结构:

POST /api/login HTTP/1.1\r\n
Host: example.com\r\n
User-Agent: Mozilla/5.0\r\n
Content-Type: application/json\r\n
Content-Length: 27\r\n
Authorization: Bearer abc123\r\n
\r\n
{"username":"alice","pwd":"123"}
部分内容说明
起始行(Start Line)POST /api/login HTTP/1.1方法 + 路径 + 协议版本
请求头(Headers)Host, Content-Type键值对,描述请求元信息
空行(CRLF)\r\n分隔头和体(必须存在)
请求体(Body)JSON 数据可选,仅 POST/PUT 等方法携带

抽象为对象为:

{
"startLine": {
"method": "POST",
"requestTarget": "/api/login",
"httpVersion": "HTTP/1.1"
},
"headers": {
"Host": "example.com",
"User-Agent": "Mozilla/5.0",
"Content-Type": "application/json",
"Content-Length": "38",
"Authorization": "Bearer abc123"
},
"body": "{\"username\":\"alice\",\"pwd\":\"123\"}"
}

HTTP响应报文结构

HTTP/1.1 200 OK\r\n
Date: Mon, 27 Mar 2026 13:00:00 GMT\r\n
Content-Type: application/json\r\n
Content-Length: 32\r\n
Server: nginx/1.18.0\r\n
\r\n
{"token":"xyz789","user_id":123}
部分内容说明
状态行(Status Line)HTTP/1.1 200 OK协议版本 + 状态码 + 状态文本
响应头(Headers)Content-Type, Server描述响应元信息
空行\r\n分隔头和体
响应体(Body)JSON 数据实际返回内容

抽象为对象为:

{
"startLine": {
"method": "POST",
"requestTarget": "/api/login",
"httpVersion": "HTTP/1.1"
},
"headers": {
"Date": "Mon, 27 Mar 2026 13:00:00 GMT",
"Content-Type": "application/json",
"Content-Length": "32",
"Server": "nginx/1.18.0"
},
"body": "{\"token\":\"xyz789\",\"user_id\":\"123\"}"
}

常见的响应状态码:

根据RFC 9110(HTTP Semantics)第 15 节: https://httpwg.org/specs/rfc9110.html#status.codes

类别范围含义
1xx100–199信息响应(Informational):请求已接收,继续处理
2xx200–299成功(Success):请求被成功接收、理解、接受
3xx300–399重定向(Redirection):需进一步操作以完成请求
4xx400–499客户端错误(Client Error):请求包含错误语法或无法满足条件
5xx500–599服务器错误(Server Error):服务器处理请求时出错

常见的RESTful风格的响应状态码

场景状态码
成功获取数据200 OK
成功创建资源201 Created
成功删除/更新(无返回)204 No Content
请求参数错误400 Bad Request
未登录401 Unauthorized
无权限403 Forbidden
资源不存在404 Not Found
数据冲突(如唯一键重复)409 Conflict
业务校验失败422 Unprocessable Entity
触发限流429 Too Many Requests
服务器内部错误500 Internal Server Error
服务不可用503 Service Unavailable

HTTP工作原理#

HTTP 本身不处理传输,而是依赖 TCP 提供可靠连接

流程: DNS解析->TCP三次握手->发送HTTP请求->服务器处理并返回响应->TCP四次挥手

1:DNS 解析
客户端将域名(如 api.example.com)解析为 IP 地址(如 93.184.216.34)

2:TCP 三次握手
客户端 → 服务器:SYN
服务器 → 客户端:SYN-ACK
客户端 → 服务器:ACK
建立可靠连接

3:发送 HTTP 请求
客户端通过已建立的 TCP 连接,发送完整的 HTTP 请求报文

4:服务器处理并返回响应
服务器解析请求,执行业务逻辑,构造 HTTP 响应报文,通过同一TCP连接返回

5:TCP 四次挥手(或保持连接)
若 Connection: close,则关闭连接
若 Connection: keep-alive(HTTP/1.1 默认),则复用连接发送后续请求

HTTP定位#

位于应用层最顶层,直接为用户提供服务(如网页、API) 不关心底层如何传输,只定义“如何描述请求和响应” 依赖下层协议提供服务: 传输层:TCP(保证可靠、有序) 网络层:IP(负责路由) 链路层:以太网/Wi-Fi(物理传输)

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

一点点计算机网络的知识
https://www.choria.top/posts/network/
作者
乔瑞雅·克林威尔
发布于
2026-03-27
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录