赞
踩
http://hi.baidu.com/wuzsh/blog/item/b14bcc5cd3714945fbf2c0d5.html
HTTP/1.1协议规范(中文归纳版)一、介绍(introduction) 1. 目的——HTTP/0.9-〉HTTP/1.0-〉HTTP/1.1 2. 要求——MUST、REQUIRED、SHOULD 3. 术语——连接(Connection)、消息(Message)、请求(Request)、应答(Response)、资源(Resource)、实体 (Entity)、表示方法(Representation)、内容协商(Content Negotiation)、变量(Variant)、客户机(Client)、用户代理(User agent)、服务器(Server)、原服务器(Origin server)、代理服务器( Proxy)、网关(gateway)、高速缓存(Cache)、可缓存(Cacheable)、直接(first-hand)、明确终止时间 (explicit expiration time)、探索终止时间(heuristic expiration time)、年龄(Age)、保鲜寿命(Freshness lifetime)、保鲜(Fresh)、陈旧(Stale)、语义透明(semantically transparent)、有效性判别器(Validator)、实体标记(entity tag)或最终更改时间(Last-Modified time))、上游/下游(upstream/downstream)、向内/向外(inbound/outbound) 4. 总体操作——请求/应答、中介 二、符号惯例与一般语法(notational conversions and generic grammar) 1. 扩充BNF——name = definition,"literal",rule1 | rule2,(rule1 rule2),*rule,[rule],N rule, #rule,; comment, implied *LWS 2. 基本规则——OCTET,CHAR,UPALPHA,LOALPHA,ALPHA,DIGIT,CTL,CR,LF,SP,HT,<"> 三、协议参数(protocol parameters) 1. HTTP版本——HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT 2. 统一资源标示符(URI)——统一资源定位器(URL)和统一资源名称(URN)的结合,http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] 3. 日期/时间格式——Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123, 4. 字符集——本文档中的术语"字符集"指一种用一个或更多表格将一个八字节序列转换成一个字符序列的方法, 5. 内容编码——内容编码主要用来允许文档压缩(信源编码) 6. 传输编码——目的是能够确保通过网络安全传输(信道编码) 7. 媒体类型——media-type = type "/" subtype *( ";" parameter ) 8. 产品标记——product = token ["/" product-version] 9. 质量值——qvalue = ( "0" [ "." 0*3DIGIT ] )| ( "1" [ "." 0*3("0") ] ) 10. 语言标记——language-tag = primary-tag *( "-" subtag ) 11. 实体标记——entity-tag = [ weak ] opaque-tag 12. 范围单位——range-unit = bytes-unit | other-range-unit 四、 HTTP消息(HTTP message) 1. 消息类型——HTTP-message = Request | Response ; HTTP/1.1 messages 2. 消息头——HTTP头域包括常规头,请求头,应答头和实体头域 3. 消息体——message-body = entity-body| <entity-body encoded as per Transfer-Encoding> 4. 消息的长度——决定因素 5. 常规头域——general-header = Cache-Control| Connection| Date| Pragma| Transfer-Encoding 五、 请求(request) 首行包括利用资源的方式,区分资源的标识,以及协议的版本号 1. 请求行——Request-Line = Method SP Request-URI SP HTTP-Version CRLF 2. 请求定义的资源——一个INTERNET请求所定义的精确资源由请求URL和主机报头域所决定 3. 请求报头域——request-header = Accept| Accept-Charset| Accept-Encoding| Accept-Language| Authorization| Expect| From| Host| If-Match| If-Modified-Since| If-None-Match| If-Range| If-Unmodified-Since| Max-Forwards| Proxy-Authorization| Range| Referer| TE| User-Agent 六、 应答(response) 接收和翻译一个请求信息后,服务器发出一个HTTP应答信息 1. 状态行——Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF 2. 应答报头域——response-header = Accept-Ranges| Age| Location| Proxy-Authenticate| Retry-After| Server| Vary| WWW-Authenticate 七、 实体(entity) 在未经特别规定的情况下,请求与应答的消息也可以传送实体。 实体包括实体报头域与实体正文,而有些应答只包括实体报头。 1. 实体报头域——entity-header = Allow | Content-Encoding| Content-Language| Content-Length | Content-Location| Content-MD5| Content-Range| Content-Type| Expires| Last-Modified| extension-header 2. 实体正文——entity-body = *OCTET 八、 连接(connection) 1. 持续连接——优点 2. 消息传递要求——持续连接与流量控制 九、 方法定义(method definitions) 1. 安全和等幂方法 2. OPTIONS——OPTIONS方法代表在请求URI确定的请求/应答过程中通信条件是否可行的信息 3. GET——GET方法说明了重建信息的内容由请求URI来确定 4. HEAD——除了应答中禁止返回消息正文外,HEAD方法与GET方法一样 5. POST——POST方法实现的实际功能取决于服务器 6. PUT——PUT方法要求所附实体存储在提供的请求URI下 7. DELETE——DELELE方法要求原服务器释放请求URI指向的资源 8. TRACE——TRACE方法用于调用远程的应用层循环请求消息 9. CONNECT——CONNECT方法用于能动态建立起隧道的代理服务器 十、 状态码定义(status code definitions) 1. 信息1XX—— 2. 成功2XX—— 3. 重新定向3XX—— 4. 客户错误4xx—— 5. 服务器错误5xx—— 十一、 访问验证(access authentication)——可选择 十二、 内容谈判(content negotiation) HTTP为了"内容谈判"提供了一些机制,即当有很多种可能的表示时如何选择对于一个请求的最佳的表示。 1. 服务器驱动谈判——一个请求的最佳表示的选择由服务器提供的运算法则来完成 2. 代理驱动谈判——对于一个应答的最佳表示法的选择是在代理从原服务器端收到最初的应答后实现的 3. 透明谈判——透明的判断是服务器驱动和代理驱动谈判的结合体 十三、 HTTP中的缓存(caching in HTTP) HTTP典型应用于能通过采用缓存技术而提高性能的分布式信息系统 1. 缓存—— 2. 过期模型—— 3. 确认模型——当缓存器想要用一个失时效的条目来相应客户的请求,他首先必须向源服务器检验这一缓存条目是否仍然可用 4. 响应的缓存能力——除非被明确限制,缓存系统可以将一成功的响应作为缓存实体一直存储 5. 从缓存构造响应—— 6. 缓存谈判响应 7. 共享与非共享缓存 8. 错误和不完全响应缓存行为 9. GET和 HEAD的副作用 10. 刷新或删除后的无效性 11. 强制写通过 12. 缓存替换 13. 历史纪录 十四、 报头域定义(header field definitions) 1. Accept——Accept = "Accept" ":" #( media-range [ accept-params ] ) 2. Accept-Charset——Accept-Charset = "Accept-Charset" ":" 1#( ( charset | "*" )[ ";" "q" "=" qvalue ] ) 3. Accept-Encoding——Accept-Encoding = "Accept-Encoding" ":" 1#( codings [ ";" "q" "=" qvalue ] ) 4. Accept-Language——Accept-Language = "Accept-Language" ":" 1#( language-range [ ";" "q" "=" qvalue ] ) 5. Accept-Range——Accept-Ranges = "Accept-Ranges" ":" acceptable-ranges 6. Age——Age = "Age" ":" age-value 7. Allow——Allow = "Allow" ":" #Method 8. Authorization——Authorization = "Authorization" ":" credentials 9. Cache-Control——Cache-Control = "Cache-Control" ":" 1#cache-directive 10. Connection——Connection = "Connection" ":" 1#(connection-token) 11. Content-Encoding——Content-Encoding = "Content-Encoding" ":" 1#content-coding 12. Content-Language——Content-Language = "Content-Language" ":" 1#language-tag 13. Content-Length——Content-Length = "Content-Length" ":" 1*DIGIT 14. Content-Location——Content-Location = "Content-Location" ":"( absoluteURI | relativeURI ) 15. Content-MD5——Content-MD5 = "Content-MD5" ":" md5-digest 16. Content-Range——Content-Range = "Content-Range" ":" content-range-spec 17. Content-Type——Content-Type = "Content-Type" ":" media-type 18. Date——Date = "Date" ":" HTTP-date 19. Etag——ETag = "ETag" ":" entity-tag 20. Expect——Expect = "Expect" ":" 1#expectation 21. Expires——Expires = "Expires" ":" HTTP-date 22. From——From = "From" ":" mailbox 23. Host——Host = "Host" ":" host [ ":" port ] ; Section 3.2.2 24. If-Match——If-Match = "If-Match" ":" ( "*" | 1#entity-tag ) 25. If-Modified-Since——If-Modified-Since = "If-Modified-Since" ":" HTTP-date 26. If-None-Match ——If-None-Match = "If-None-Match" ":" ( "*" | 1#entity-tag ) 27. If-Range ——If-Range = "If-Range" ":" ( entity-tag | HTTP-date ) 28. If-Unmodified-Since ——If-Unmodified-Since = "If-Unmodified-Since" ":" HTTP-date 29. Last-Modified ——Last-Modified = "Last-Modified" ":" HTTP-date 30. Location ——Location = "Location" ":" absoluteURI 31. Max-Forwards ——Max-Forwards = "Max-Forwards" ":" 1*DIGIT 32. Pragma ——Pragma = "Pragma" ":" 1#pragma-directive 33. Proxy-Authenticate ——Proxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge 34. Proxy-Authorization ——Proxy-Authorization = "Proxy-Authorization" ":" credentials 35. Range——字节范围 36. Referer——Referer = "Referer" ":" ( absoluteURI | relativeURI ) 37. Retry-After ——Retry-After = "Retry-After" ":" ( HTTP-date | delta-seconds ) 38. Server ——Server = "Server" ":" 1*( product | comment ) 39. TE ——TE = "TE" ":" #( t-codings ) 40. Trailer ——Trailer = "Trailer" ":" 1#field-name 41. Transfer-Encoding ——Transfer-Encoding = "Transfer-Encoding" ":" 1#transfer-coding 42. Upgrade——Upgrade = "Upgrade" ":" 1#product 43. User-Agent ——User-Agent = "User-Agent" ":" 1*( product | comment ) 44. Vary ——Vary = "Vary" ":" ( "*" | 1#field-name ) 45. Via ——Via = "Via" ":" 1#( received-protocol received-by [ comment ] ) 46. Warning = "Warning" ":" 1#warning-value 47. WWW-Authenticate ——WWW-Authenticate = "WWW-Authenticate" ":" 1#challenge 十五、 安全考虑(security considerations) 一些建议,但是并不包括最终解决方案 1. 个人信息 2. 基于文件和路径名称的攻击 3. DNS欺骗 4. Location(位置)报头和欺骗 5. 内容倾向问题 6. 鉴定证书和空闲的客户机 7. 代理服务器和高速缓存 十六、 感谢 十七、 参考文献 十八、 作者地址 十九、 附录 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。