软件评测师备考:HTTP 协议详解

一、HTTP 协议详解之 URL 篇

一、核心特性解析:​

​无状态协议:每个HTTP请求独立处理,服务器不保存客户端状态(需通过Cookie/Session等技术实现状态管理)。

​持续连接(HTTP/1.1)​:默认复用TCP连接处理多个请求,显著减少延迟和资源消耗,通过Connection: keep-alive实现。

​请求-响应模型:客户端发起请求,服务器返回响应后立即断开连接(HTTP/1.0)或保持连接复用(HTTP/1.1+)。

二、URL结构详解:

标准格式:http://host[:port][/abs_path]

​协议标识:http:// 或 https://(浏览器自动补全)

​主机地址:域名(如www.example.com)或IP(如192.168.1.1)

​端口号:可选,默认80(HTTP)或443(HTTPS)

​资源路径:绝对路径,缺省时默认为根目录/

三、浏览器智能处理示例:​

输入 www.guet.edu.cn → 自动补全为 http://www.guet.edu.cn/

补充协议头http://

添加根路径/

使用默认端口80

输入 http:192.168.0.116:8080/index.jsp(实际应为http://192.168.0.116:8080/index.jsp)

协议头需完整http://

显式指定非标准端口8080

直接访问index.jsp资源

二、HTTP 协议详解之请求篇

HTTP请求结构规范

HTTP请求由三部分组成:请求行、请求报头、请求正文

一、请求行(Request Line)

格式:Method Request-URI HTTP-Version CRLF
组成要素:

Method:请求方法(全大写)

Request-URI:统一资源标识符

HTTP-Version:协议版本(如HTTP/1.1)

CRLF:回车换行符(
),标识行结束

二、HTTP请求方法详解

方法名

功能说明

应用场景示例

GET

获取指定URI资源

浏览器地址栏访问网页:GET /form.html HTTP/1.1

POST

向URI标识的资源提交附加数据

表单提交(见下方完整示例)

HEAD

仅获取URI资源的响应头信息

测试链接有效性、资源更新状态

PUT

请求服务器存储资源,并用URI作为标识

文件上传操作

DELETE

请求删除URI标识的资源

资源删除接口

TRACE

回显服务器收到的请求,用于测试

网络诊断

OPTIONS

查询服务器性能或资源支持的通信选项

跨域请求预检

CONNECT

保留方法(当前主要用于建立HTTPS隧道)

SSL加密通道建立

三、请求报头(Request Headers)

位于请求行之后,包含若干键值对,格式:Header-Name: Value CRLF
常见报头字段:

Host: 目标主机(必需)

Content-Length: 请求正文长度

Content-Type: 正文数据类型

Connection: 连接控制(如Keep-Alive)

Cache-Control: 缓存策略

四、请求正文(Request Body)

功能:承载具体传输数据
使用场景:

POST/PUT请求:提交表单数据(如user=jeffrey&pwd=1234)

文件上传:二进制数据流

API交互:JSON/XML格式数据

请求示例

五、结构说明:

请求行:方法+URI+协议版本

请求报头:定义元数据(空行分隔报头与正文)

请求正文:实际传输数据

六、关键特性说明

CRLF严格性:除行尾外禁止单独出现CR或LF

HEAD方法特性:响应体为空,仅返回与GET相同的头信息

协议版本必要性:决定服务器对请求的处理方式

三、HTTP 协议详解之响应篇

一、响应消息结构

HTTP响应由三部分组成:

​状态行​(Status Line)

​响应头​(Message Header)

​响应正文​(Response Body)

二、状态行(Status Line)

格式:HTTP-Version Status-Code Reason-Phrase CRLF
组成要素:

HTTP-Version:服务器使用的HTTP协议版本(如HTTP/1.1)

Status-Code:3位数字状态码

Reason-Phrase:状态码的文本描述

CRLF:回车换行符(

示例:HTTP/1.1 200 OK

三、状态码分类(Status-Code)

分类

类别描述

说明

1xx

信息响应

请求已被接收,继续处理

2xx

成功响应

请求被成功处理

3xx

重定向

需进一步操作完成请求

4xx

客户端错误

请求语法错误或无法完成

5xx

服务器错误

服务器处理请求失败

四、常见状态码详解

状态码

状态描述

说明

200 OK

请求成功

客户端请求已被正常处理

400 Bad Request

错误请求

请求存在语法错误,服务器无法解析

401 Unauthorized

未授权

需配合WWW-Authenticate头进行身份验证

403 Forbidden

禁止访问

服务器拒绝响应(如权限不足)

404 Not Found

资源未找到

请求的URL对应资源不存在

500 Internal Server Error

服务器内部错误

服务器处理请求时发生意外错误

503 Service Unavailable

服务不可用

服务器暂时无法处理请求(可能过载或维护)

五、响应头(Message Header)

位于状态行之后,包含服务器配置、响应元数据等信息

常见头字段(示例):

Content-Type:响应正文的MIME类型

Location:重定向目标URL(用于3xx状态)

Server:服务器软件信息

六、响应正文(Response Body)

服务器返回的具体资源内容

格式由Content-Type头指定(如text/html, application/json等)

四、HTTP 协议详解之消息报头篇

一、消息结构概览

HTTP消息分为请求消息(客户端到服务器)和响应消息(服务器到客户端),均包含以下部分:

二、报头类型与通用规范

​通用报头:适用于请求和响应消息

​请求报头:仅用于请求消息

​响应报头:仅用于响应消息

​实体报头:描述消息正文的元数据

所有头部格式:字段名: 值(字段名大小写不敏感)

三、通用报头详解

字段名

作用说明

典型值示例

​Cache-Control

控制缓存行为(单向指令)

no-cache, max-age=3600, public, must-revalidate

​Date

消息生成时间

Wed, 05 Jan 2023 14:30:00 GMT

​Connection

控制网络连接

keep-alive(保持连接)
close(响应后关闭)

缓存控制实践:

四、请求报头详解

字段名

作用说明

典型值示例

​Accept

可接受的MIME类型

text/html, application/json

​Accept-Charset

支持的字符集(默认接受所有)

utf-8, iso-8859-1

​Accept-Encoding

支持的内容编码

gzip, deflate

​Accept-Language

优先语言

zh-CN, en-US;q=0.7

​Authorization

身份验证凭证

Basic base64(username:password)

​Host (必须字段)

目标主机和端口

www.example.com:8080

​User-Agent

客户端软硬件信息

Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/98.0.4758.102

典型请求示例:

五、响应报头详解

字段名

作用说明

典型值示例

​Location

重定向目标URL

https://new.example.com/path

​Server

服务器软件信息

Apache/2.4.6 (CentOS), Nginx/1.18.0

​WWW-Authenticate

身份验证方案(401响应必须)

Basic realm=”Access to site”

重定向示例:

六、实体报头详解

字段名

作用说明

典型值示例

​Content-Encoding

正文编码方式

gzip, br

​Content-Language

内容自然语言

zh-CN, en-GB

​Content-Length

正文字节数

1024

​Content-Type

媒体类型和字符集

text/html; charset=UTF-8

​Last-Modified

资源最后修改时间

Thu, 12 Jan 2023 09:30:45 GMT

​Expires

资源过期时间

Fri, 01 Jan 2030 00:00:00 GMT

缓存控制组合策略:

七、重点总结

​缓存控制:优先使用Cache-Control,兼容使用Pragma和Expires

​内容协商:Accept-*系列头部实现内容类型适配

​连接管理:Connection: keep-alive提升性能,close确保连接终止

​安全实践:Authorization与WWW-Authenticate配合实现基础认证

​编码规范:Content-Encoding与Accept-Encoding需对应,避免解析错误

五、利用 telnet 观察 http 协议的通讯过程

一、实验目的

理解HTTP协议的无状态、请求-响应通信模型

掌握通过Telnet手动构造HTTP请求报文的方法

观察分析服务器响应的状态码、报文头及内容

二、实验准备

Telnet工具:Windows系统默认安装(需在控制面板中启用)

开启回显功能​(避免输入不可见):

​目标网站:确保测试网站支持HTTP协议(非HTTPS)

三、实验步骤

1. 基础请求示例

完整请求示例

扩展测试

四、实验结果分析

​成功响应(200 OK)​

​失败响应(404 Not Found)​

五、关键知识点

协议版本差异:

HTTP/1.0 默认短连接

HTTP/1.1 支持持久连接(需Connection: Keep-Alive)

常见方法对比:

方法

作用

是否包含Body

GET

获取资源

HEAD

仅获取响应头

POST

提交数据

重要响应头解析:

Content-Length:实体主体字节数

Cache-Control:缓存控制策略

Set-Cookie:服务端设置客户端Cookie

六、注意事项

输入精度要求:

必须包含Host头部(HTTP/1.1强制要求)

请求头与内容之间需插入两个连续换行

​排错指南:

出现连接中断时检查防火墙设置

返回4xx状态码时检查URL拼写

中文网站建议尝试GET / HTTP/1.1

​协议规范参考:

RFC 2616(HTTP/1.1):https://tools.ietf.org/html/rfc2616

最新HTTP/2标准:RFC 7540

七、实验延伸

尝试构造POST请求提交表单数据

观察重定向响应(302 Found)的处理过程

使用Wireshark抓包对比Telnet通信过程

提示:现代网站多使用HTTPS,建议在局域网环境搭建HTTP测试服务器进行深度实验

六、HTTP 协议相关技术补充

一、基础概念

高层协议体系

包含FTP(文件传输)、SMTP(邮件传输)、DNS(域名解析)、NNTP(新闻传输)及HTTP(超文本传输)。

网络中介类型

类型

功能特性

代理

作为客户端/服务器中介,可重写请求并转发。常用于防火墙穿透或协议增强(如缓存、内容过滤)。

网关

充当源服务器角色,客户端无感知。支持协议转换(如HTTP到非HTTP系统资源访问)。

通道

数据中继不修改内容,用于穿透无法解析协议的中间节点(如加密隧道)。

二、协议分析技术应用

入侵检测方向

模块化解析高层协议(如HTTP)成为未来趋势,通过分析流量特征识别攻击行为。

常用HTTP代理端口:80(标准)、3128(Squid)、8080(备用)。

三、关键安全漏洞

Content-Length拒绝服务攻击

​原理:恶意设置超长Content-Length头(如999999999),服务器持续分配内存直至耗尽。

​特点:攻击隐蔽性强,内存占满前无显著痕迹。

四、拒绝服务攻击(DoS)类型

基于TCP协议

​SYN Flood:伪造大量TCP连接请求,耗尽服务器资源。

基于ICMP/IP层

​Smurf攻击:伪造源IP广播ICMP包,触发响应风暴。

​TearDrop:发送重叠IP碎片致重组失败,引发系统崩溃。

Chargen反射攻击

​条件:目标需同时开放Chargen(19端口)和HTTP服务。

​流程:攻击者伪造源IP向多台Chargen服务器发送请求,导致目标被高速字符流淹没。

五、HTTP指纹识别技术

原理

通过分析服务器对非常规请求的响应差异(如协议版本、非法方法),识别服务类型。

测试方法

发送非常规请求(如DELETE/HTTP/1.0、GET/HTTP/3.0),观察响应特征。

对抗策略

修改服务器Banner信息(如Apache源码/IIS DLL文件)或使用插件模糊响应。

工具

Httprint:基于统计学和模糊逻辑,高效识别服务器类型。

六、性能优化与发展

并发连接机制

现代浏览器支持多连接并行下载资源(如图片),提升页面加载速度。

协议演进

HTTP/1.1:引入持久连接减少握手开销。

HTTP-NG:规划会话控制、增强内容协商等高效传输机制。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容