HTTP协议

China☆狼群 提交于 2020-02-26 09:39:51

HTTP协议

一、定义

HTTP协议(超文本传输协议):一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展语义和自然描述消息格式,
与基于网络的超文本信息系统灵活的互动。

二、HTTP消息的格式

(一)、语义话的表达格式

  • 请求格式:
    • 请求方法:GET/POST/PATCH/PUT/DELETE
    • 版本号
    • path路径

      以上三个组成请求行(request-line)

    • HOST:域名
  • 响应格式:
    • 响应行(response-line)
      • HTTP请求
      • 状态码
    • 响应体

      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协议格式:
图片

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!