• 1. 1HTTP协议一舟 yizhou@taobao.com 2009-11-19
  • 2. 浏览器
  • 3. 浏览器
  • 4. 关于HTTP的问题HTTP是什么? 工作原理是什么? HTTP和HTTPS的区别? 重要的头信息有哪些,都有什么作用? 非文本(图片、文件)是怎么传输的? ……
  • 5. HTTP是什么?http://zh.wikipedia.org/zh-cn/Http URI/URL/URN C/S模式 Application Layer(类似FTP,SMTP等等) Request/Response范式 RFC2616 http://tools.ietf.org/html/rfc2616 超文本“转移”协议
  • 6. 历史版本HTTP/0.9 跨网络的简单原始数据传输,只接受 GET ,通讯中不指定版本号,且不支持请求头,已过时 HTTP/1.0 还在使用,尤其在代理服务器应用方面,RFC1945 通讯中指定版本号,MIME消息格式 HTTP/1.1 默认持久链接,分层代理,考虑了缓存、虚拟主机等等影响
  • 7. 工作原理是什么?http://www.cnpaf.net/Class/HTTP/200408/81.html
  • 8. 工作原理图列
  • 9. 实验
  • 10. HTTP与HTTPs的区别HTTP的安全版 默认使用TCP端口443 HTTPS是两个协议的结合,即传输层SSL+应用层HTTP 服务器必需有PKI证书,而客户端则不一定
  • 11. 重要概念1.连接(Connection):一个传输层的实际环流,它建立在两个相互通讯的应用程序之间。 2.消息(Message):HTTP通讯的基本单位。 3.请求(Request):一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号。
  • 12. 重要概念4.响应(Response):一个从服务器返回的信息包括HTTP协议的版本号、请求的状态和文档的MIME类型。 5.资源(Resource):由URI标识的网络数据对象或服务。 6.实体(Entity):数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。
  • 13. 重要概念7.客户机(Client):一个为发送请求目的而建立连接的应用程序。 8.用户代理(UserAgent):初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。 9.服务器(Server):一个接受连接并对请求返回信息的应用程序。
  • 14. 重要概念10.源服务器(OriginServer):是一个给定资源可以在其上驻留或被创建的服务器。 11.代理(Proxy):一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请求。代理经常作为通过防火墙。
  • 15. 重要概念12.网关(Gateway):一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器。 13.通道(Tunnel):是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯。 14.缓存(Cache):响应信息的局域存储。
  • 16. http://www.g.cn:80/s/search?q=淘宝UED&btnG=GCN+搜索URL协议类型主机端口路径和查询查询参数大小写不敏感为空即默认不安全的字符和%HEXHEX相同http://abc.com:80/~smith/home.html htTP://ABC.com/%7Esmith/home.html http://ABC.com:/%7esmith/home.html其他:URL的长度限制到底是多少?参数如果编码?
  • 17. 时间格式Sunday, 06-Nov-94 08:49:37 GMTSun Nov 6 08:49:37 1994Sun, 06 Nov 1994 08:49:37 GMT
  • 18. HTTP-MessageHTTP-Message(Request-Line | Status-Line)*(Message-Header CRLF) [ Message-Body ](Request-Line | Status-Line) *(message-header CRLF) CRLF [ message-body ]CRLF
  • 19. Request-LineMethod SP Request-URI SP HTTP-Version CRLFRequest-LineMethodRequest-URI HTTP-VersionSP SP CRLF
  • 20. Status-LineHTTP-Version SP Status-Code SP Reason-Phrase CRLFStatus-LineReason-PhraseStatus-CodeHTTP-VersionSP SP CRLF
  • 21. MethodGETDELETETRACECONNECTPUTHEADOPTIONSPOST
  • 22. Status-Code信息100101成功201202203204205206200重定向3003033043053063073013024..4..417402401403404客户端错误400服务器错误500503504502505501
  • 23. 状态码举例1xx:信息——仅在与HTTP服务器沟通时使用 100(“Continue”) 2xx:成功——成功收到、理解和接受动作 200(“OK”)、201(“Created”)、204(“No Content”) 3xx:重定向——为完成请求,必须进一步采取措施 301(“Moved Permanently”)、303(“See Other”)、304(“Not Modified”)、307(“Temporary Redirect”) 4xx:客户端错误——请求包含错误的语法或不能完成 400(“Bad Request”)、401(“Unauthorized”)、403(“Forbidden”)、404(“Not Found”)、405(“Method Not Allowed”)、406(“Not Acceptable”) 、409(“Conflict”)、410(“Gone”) 5xx:服务器端错误——服务器不能完成明显合理的请求 500(“Internal Server Error”)、503(“Service Unavailable”)
  • 24. Message-HeaderCache-Control, Connection, Date, Pragma, Trailer, Transfer-Encoding, Upgrade, Via, WarningAccept, 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-AgentAccept-Ranges, Age, ETag, Location, Proxy-Authenticate, Retry-After, Server, Vary, WWW-AuthenticateAllow, Content-Encoding, Content-Language, Content-Length, Content-Location, Content-MD5, Content-Range, Content-Type, Expires, Last-Modified通用请求响应实体
  • 25. Message-Header-其他CookieSet-CookieX-Powered-ByX-Requested-With“X-”开头
  • 26. 重要的HTTP头…Accept-CharsetContent-TypeAccept-EncodingContent-EncodingCache-ControlUser-AgentAcceptExpiresLast-ModifiedLocationAgeETagDateHostRefererServer
  • 27. 请求的Header举例Accept:请求希望服务器能响应何种表现格式。 Accept-Encoding:告诉服务器可以接收何种压缩格式传输,以减少带宽。 Range:请求获得一个资源的部分表示,常与If-Unmodified-Since一起用。 If-Modified-Since:通过前一次响应Last-Modified的时间值,当条件不成立,请求成功返回。 If-Match:通过前次响应ETag值,当条件不成立,请求成功返回。 If-Range:通过前次响应的ETag或Last-Modified值,若请求部分变化,服务器需返回新的范围。 Authorization:按特定认证方案编码的用户名和密码证书,服务器接收验证通过执行请求。
  • 28. 响应的Header举例Accept-Ranges:表明支持部分Get请求,客户端通过Head请求获取该值,然后发送Range报头请求,获取资源部分表示。 Content-Encoding:对应Accept-Encoding请求报头。 Content-Language:实体主体采用的自然语言,对应Accept-Language请求报头,可能多个值。 Content-Length:给出实体主体大小,客户端可据此做读取准备,也可通过Head请求来获知。 Content-Location:把请求资源的规范URI告知客户端,但并不要求其使用新URI。 Content-MD5:实体主体MD5,可检测错误损坏。
  • 29. 媒体类型请求Accept-CharsetAcceptContent-Type响应
  • 30. 内容编码请求Accept-EncodingContent-Encoding响应gzipcompressx-gzipx-compressdeflateidentity
  • 31. 传输编码 Transfer-Encoding响应chunked
  • 32. 传输范围请求RangeContent-Range响应206200Accept-Ranges
  • 33. 缓存减少完成的请求:Validation性能减少请求:Expiration
  • 34. 缓存失效减少请求:ExpirationExpires, Date, Age年龄计算更新周期计算是否失效:年龄-更新周期
  • 35. 缓存证实减少完成的请求:Validation弱证实:Last-Modified强证实:Etag (1.0不支持)If-Modified-Since, If-Unmodified-SinceIf-Match, If-None-Match
  • 36. 可缓存性可缓存性: Cacheability状态码是:200, 203, 206, 300, 301, 410,除非明确的禁止其他状态码都禁止,除非明确允许支持Range, Content-Range => 206理论上:除了明确指出不可缓存的以外都可以被缓存实际上:需要服务器指定失效和证实才能被缓存
  • 37. 缓存控制Cache-Control
  • 38. 缓存控制缓存控制: Cache-Control对失效: s-maxage, max-age, min-fresh, max-stale对可缓存性: public, private, no-cache, no-store对证实: only-if-cached, must-revalidate, proxy-revalidate, no-transform
  • 39. 缓存的其他话题从缓存构造响应 缓存协商响应 共享和非共享缓存 历史和缓存的区别