﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-彪悍的人生不需要解释-文章分类-HTTP1.1协议中文翻译</title><link>http://www.blogjava.net/baixch/category/3398.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 07:36:25 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 07:36:25 GMT</pubDate><ttl>60</ttl><item><title>http(大纲)&lt;7&gt;</title><link>http://www.blogjava.net/baixch/articles/14942.html</link><dc:creator>英雄</dc:creator><author>英雄</author><pubDate>Fri, 07 Oct 2005 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/baixch/articles/14942.html</guid><wfw:comment>http://www.blogjava.net/baixch/comments/14942.html</wfw:comment><comments>http://www.blogjava.net/baixch/articles/14942.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/baixch/comments/commentRss/14942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baixch/services/trackbacks/14942.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 13 Caching in HTTPHTTP多应用于分布式信息系统，通过使用response缓存来提高性能。HTTP/1.1包括许多元素来使缓存发挥作用成为可能。Cache的目的和机制概述。关于降低语义透明度。13.1.1 Cache Correctness返回最新response：满足的条件&nbsp;&nbsp; &nbsp;如果无法做到，那么应该返回error,war...&nbsp;&nbsp;<a href='http://www.blogjava.net/baixch/articles/14942.html'>阅读全文</a><img src ="http://www.blogjava.net/baixch/aggbug/14942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baixch/" target="_blank">英雄</a> 2005-10-07 17:49 <a href="http://www.blogjava.net/baixch/articles/14942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP&lt;6&gt;</title><link>http://www.blogjava.net/baixch/articles/14245.html</link><dc:creator>英雄</dc:creator><author>英雄</author><pubDate>Tue, 27 Sep 2005 14:24:00 GMT</pubDate><guid>http://www.blogjava.net/baixch/articles/14245.html</guid><wfw:comment>http://www.blogjava.net/baixch/comments/14245.html</wfw:comment><comments>http://www.blogjava.net/baixch/articles/14245.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baixch/comments/commentRss/14245.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baixch/services/trackbacks/14245.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 9 方法定义HTTP/1.1通用方法的定义如下。虽然这个集合可以被扩展，但是并不能保证client和server拥有对扩展的相同定义。HOST request-header头区必须存在于所有的HTTP/1。1request。9．1 安全和等幂方法9.1.1 安全方法实现者要意识到软件代表了用户在Internet上的操作，应该认真地让用户知道他们可以采取的action会给他们自己...&nbsp;&nbsp;<a href='http://www.blogjava.net/baixch/articles/14245.html'>阅读全文</a><img src ="http://www.blogjava.net/baixch/aggbug/14245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baixch/" target="_blank">英雄</a> 2005-09-27 22:24 <a href="http://www.blogjava.net/baixch/articles/14245.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP协议&lt;5&gt;</title><link>http://www.blogjava.net/baixch/articles/13826.html</link><dc:creator>英雄</dc:creator><author>英雄</author><pubDate>Fri, 23 Sep 2005 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/baixch/articles/13826.html</guid><wfw:comment>http://www.blogjava.net/baixch/comments/13826.html</wfw:comment><comments>http://www.blogjava.net/baixch/articles/13826.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baixch/comments/commentRss/13826.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baixch/services/trackbacks/13826.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 5 请求一个从client到server的request，在第一行，包含应用于资源的方法，资源标志，和使用的协议版本。Request = Request-Line ; Section 5.1*(( general-header ; Section 4.5| request-header ; Section 5.3| entity-header ) CRLF) ; Section...&nbsp;&nbsp;<a href='http://www.blogjava.net/baixch/articles/13826.html'>阅读全文</a><img src ="http://www.blogjava.net/baixch/aggbug/13826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baixch/" target="_blank">英雄</a> 2005-09-23 11:51 <a href="http://www.blogjava.net/baixch/articles/13826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP1.1翻译&lt;4&gt;</title><link>http://www.blogjava.net/baixch/articles/13681.html</link><dc:creator>英雄</dc:creator><author>英雄</author><pubDate>Wed, 21 Sep 2005 13:21:00 GMT</pubDate><guid>http://www.blogjava.net/baixch/articles/13681.html</guid><wfw:comment>http://www.blogjava.net/baixch/comments/13681.html</wfw:comment><comments>http://www.blogjava.net/baixch/articles/13681.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baixch/comments/commentRss/13681.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baixch/services/trackbacks/13681.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 4.HTTP 消息4．1消息类型HTTP消息由客户端发到服务器端的request和相反方向的response组成。HTTP-message = Request | Response ; HTTP/1.1 messagesRequest(sec5)和response(sec6)消息使用RFC822[9]的通用消息格式来传递实体（message的有效负荷）。由一个开始行，0或多个头区（...&nbsp;&nbsp;<a href='http://www.blogjava.net/baixch/articles/13681.html'>阅读全文</a><img src ="http://www.blogjava.net/baixch/aggbug/13681.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baixch/" target="_blank">英雄</a> 2005-09-21 21:21 <a href="http://www.blogjava.net/baixch/articles/13681.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP/1.1协议中文翻译&lt;3&gt;</title><link>http://www.blogjava.net/baixch/articles/13568.html</link><dc:creator>英雄</dc:creator><author>英雄</author><pubDate>Tue, 20 Sep 2005 12:53:00 GMT</pubDate><guid>http://www.blogjava.net/baixch/articles/13568.html</guid><wfw:comment>http://www.blogjava.net/baixch/comments/13568.html</wfw:comment><comments>http://www.blogjava.net/baixch/articles/13568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baixch/comments/commentRss/13568.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baixch/services/trackbacks/13568.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 3协议参数3．1HTTP版本HTTP使用一个“&lt;major&gt;.&lt;minor&gt;”模式来标志协议版本。协议版本就是要允许发送者表达message格式的信息以及它理解更多HTTP协议的能力（不只是说通讯的功能）。加了不影响通讯行为的MESSAGE组件或加了扩展的域值都不必改变版本号。&lt;minor&gt;增大表示协议被改变，一般的MESSAGE解析算法没有变，但是增加...&nbsp;&nbsp;<a href='http://www.blogjava.net/baixch/articles/13568.html'>阅读全文</a><img src ="http://www.blogjava.net/baixch/aggbug/13568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baixch/" target="_blank">英雄</a> 2005-09-20 20:53 <a href="http://www.blogjava.net/baixch/articles/13568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP/1.1协议翻译&lt;2&gt;（有不当之处敬请高手指点，本作品仅供个人翻译交流使用）</title><link>http://www.blogjava.net/baixch/articles/13153.html</link><dc:creator>英雄</dc:creator><author>英雄</author><pubDate>Fri, 16 Sep 2005 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/baixch/articles/13153.html</guid><wfw:comment>http://www.blogjava.net/baixch/comments/13153.html</wfw:comment><comments>http://www.blogjava.net/baixch/articles/13153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/baixch/comments/commentRss/13153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baixch/services/trackbacks/13153.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">2．2基本规则<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">下面这些规则描述了基本的解析符号，贯穿于整篇规范中。<SPAN lang=EN-US>US-ASCII字符集在ANSI X3.4-1986[21]中被定义。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">OCTET = &lt;any 8-bit sequence of data&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">CHAR = &lt;any US-ASCII character (octets 0 - 127)&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">UPALPHA = &lt;any US-ASCII uppercase letter "A".."Z"&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">LOALPHA = &lt;any US-ASCII lowercase letter "a".."z"&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">ALPHA = UPALPHA | LOALPHA<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">DIGIT = &lt;any US-ASCII digit "0".."9"&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">CTL = &lt;any US-ASCII control character<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">(octets 0 - 31) and </SPAN><?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:State><st1:place><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">DEL</SPAN></st1:place></st1:State><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier"> (127)&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">CR = &lt;US-ASCII CR, carriage return (13)&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">LF = &lt;US-ASCII LF, linefeed (10)&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">SP = &lt;US-ASCII SP, space (32)&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">HT = &lt;US-ASCII HT, horizontal-tab (9)&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">&lt;"&gt; = &lt;US-ASCII double-quote mark (34)&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">HTTP/1。1 定义了回车换行作为所有协议元素行结束标志，entity-body除外。在entity-body的行结束标志和它相关联的数据类型紧密联系，des3.7。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">CRLF = CR LF<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">HTTP/1。1头区的值可以多行，但需要接续行以一个空格或水平TAB开头。所有的LWS，可以转弯，都和SP有相同的语义。一个*可以在解释域值和转向message downstream时代替任何的LWS用一个单独的SP。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">LWS =[CRLF]1*（SP|HT）<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">TEXT只被用来描述那些不会被message 解析器解析的域内容域值。只要按RFC2047[14]编码时，*TEXT可以包含除ISO-8859-1[22]在外的所有字符。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">TEXT = &lt;any OCTET except CTLs,but including LWS&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">一个<SPAN lang=EN-US>CRLF在TEXT定义中只作为头区的继续的一部分。多行的LWS会在其所在TEXT被解释前被一个单独的SP取代。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">十六进制数字字符在几个协议元素中被使用。<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">HEX = "A" | "B" | "C" | "D" | "E" | "F"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">| "a" | "b" | "c" | "d" | "e" | "f" | DIGIT<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">许多<SPAN lang=EN-US>HTTP/1。1头区值由LWS或一些特殊字符分隔的字符组成。而在参数值（des3.6）中这些特殊的字符必须在一对引号中被使用。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">token = 1*&lt;any CHAR except CTLs or separators&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">separators = "(" | ")" | "&lt;" | "&gt;" | "@"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">| "," | ";" | ":" | "\" | &lt;"&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">| "/" | "[" | "]" | "?" | "="<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">| "{" | "}" | SP | HT<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">注释可以包含在一些<SPAN lang=EN-US>HTTP头区内，但是要在（）内。而且只能在注释区内。在其他区，会被认为是区值的一部分。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">comment = "(" *( ctext | quoted-pair | comment ) ")"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">ctext = &lt;any TEXT excluding "(" and ")"&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">一个<SPAN lang=EN-US>text字符串如果被双引号包着，那会被认为是一个单独的词。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">quoted-string = ( &lt;"&gt; *(qdtext | quoted-pair ) &lt;"&gt; )<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">qdtext = &lt;any TEXT except &lt;"&gt;&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">斜划线可以被作为单字符的转换机制，但是必须要在引号内包着，并且是在注释区。<SPAN lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">quoted-pair = "\" CHAR<o:p></o:p></SPAN></P><img src ="http://www.blogjava.net/baixch/aggbug/13153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baixch/" target="_blank">英雄</a> 2005-09-16 14:51 <a href="http://www.blogjava.net/baixch/articles/13153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP/1.1协议翻译&lt;1&gt;（有不当之处敬请高手指点，本作品仅供个人翻译交流使用）</title><link>http://www.blogjava.net/baixch/articles/13135.html</link><dc:creator>英雄</dc:creator><author>英雄</author><pubDate>Fri, 16 Sep 2005 01:02:00 GMT</pubDate><guid>http://www.blogjava.net/baixch/articles/13135.html</guid><wfw:comment>http://www.blogjava.net/baixch/comments/13135.html</wfw:comment><comments>http://www.blogjava.net/baixch/articles/13135.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/baixch/comments/commentRss/13135.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/baixch/services/trackbacks/13135.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">1 引言（2005-9-16）<BR>1．1目的<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">HTTP是一个为分布式的协作的超媒体的信息系统而建立的应用层上的协议。自从1990年就被www采用。第一个版本，HTTP/0。9，是一个简单的跨INTERNET传输原始数据的协议。HTTP/1.0（在RFC1945[6]描述），<SPAN style="COLOR: red"><FONT color=#000000>允许信息以类似MIME形式存在（包含关于传输数据的描述元数据和一些关于REQUEST/RESPONSE语义描述符</FONT></SPAN>）<SPAN style="COLOR: black">。但是，HTTP/1。0并没有考虑到多级代理，缓存，持久连接的需要，或着虚拟主机。另外，越来越多的HTTP/1。0的不兼容实现也使得一个新版本的出现变的必要（需要一个统一版本来使协议双方确定彼此实现了哪些功能）。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">这份规范定义了<SPAN lang=EN-US>HTTP/1。1协议。这份协议比HTTP/1。0包含了更严格的限制，以此来保证实现的可靠性，兼容性。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">实际的信息系统要求更多功能而不仅仅是简单的取数据，将包括查询，</SPAN><SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><FONT color=#000000>前台更新</FONT></SPAN><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">，注解。<SPAN lang=EN-US>HTTP允许一个开放的方法和头的集合来表示REQUEST的确切要求（对基于URI,URL,URN指定的资源的要求）。而传递的信息则采用类似MIME信息格式。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">HTTP也被用来做客户端和处理其他信息系统（SMTP，NNTP，FTP，GOPHTER，WAIS）。的代理/网关的交流。这样，HTTP允许各种各样的应用访问基本的多媒体资源。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">1.<SPAN style="mso-spacerun: yes">  </SPAN>2要求<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">在这个文档里出现的关键词</SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">“MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL”按RFC2119[34]描述的那样解释。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">如果有<SPAN lang=EN-US>1个或多个MUST，REQUIRED水平的要求未满足，那么这个实现就是不兼容的。如果满足所有的MUST，REQUIRED，SHOULD水平的要求，那么这个实现就“unconditionallycompliant”;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">满足所有<SPAN lang=EN-US>MUST但是不是所有SHOULD是“conditionally compliant”。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">1．3术语<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">这个规范用了许多术语来描述在<SPAN lang=EN-US>HTTP交流中的参与者和对象。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Connection<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">在<SPAN lang=EN-US>2个要交流的程序间建立的虚拟传输层信路。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Message<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">基本的<SPAN lang=EN-US>HTTP交流单元。由结构化的字节流构成，其结构符合SECTION4的词法定义；通过CONNECTION传递。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Request<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">一个<SPAN lang=EN-US>HTTP request message，SECTION 5 DES。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Response<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">一个<SPAN lang=EN-US>HTTP response message，SECTION 6 DES。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Resource<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">一个能够被<SPAN lang=EN-US>URI标识的网络数据对象或服务，SECTION3。2 DES。资源可以有多种表示，并且可以在其他方面有所变化。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Entity<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">被一个<SPAN lang=EN-US>request或response作为有效负荷传输的信息。由头区的元数据信息和体区的数据区组成，SECTION7 des。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Representation<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">在一个<SPAN lang=EN-US>response里的属于content negotiation的entity，SECTION12 des。在1个response中可以存在多个representation。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Content negotiation<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">一种机制，用来选择合适的<SPAN lang=EN-US>representation来服务一个request，SECTION12 des。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Variant<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个资源可以在任何给定时刻拥有多个<SPAN lang=EN-US>representation。每一个被命名为variant。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Client<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">一个用来建立连接发送<SPAN lang=EN-US>request的程序。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">User agent<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">发送一个<SPAN lang=EN-US>request的client。最常见的是浏览器<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Server<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">接受连接用来为<SPAN lang=EN-US>request服务并且发送回response的应用程序。任何一个程序都可以既做server，又做client,这里的概念指的就是在一次connection中的角色，而不是一般意义下的程序的能力。同样，任何server可以作为一个origin server，proxy,gateway,或者tunnel，基于请求的性质做出不同的行为。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Orgin server<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">一个指定的资源的所在地或被创建地的<SPAN lang=EN-US>server。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Proxy<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">一个中间程序，既做<SPAN lang=EN-US>server又做client(做client是为了其他的的clients)。请求被内部服务或者被传递（有可能做下翻译）到其他server。一个proxy必须实现规范关于client和server的双重要求。一个</SPAN></SPAN><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">“transparent proxy“是一个不对request和response做超越代理鉴定要求处理的proxy，相反就是做。除了“transparent proxy”或者“non-transparent proxy”被明确指定的特殊行为外，HTTP proxy 的要求也适用于这两种proxy。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Gateway<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个用来为其他<SPAN lang=EN-US>server服务的server。不象一个proxy，一个gateway接受请求就好象他是请求resource的origin server一样；而请求client可能根本就不知道经过了一个gateway。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Tunnel<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个中间程序，在两个<SPAN lang=EN-US>conncetion之间做一个透明传递。一旦激活，它将不被认为是HTTP交流的一部分，虽然它可能是被HTTP请求初始化的。当两个connection都关闭后它也消失了。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Cache<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">程序对<SPAN lang=EN-US>reponse message的局部存储，包括控制，查询，删除存储的子系统。一个cache存储cache response用来应对未来的同样的请求，达到降低reponse时间和带宽消耗的目的。任何client和server都可以包括一个cache，但是一个cache不能被一个tunnel使用。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Cacheable<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">如果一个<SPAN lang=EN-US>cache可以存储response message的备份来应对以后的请求，那么这个response就是cacheable。SECTION13 des。即使一个response是Cacheable，也有另外的限制来决定是否一个cache可以用一个cache拷贝来应对请求。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">First-hand<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个<SPAN lang=EN-US>response是从origin server或经过了几个proxy过来的那么就是first-hand。如果它的有效性被origin server校验过那它也是first-hand。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Explicit expiration time<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Origin server确定的关于一个entity不应再由一个cache未经进一步校验就返回的时间。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Herristic expiration time<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">如果一个<SPAN lang=EN-US>Explicit expiration time不可用，那么这个时间被缓存使用<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">age<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个<SPAN lang=EN-US>response的age是自从它被发送或成功地被origin server校验后的时间段<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">freshness lifetime<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个<SPAN lang=EN-US>response自从产生到expiration time之间的时间长度<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">fresh<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个<SPAN lang=EN-US>response是fresh的，如果它的age还没有超过它的freshness lifetime。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Stale<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个<SPAN lang=EN-US>response是stale的，如果它的age超过了它的freshness lifetime。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Semantically transparent<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个<SPAN lang=EN-US>cache一一种Semantically transparent的方式工作，对于特定的一个response，这时它的使用既没有影响request client也没有影响origin server（和没经过cache一样），但是却提高了性能。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Validator<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个协议元素被用来找出一个<SPAN lang=EN-US>cache entity 是不是等同于一个entity。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Upstream/downstream<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">描述了一个<SPAN lang=EN-US>message的流动：所有的message从upstream流向downstream。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">Inbound/outbound<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">是指<SPAN lang=EN-US>message的request和response路径。前者只流向origin server，后者指流向user agent。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">1.4整体运行框架<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">HTTP协议是一个request/response协议。一个client发送一个request给一个server，由一个request method,uri,协议版本，紧跟着mime类似的信息（包含request描述符，client的信息，和与一个server传递数据可能的容量）。Server回以一个状态行（包括message的协议版本，一个成功或失败的代码），紧跟一个MIME类似的message（包括server信息，entity的元数据，可能的entity-body容量。HTTP和MIME的关系appendix19.4。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">大多数的<SPAN lang=EN-US>HTTP连接被一个user agent发起，请求某些origin server上的资源。在简单情况，可以如图所示：<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">request chain ------------------------><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">UA -------------------v------------------- O<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Courier"><----------------------- response chain<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">一个更加复杂点的情况：有多个中间体介于<SPAN lang=EN-US>request/response chain。有3个普遍的中间体形式：proxy，gateway，tunnel。一个proxy是一个转送站，接受一个request,更改全部或部分message，根据uri重新发request。一个gateway是一个接受站，就象居于其他一些server之上的server一样，如果必要，会把requeset传给它下面的server。一个tunnel是一个接力点，连接2个连接而不改变任何message；可以被用来处理防火墙。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-char-indent-count: 2.5" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">request chain --------------------------------------><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">UA -----v----- A -----v----- B -----v----- C -----v----- O<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-char-indent-count: 2.5" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Courier"><------------------------------------- response chain<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">上面的图展示了<SPAN lang=EN-US>3个中间体abc在user agent和origin server之间。一个request或response message穿越整个链需要通过4个独立的连接。这个区别是很重要的，因为一些 HTTP通讯选项只能加到最近的，非tunnel邻居，只能到chain的末端或所有连接。虽然图是画地直线，但是每一个参与者可能同时处理多个通讯。比如，B在处理A的request 的同时可能正在接受其他clients发过来的request，而把它们转向非c的server。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">任何参与通讯的只要不是<SPAN lang=EN-US>tunnel都可以用一个内部cache来处理request。这会缩短通讯链如果有一方有对该request的cached reponse。下面展示了结果链如果B有一个从O的cache copy，而UA，或A没有。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">request chain ----------><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Courier">UA -----v----- A -----v----- B - - - - - - C - - - - - - O<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Courier"><--------- response chain<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">并不是所有的<SPAN lang=EN-US>response的缓存都是有用的，一些request可能会包含关于缓存要求的描述符。HTTP对于缓存的方式控制和response，des13。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">事实上，缓存和代理的构架现在正在被整个<SPAN lang=EN-US>WWW实验和部署。这些系统包括国家级的代理缓存来存储越洋的带宽，系统广播或多点播送cached entries，组织那些零散的缓存到CD-ROM等等。HTTP系统也在公司内网的宽带连接和PDA的低能耗无线断续连接系统中被使用。HTTP1。1的目标是支持在协议诞生期间已经部署的各种配置，使得WEB应用能够达到高可靠性，至少是在失败后有可靠的提示。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">HTTP通讯通常是跨TCP/IP连接地发生。默认端口是TCP80[19]，但是其他的端口也可以被使用。这就使HTTP可以作为INTERNET上其他协议的上层协议，或其他网络的协议。HTTP只要求一个可靠连接，任何能提供这样的保证的协议都可以被使用；把HTTP/1。1的request和response的结构转化成正在被讨论的协议的数据单位超出了本规范的范围。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">在<SPAN lang=EN-US>HTTP/1。0，大多数实现使用一个新的连接应对request/response交换。在HTTP/1。1中，一个连接可以被多个request/response交流使用，虽然连接可以因为多个原因被关闭。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><SPAN lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p> </o:p></SPAN></P><img src ="http://www.blogjava.net/baixch/aggbug/13135.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/baixch/" target="_blank">英雄</a> 2005-09-16 09:02 <a href="http://www.blogjava.net/baixch/articles/13135.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>