HTTP是应用级协议,它适应了分布式超媒体协作系统对灵活性及速度的要求。它是一个一般的、无状态的、基于对象的协议,通过对其请求方法(request methods)进行扩展,可以被用于多种用途,比如命名服务器(name server)及分布式对象管理系统。 HTTP 的一个特性是其数据表现类型允许系统的构建不再依赖于要传输的数据。 HTTP 自从 1990 年就在 WWW 上被广泛使用。该规范反映了“HTTP/1.0”的普通用
2. 标志转换及通用语法(Notational Conventions and Generic Grammar)
2.1 补充反馈方式(Augmented BNF)
与RFC822[7]很类似,本文对所有机制的说明都是以散文和补充反馈的方式来描述的。对于实现者来说,要想理解这些约定,必须对这些符号很熟悉。补充反馈方式(augmented BNF)包括下面的结构:
要解释的名词=名词解释(name = definition)
规则的名字(name)就是它本身(不带任何尖括号,“<”,“>”),后面跟个等号=,然后就是该规则的定义。如果规则需要用多个行来描述,利用空格进行缩进格式排版。某些基本的规则使用大写,如SP, LWS, HT, CRLF, DIGIT, ALPHA,等等。定义中还可以使用尖括号来帮助理解规则名的使用。
字面意思("literal")
文字的字面意思放在引号中间,除非特别指定,该段文字是大小写敏感的。
规则1|规则2(rule1 | rule2)
“|”表示其分隔的元素是可选的,比如,“是|否”要选择‘是’或‘否’。
(规则1 规则2)((rule1 rule2))
在圆括号中的元素表明必选其一。如(元素1(元素2|元素3)元素4)可表明两种意思,即“元素1 元素2 元素4”和“元素1 元素3 元素4”
*规则(*rule)
在元素前加星号“*”表示循环,其完整形式是“<n>*<m>元素”,表明元素最少产生<n>次,最多<m>次。缺省值是0到无限,例如,“1*元素”意思是至少有一个,而“1*2元素”表明允许有1个或2个。
[规则]([rule])
方括号内是可选元素。如“[元素1 元素2]”与“*1(元素1 元素2)”是一回事。
N 规则(N rule)
表明循环的次数:“<n>(元素)”就是“<n>*<n>(元素)”,也就是精确指出<n>取值。因而,2DIGIT 就是2位数字, 3ALPHA 就是由三个字母组成字符串。
#规则(#rule)
“#”与“*”类似,用于定义元素列表。
完整形式是“<n>#<m>元素”表示至少有<n>个至多有<m>个元素,中间用“,”或任意数