HTTP(超文本传输协议)是用于在客户端(如浏览器)和服务器之间传输数据的应用层协议,基于请求-响应模型工作。以下是 HTTP 传输数据的核心流程、关键概念及示例:
HTTP 传输的本质是客户端发送请求报文,服务器返回响应报文,整个过程依赖底层的 TCP 协议(HTTP/1.1 及之前默认使用 TCP,HTTP/3 基于 UDP 的 QUIC)。流程如下:
HTTP 传输的数据被封装为请求报文和响应报文,两者结构类似,均由「起始行 + 头部 + 空行 + 主体」组成。
<方法> <请求 URL> <HTTP 版本> # 起始行(请求行)
<头部字段>: <值> # 请求头部(多个键值对)
...
<空行> # 分隔头部和主体(必须)
<请求主体> # 可选(如 POST 表单数据、JSON)
示例(GET 请求,无主体):
GET /api/users?id=1 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: application/json
示例(POST 请求,有主体):
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 27
{"name": "Alice", "age": 20}
<HTTP 版本> <状态码> <状态描述> # 起始行(状态行)
<头部字段>: <值> # 响应头部(多个键值对)
...
<空行> # 分隔头部和主体(必须)
<响应主体> # 可选(如 HTML、JSON、图片)
示例(成功响应):
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 35
{"id": 1, "name": "Alice", "age": 20}
不同方法对应不同的数据传递逻辑:
?id=1&name=Alice),无请求主体,数据长度受 URL 限制(浏览器通常限制 2KB~8KB)。application/json:JSON 格式(API 常用)。application/x-www-form-urlencoded:表单默认格式(如 name=Alice&age=20)。multipart/form-data:上传文件时使用(支持二进制数据)。text/html:HTML 网页。HTTP/1.0 每次请求都要新建 TCP 连接,效率低;HTTP/1.1 引入持久连接(Connection: keep-alive),一个 TCP 连接可发送多个请求/响应,减少握手开销。
HTTP 本身无状态(服务器不记住客户端历史请求),若需维持登录状态等,需通过:
Set-Cookie 响应头向客户端发送小数据,客户端后续请求自动携带 Cookie 头。HTTP 是应用层协议,依赖传输层 TCP(HTTP/1.1、HTTP/2)或 UDP(HTTP/3 基于 QUIC) 传输数据:
https://example.com(HTTPS 是 HTTP + TLS 加密)。index.html)。<img>、<script> 等标签,再发送 HTTP 请求获取资源。HTTP 传输数据的核心是请求-响应模型,通过结构化的报文(起始行、头部、主体)传递信息,依赖 TCP/UDP 作为底层传输,不同方法(GET/POST 等)决定了数据的传递位置和方式。理解报文结构和关键头部字段是掌握 HTTP 传输的关键。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。