HTTP协议

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

三、分层模型

OSI七层模型和TCP/IP分层模型的对比
七层模型

posted @ 2020-02-26 08:51  大道至诚  阅读(179)  评论(0编辑  收藏  举报