http协议格式 基于ABNF语义定义

ABNF 操作符

空白字符 SP; 用来分隔定义中的各个元素

  method  SP  request-target SP HTTP-version  CRLF

选择 / : 表示多个规则都可供选择的规则

       start-line = request-line / status-line

值范围: %c##-##

  OCTAL = "0"/"1"/"2"/"3"/"4"/"5"/"6"/"7" 与 OCTAL = %x30-37等价

序列组合(): 将规则组合起来,视为单个元素

不定量重复 m*n

    *  元素表示零个或者多个元素   *(header-field  CRLF)

   1*  元素表示一个或者多个元素, 2*4 元素表示两个至四个元素

可选序列 []

  [message-body]

 基于ABNF语义定义的HTTP消息格式

HTTP-message=start-line *( header-filed CRLF ) CRLF [ message-body ]

  • start-line=request-line / status-line
    • request-line=method SP resquest-status SP HTTP-version CRLF
    • status-line=HTTP-version SP status-code SP reason-phrase CRL
  • header-filed=field-name ":" OWS field-value OWS
    • OWS=*(SP / HTAB)
    • field-name=token
    • field-value=*(field-content / obs-fold )
  • message-body=*OCTET
原文地址:https://www.cnblogs.com/gavin11/p/13919658.html