HTTP协议数据包

HTTP协议数据包总结

一、HTTP协议简介

HTTP(HyperText Transfer Protocol)是由 W3C 制定的网络应用层协议,定义了浏览器与 Web 服务器之间通信时的数据格式规范,是 Web 通信的核心基础。

二、HTTP通信过程

  1. 浏览器与 Web 服务器建立连接
  2. 浏览器打包请求数据(生成请求数据包)并发送给服务器
  3. Web 服务器处理请求后,打包结果(生成响应数据包)并返回给浏览器
  4. Web 服务器关闭连接

    核心流程:建立连接 → 发送请求数据包 → 返回响应数据包 → 关闭连接

三、请求数据包格式

请求数据包由 4 部分组成:请求行 + 请求头 + 空行 + 请求体(空行用于分隔请求头和请求体,不可省略)

1. 各部分说明

组成部分 作用
请求行 包含请求类型、请求资源路径、协议版本(如 POST /adduser HTTP/1.1
请求头 键值对格式,由 W3C 定义或自定义,用于传递浏览器与服务器的交互信息
空行 分隔请求头和请求体,是协议规定的必要格式
请求体 需发送的具体数据(通常仅 POST 方式使用,GET 方式无请求体)

2. 请求数据包示例

# 请求行
POST /adduser HTTP/1.1

# 请求头(Request Headers)
Host: localhost:8030
Connection: keep-alive
Content-Length: 16
Pragma: no-cache
Cache-Control: no-cache
Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

# 空行(此处为空白行)

# 请求体(Form Data)
name=name&age=11

3. 核心请求头含义

请求头字段 说明
Accept 浏览器可接受的 MIME 文件格式,服务器据此返回对应格式数据
User-Agent 客户端浏览器的名称及版本信息(如 Chrome、Firefox 等)
Host 目标网址的 Web 服务器名称和端口号(对应 URL 中的主机部分)
Accept-Language 浏览器可接受的语言种类(如 zh-CN 表示中文,en 表示英文)
Connection 告知服务器是否维持持久连接(HTTP/1.1 默认 Keep-Alive,避免多次请求重复建立连接)
Cookie 浏览器向服务器发送的 Cookie 数据,用于存储用户会话信息、身份验证等
Referer 产生当前请求的来源网页 URL(用于跟踪请求来源,如从 A 页面跳转至 B 页面,B 页面的 Referer 为 A 页面 URL)
Content-Type 请求体的数据类型(如 application/x-www-form-urlencoded 表示表单数据)
Accept-Charset 浏览器可接受的字符编码(如 ISO-8859-1、UTF-8 等)
Accept-Encoding 浏览器可接受的文件编码方式(如 gzip、deflate,用于压缩文件加速传输,服务器返回后浏览器需先解码)

四、GET 与 POST 方法的区别

对比维度 GET 方法 POST 方法
发起方式 可直接在浏览器地址栏输入 URL 发起 需通过表单、接口工具(如 Postman)发起
数据传输方式 数据拼接在 URL 中或通过 Cookie 传递 数据放在请求体(Body)中
数据长度限制 URL 长度有限制(不同浏览器/服务器限制不同,通常不超过 2KB) 无数据长度限制,可传输大量数据
安全性 数据暴露在 URL 中,安全性低(不适合传输密码、敏感信息) 数据隐藏在请求体中,安全性更高
核心用途 用于从服务器获取数据(如查询列表、详情) 用于向服务器提交数据(如注册、登录、提交表单)

五、响应数据包格式

响应数据包由 4 部分组成:状态行 + 响应头 + 空行 + 响应正文(空行用于分隔响应头和响应正文)

1. 各部分说明

组成部分 作用
状态行 包含协议版本、状态代码、状态描述(如 HTTP/1.1 200 OK
响应头 服务器返回的键值对信息,包含服务器类型、数据格式、日期等
空行 分隔响应头和响应正文,协议规定的必要格式
响应正文 服务器处理请求后的结果数据(如 HTML 页面、JSON 数据、图片等),浏览器会解析并展示

2. 响应数据包示例

# 状态行
HTTP/1.1 200 OK

# 响应头
Server: Apache Tomcat/5.0.12
Date: Mon, 6 Oct 2003 13:13:33 GMT
Content-Type: text/html
Last-Modified: Mon, 6 Oct 2003 13:23:42 GMT
Content-Length: 112

# 空行(此处为空白行)

# 响应正文(HTML 内容示例)
<html>
<head><title>成功</title></head>
<body>添加用户成功!</body>
</html>

六、常见 HTTP 状态码

状态码由 3 位数字组成,用于表示服务器对请求的处理结果,分为 5 大类:

状态码类别 含义 常见状态码及说明
1xx 提示信息 表示请求已被服务器接收,正在继续处理(较少见)
2xx 成功 200 OK:请求处理成功,服务器正常返回数据
3xx 重定向 302 Found:请求的资源临时跳转至其他 URL,浏览器会自动跳转
4xx 客户端错误 400 Bad Request:请求语法错误(如参数格式错误)
401 Unauthorized:访问的页面需要授权(未登录)
403 Forbidden:服务器拒绝访问(已登录但无权限)
404 Not Found:请求的资源不存在(URL 错误或页面已删除)
5xx 服务器错误 500 Internal Server Error:服务器内部异常(如代码报错)
504 Gateway Timeout:服务器处理请求超时(未返回结果)