rfc1945-http1.0自译本-(3)

原创 2001年02月16日 11:26:00
 

要解释的名词=名词解释(name = definition

规则的名字(name)就是它本身(不带任何尖括号,“<”,“>”),后面跟个等号=,然后就是该规则的定义。如果规则需要用多个行来描述,利用空格进行缩进格式排版。某些基本的规则使用大写,如SP, LWS, HT, CRLF, DIGIT, ALPHA,等等。定义中还可以使用尖括号来帮助理解规则名的使用。

 

字面意思("literal"

              文字的字面意思放在引号中间,除非特别指定,该段文字是大小写敏感的。

 

规则1|规则2rule1 | 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 就是由三个字母组成字符串。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Berners-Lee, et al           Informational                      [Page 9]


 

#规则(#rule

#”与“*”类似,用于定义元素列表。

 

完整形式是“<n>#<m>元素”表示至少有<n>个至多有<m>个元素,中间用“,”或任意数量的空格(LWS-linear whitespace)来分隔,这将使列表非常方便,如“(*LWS 元素 * *LWS "," *LWS 元素 ))”就等同于“1#元素”。

 

空元素在结构中可被任意使用,但不参与元素个数的计数。也就是说,“(元素1),,(元素2)”仅表示2个元素。但在结构中,应至少有一个非空的元素存在。缺省值是0到无限,即“#(元素)”表示可取任何数值,包括0;而“1#元素”表示至少有1个;而“1#2元素”表示有1个或2个。

 

;注释(; comment

              分号后面是注释,仅在单行使用。

 

隐含*LWSimplied *LWS

本文的语法描述是基于单词的。除非另有指定,线性空格(LWS)可以两个邻近符号或分隔符(tspecials)之间任意使用,而不会对整句的意思造成影响。在两个符号之间必须有至少一个分隔符,因为它们也要做为单独的符号来解释。实际上,应用程序在产生HTTP结构时,应当试图遵照“通常方式”,因为现在的确有些实现方式在通常方式下无法正常工作。

 

2.2  基本规则(Basic Rules

下面的规则将用于本文后面对结构基本解析。

US-ASCII 编码字符集定义[17]

 

OCTET                   = <8-bit的顺序数据,即bytes>

CHAR                     = < US-ASCII字符(取值为0 – 127OCTET>

UPALPHA        = < US-ASCII 大写字符"A""Z">

LOALPHA        = <US-ASCII 小写字符"a""z">

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Berners-Lee, et al           Informational                     [Page 10]


 

       ALPHA              = UPALPHA | LOALPHA

       DIGIT              = < US-ASCII 数字"0""9">

       CTL                = < US-ASCII 控制字符(取值031octet )和DEL 127>

       CR                  = <US-ASCII CR, 回车符carriage return13>

       LF                   = <US-ASCII LF, 换行符linefeed 10>

       SP                   = <US-ASCII SP, 空格space 32>

       HT                  = <US-ASCII HT, 水平制表符horizontal-tab9>

       <">                  = <US-ASCII 双引号标记double-quote mark 34>

 

HTTP/1.0规定,除实体主体(Entity-Body,见附录B容错应用)外,所有协议元素的行结束标志都是CRLF(按字节顺序)。在实体主体内部的行结束标志定义及其对应的介质类型定义,见3.6节的描述。

 

CRLF              = CR LF

 

HTTP/1.0的头可以折成许多行,只要每个后续行以空格或水平制表符开头。所有的线性空格(LWS),同空格(SP)有相同的语义。

 

LWS              = [CRLF] 1*( SP | HT )

 

实际上,有些应用并没有考虑处理这样多行的头,所以从兼容性上考虑,HTTP/1.0应用最好不要产生折成多行的头。

 

TEXT规则只是用于描述消息解释器不关心的域的内容及其取值。文本内容可包含不同于US-ASCII的字符。

 

TEXT              = <除了控制字符(CTLs)之外的任何OCTET,包括LWS >

             

在标题域中的收件人域如包含US-ASCII字符集以外的字符,这些字符将按照ISO-8859-1标准来解释。

 

十六进制数字型字符在几个协议元素中到。

 

HEX              = "A" | "B" | "C" | "D" | "E" | "F"

                             | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT

 

许多HTTP/1.0头域的内容由被LWS分隔的单词或特殊字符组成,这些特殊字符必须置于引号中间的字符串内,作为参数值使用。

 

Word              = 符号(token| 被引号引起来的字符串

 

 

 

 

Berners-Lee, et al           Informational                     [Page 11]


 

token              = 1*<除控制字符(CTLs)或tspecials之外的任意字符>

 

tspecials         = "(" | ")" | "<" | ">" | "@"

                      | "," | ";" | ":" | "/" | <">

                      | "/" | "[" | "]" | "?" | "="

                      | "{" | "}" | SP | HT

             

HTTP头域中可用括号表示注释文字。注释只允许写在包含注释的域,做为域值定义的一部分。在除此之外其它域中,括号将被视为域值。

 

comment          = "(" *( ctext | comment ) ")"

ctext                     = <除圆括号外的任何TEXT>

 

被双引号圈中的文本字符串将被视为一个单词。

 

quoted-string     = ( <"> *(qdtext) <"> )

qdtext              = <除了双引号及控制字符之外的任何字符,包括LWS >

 

              HTTP/1.0中不允许使用后斜线“/”来引用单字符。

 

3.  协议参数(Protocol Parameters

 

3.1  HTTP版本(HTTP Version

      

       HTTP采用主从(<major>.<minor>)数字形式来表示版本。协议的版本政策倾向于让发送方表明其消息的格式及功能,而不仅仅为了获得通讯的特性,这样做的目的是为了与更高版本的HTTP实现通讯。只增加扩展域的值或增加了不影响通讯行为的消息组件都不会导致版本数据的变化。当协议消息的主要解析算法没变,而消息语法及发送方的隐含功能增加了,将会导致从版本号(<minor>)增加;当协议中消息的格式变化了,主版本号(<major>)也将发生改变。

       HTTP消息的版本由消息第一行中的HTTP版本域来表示。如果消息中的协议版本没有指定,接收方必须假定它是符合HTTP/0.9的简单标准。

 

 

 

 

 

 

 

 

 

 

 

 

Berners-Lee, et al           Informational                     [Page 12]


 

HTTP-Version           = "HTTP" "/" 1*DIGIT "." 1*DIGIT

             

注意,主从版本应当被看作单独的整数,因为它们都有可能增加,从而超过一位整数。因而,HTTP/2.4HTTP/2.13版本低,而HTTP/2.13又比HTTP/12.3版本低。版本号前面的0将被接收方忽略,而在发送方处也不应产生。

             

本文档定义了HTTP协议的0.91.0版本。发送完整请求(Full-Request)及完整回应(Full-Response)消息的应用必须指明HTTP的版本为“HTTP/1.0”。

 

HTTP/1.0服务器必须:

 

o识别HTTP/0.9HTTP/1.0请求命令中的请求队列(Request-Line)的格式。

o理解任何HTTP/0.9HTTP/1.0中的合法请求格式。

o 使用与客户端相同版本的协议进行消息回应。

 

HTTP/1.0 客户端必须:

 

      o 识别HTTP/1.0回应中状态队列(Status-Line)的格式。

o 理解HTTP/0.9HTTP/1.0中合法回应的格式。

 

       当代理及网关收到与其自身版本不同的HTTP请求时,必须小心处理请求的推送,因为协议版本表明发送方的能力,代理或网关不应发出高于自身版本的消息。如果收到高版本的请求,代理或网关必须降低该请求的版本,并回应一个错误。而低版本的请求也应在被推送前升级。

代理或网关回应请求时必须遵照前面列出的规定。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Berners-Lee, et al           Informational                     [Page 13]

自卑与超越:人类个体心理学最卓越的作品(经典完整译本)

客观地说,只有在人们遇到某种困难和挫折的时候才会问诸如此类的问题。相反,那些人生之路平坦顺畅、几乎没有遇到过困难的人,大多不会产生这个念头。 阿弗雷德•阿德勒, 自卑与超越:人类个体心理学最卓越的作...
  • cntanghai
  • cntanghai
  • 2015年08月19日 23:05
  • 2348

《道德经译本》

道德经                                             -------曾孝译 序言: 《道德经》是我遇到过最好的书籍,我被5000年前的智...
  • Bennes
  • Bennes
  • 2017年12月18日 14:28
  • 69

OAuth 2.0中文译本

OAuth 2.0中文译本   (一)背景知识 OAuth 2.0很可能是下一代的“用户验证和授权”标准,目前在国内还没有很靠谱的技术资料。为了弘扬“开放精神”,让业内的人更容易理解“开放平台”...
  • dipolar
  • dipolar
  • 2013年11月20日 17:02
  • 710

Linux内核编程codingStyle译本

Linux内核代码风格这是一个简短的文档,描述了linux内核的首选代码风格。代码风格是因人而异的,而且我 不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格, 并且我也希...
  • qq_27977257
  • qq_27977257
  • 2017年02月07日 10:45
  • 102

2014年good fellow提出GANs论文译本

GoodFellow2014年提出GANs网路时的论文,现将其翻译,欢迎大家交流学习。
  • qq_40667584
  • qq_40667584
  • 2017年11月12日 17:02
  • 137

3*3卷积核实例

(转)3x3 convolution kernels with online demo 3x3 convolution kernels with online demo Which are t...
  • tina_ttl
  • tina_ttl
  • 2016年04月01日 10:33
  • 1537

代数问题3*3矩阵的逆矩阵

问题描述: 方阵A的逆矩阵表示为A-1,满足A* A-1=I,其中I是所有对角线上的值为1而其他所有值为0的单位矩阵。例如矩阵的逆矩阵是: 也就是: 对于一个3*3的矩阵: 使用下面的公式可以得到...
  • qq_35495953
  • qq_35495953
  • 2017年01月26日 22:29
  • 217

免费的虚幻3引擎其实不好用啊

摘要:看来是要停止对UDK的研究了,不太适合。对于这个所谓的免费UE3引擎,有几点感想,和大家分享一下。 内容:11月初,UDK免费发布的时候的确是很兴奋,正好赶上考虑是否继续使用Quest3D的时...
  • Chinamming
  • Chinamming
  • 2013年11月21日 16:17
  • 3219

关于Random(47)和nextint(3)的问题

 import java.util.Random; public class T {   static void test() {     Random r = new Random(20...
  • jianbo2233
  • jianbo2233
  • 2015年12月07日 17:25
  • 445

在Eclipse下配置基于Java的OpenCV开发环境[官网译本]

最近研究OpenCV想用java进行开发,因此研究了一下怎么在Eclipse中配置基于java的Opencv. 第一步:先到OpenCV官网下载你想要的版本,假设使用的是2.4.6版本。这里附上下载地...
  • hui3909
  • hui3909
  • 2016年02月29日 15:44
  • 449
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:rfc1945-http1.0自译本-(3)
举报原因:
原因补充:

(最多只允许输入30个字)