基于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.

转载于:https://www.cnblogs.com/fengxiaoyuan/p/10903169.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值