HTTP协议
一、定义
HTTP协议(超文本传输协议):一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展语义和自然描述消息格式,
与基于网络的超文本信息系统灵活的互动。
二、HTTP消息的格式
(一)、语义话的表达格式
- 请求格式:
- 请求方法:GET/POST/PATCH/PUT/DELETE
- 版本号
path路径
以上三个组成请求行(request-line)
- HOST:域名
- 响应格式:
- 响应行(response-line)
响应体
request-line和response-line共同组成start-line
(二)、基于ABNF的严谨格式
ABNF:扩充巴科斯-瑙尔范式
- 操作符号:
- 空白字符:用来分割定义中的各个元素。例如:method SP request-target SP HTTP-version CRLF
- 选择‘/‘:表示多个规则都是可以选择的规则。例如:start-line = request-line/response-line,start-line可以是两者中的任意一个。
- 值范围:%##-## 。例如:如果希望取值在0-7之间,可以有两种表达方式:
- 方式一:OCTAL = ‘0‘ / ‘1‘ / ‘2‘ / ‘3‘ / ‘4‘ / ‘5‘ / ‘6‘ / ‘7‘ ,通过或的关系来取值。
- 方式二:OCTAL = %x30-37, 通过%进行范围取值,x30-37是十六进制的表示方式。
- 序列组合():将规则组合起来,视为单个元素
- 不定量重复:m* n
- 元素表示零个或者多个元素, 例如:*(header-field CRLF)表示多个头部字段,每一个头部都以CRLF结尾。
- m * n:1* 表示的是一个或者更多的元素,2 * 4表示两个至四个元素,此处的用法和正则匹配的规则相似。
- 可选序列[]:可有可无的元素,例如:[message-body]
- 核心规则

基于ABNF范式的HTTP协议格式:

HTTP协议
原文:https://www.cnblogs.com/ddzc/p/12365095.html