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


    ABNF (Augmented BNF)官方文档

    https://www.ietf.org/rfc/rfc5234.txt

    巴科斯范式的英文缩写为BNF,它是以美国人巴科斯(Backus)和丹麦人(Naur)的名字命名的一种形式化的语法表示方法,用来描述语法的一种形式体系,是一种典型的元语言。又称巴科斯-诺尔形式(Backus-Naur form)。它不仅能严格的表示语法规则,而且所描述的语法与上下文无关的。它具有语法简单,表示明确,便于语法分析和编译的特点。

     ABNF(扩充巴科斯-瑙尔范式)操作符

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

    • 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

       

    在xshell下面:先输入 

    telnet www.taohui.pub 80

    回车后会出现

    Trying 116.62.160.193...
    Connected to www.taohui.pub.
    Escape character is '^]'.

    然后再输入:

    GET /wp-content/plugins/Pure-Highlightjs_1.0/assets/pure-highlight.css?ver=0.1.0 HTTP/1.1

    回车后继续输入:

    Host:www.taohui.pub

    即可看见上面的界面。

    上面的截图是通过Wireshark工具捕获上面xshell中请求和响应的报文,这样可以看见一些不可见的字符,如图中的20代表着空格,0d 0a 代表着CRLF.

  • 相关阅读:
    ubuntu18.04LTS服务器用vituralenv安装和配置pytorch和tensorflow
    ubuntu18.04安装Anaconda
    XeLaTeX下如何以原大小显示PNG
    JS黑魔法之this, setTimeout/setInterval, arguments
    sicily 1198. Substring (递归全排列+排序)
    sicily 1046. Plane Spotting(排序求topN)
    sicily 1051. Biker's Trip Odomete
    sicily 1176. Two Ends (Top-down 动态规划+记忆化搜索 v.s. Bottom-up 动态规划)
    sicily 1035. DNA matching
    关于组织自定义皮肤/主题的一点思考
  • 原文地址:https://www.cnblogs.com/fengxiaoyuan/p/10903169.html
Copyright © 2020-2023  润新知