Top Banner
HTTP 协协协协 协协 一( @协 协协 一) 协协 - 协协协协协协 -UED- 协协 1
45

Http协议介绍

May 25, 2015

Download

Technology

Sanji Zhang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Http协议介绍

1

HTTP 协议介绍一舟( @ 淘一舟)

淘宝 - 北京研发中心 -UED- 前端

Page 2: Http协议介绍

2

目录• 感性认识• 重要概念• 探访细节

淘宝 - 北京研发中心 -UED- 前端

Page 3: Http协议介绍

3

感性认识

淘宝 - 北京研发中心 -UED- 前端

Page 4: Http协议介绍

4

古代浏览器

淘宝 - 北京研发中心 -UED- 前端

Page 5: Http协议介绍

5

现代浏览器

淘宝 - 北京研发中心 -UED- 前端

Page 6: Http协议介绍

6

浏览器市场

• http://brow.data.cnzz.com/• http://www.w3counter.com/globalstats.php

淘宝 - 北京研发中心 -UED- 前端

Page 7: Http协议介绍

7

关于 HTTP 的问题• HTTP 是什么?• 工作原理是什么?• HTTP 和 HTTPS 的区别?• 重要的头信息有哪些,都有什么作用?• 非文本(图片、文件)是怎么传输的?• ……

淘宝 - 北京研发中心 -UED- 前端

Page 8: Http协议介绍

8

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• 超文本“转移”协议

淘宝 - 北京研发中心 -UED- 前端

Page 9: Http协议介绍

9

历史版本• HTTP/0.9

• 跨网络的简单原始数据传输,只接受 GET ,通讯中不指定版本号,且不支持请求头,已过时

• HTTP/1.0• 还在使用,尤其在代理服务器应用方面, RFC1945• 通讯中指定版本号, MIME 消息格式

• HTTP/1.1• 默认持久链接,分层代理,考虑了缓存、虚拟

主机等等影响

淘宝 - 北京研发中心 -UED- 前端

Page 10: Http协议介绍

10

工作原理

• http://www.cnpaf.net/Class/HTTP/200408/81.html

淘宝 - 北京研发中心 -UED- 前端

Page 11: Http协议介绍

11

工作原理

淘宝 - 北京研发中心 -UED- 前端

Page 12: Http协议介绍

12

动手验证

• 动手练习 15min 时间

Terminal

Fiddler2

wireshark

淘宝 - 北京研发中心 -UED- 前端

Page 13: Http协议介绍

13

HTTP 与 HTTPs 的区别• HTTP 的安全版• 默认使用 TCP 端口 443• HTTPS 是两个协议的结合,即传输层 SSL +应

用层 HTTP• 服务器必需有 PKI 证书,而客户端则不一定

淘宝 - 北京研发中心 -UED- 前端

Page 14: Http协议介绍

14

重要概念

淘宝 - 北京研发中心 -UED- 前端

Page 15: Http协议介绍

15

几个概念• 1. 连接 (Connection) :传输层的一个实际数据

流,它建立在两个相互通讯的应用程序之间。• 2. 消息 (Message) : HTTP 的基本通讯单位。• 3. 请求 (Request) :一个从客户端到服务器的请

求信息包括应用于资源的方法、资源的标识符和协议的版本号。

淘宝 - 北京研发中心 -UED- 前端

Page 16: Http协议介绍

16

几个概念• 4. 响应 (Response) :一个从服务器返回的信息

包括 HTTP 协议的版本号、请求的状态和文档的MIME 类型,文档实体。

• 5. 资源 (Resource) :由 URI 标识的网络数据对象或或服务。

• 6. 实体 (Entity) :数据资源或来自服务资源的回应的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体本身的内容。

淘宝 - 北京研发中心 -UED- 前端

Page 17: Http协议介绍

17

几个概念• 7. 客户端 (Client) :一个以发送请求为目的而建

立连接的应用程序。• 8. 用户代理 (User Agent) :初始化一个请求的

客户端。可以是浏览器、编辑器或其他工具。• 9. 服务器 (Server) :一个以接受连接并对请求

返回信息的应用程序。

淘宝 - 北京研发中心 -UED- 前端

Page 18: Http协议介绍

18

几个概念• 10. 源服务器 (Origin Server) :是一个指定资

源可以在其上驻留或被创建的服务器。• 11. 代理 (Proxy) :一个中间程序。它可以充当

服务器,也可以充当客户机,为其它客户端建立请求。代理经常作为防火墙。

淘宝 - 北京研发中心 -UED- 前端

Page 19: Http协议介绍

19

几个概念• 12. 网关 (Gateway) :一个作为其它服务器中间

媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器。

• 13. 通道 (Tunnel) :是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于 HTTP 通讯。

• 14. 缓存 (Cache) :响应信息的局域存储。

淘宝 - 北京研发中心 -UED- 前端

Page 20: Http协议介绍

20

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 的长度限制到底是多少?参数如果编码?淘宝 - 北京研发中心 -UED- 前端

Page 21: Http协议介绍

21

时间格式

Sunday, 06-Nov-94 08:49:37 GMT

Sun Nov 6 08:49:37 1994

Sun, 06 Nov 1994 08:49:37 GMT

淘宝 - 北京研发中心 -UED- 前端

Page 22: Http协议介绍

22

探访细节

淘宝 - 北京研发中心 -UED- 前端

Page 23: Http协议介绍

23

HTTP-Message

HTTP-Message

(Request-Line | Status-Line)

*(Message-Header CRLF)

[ Message-Body ]

(Request-Line | Status-Line) *(message-header CRLF) CRLF [ message-body ]

CRLF

淘宝 - 北京研发中心 -UED- 前端

Page 24: Http协议介绍

24

Request-Line

Method SP Request-URI SP HTTP-Version CRLF

Request-Line

Method

Request-URI

HTTP-Version

SP

SP

CRLF

淘宝 - 北京研发中心 -UED- 前端

Page 25: Http协议介绍

25

Status-Line

HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Status-Line

Reason-Phrase

Status-Code

HTTP-Version

SP

SP

CRLF

淘宝 - 北京研发中心 -UED- 前端

Page 26: Http协议介绍

26

Method

GETDELETE

TRACE

CONNECTPUT

HEADOPTIONS

POST

淘宝 - 北京研发中心 -UED- 前端

Page 27: Http协议介绍

27

Status-Code

信息100

101

成功

201

202

203

204

205

206200

重定向300

303

304

305

306 307

301

302

417

402401

403

404客户端错误

400

服务器错误

500503

504

502 505

501

淘宝 - 北京研发中心 -UED- 前端

Page 28: Http协议介绍

28

状态码举例• 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”)

淘宝 - 北京研发中心 -UED- 前端

Page 29: Http协议介绍

29

Message-HeaderCache-Control, Connection, Date, Pragma, Trailer, Transfer-Encoding, Upgrade, Via, Warning

通用

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

请求

Accept-Ranges, Age, ETag, Location, Proxy-Authenticate, Retry-After, Server, Vary, WWW-Authenticate

响应

Allow, Content-Encoding, Content-Language, Content-Length, Content-Location, Content-MD5, Content-Range, Content-Type, Expires, Last-Modified

实体

淘宝 - 北京研发中心 -UED- 前端

Page 30: Http协议介绍

30

Message-Header- 其他

Cookie

Set-Cookie

X-Powered-By

X-Requested-With

“X-”开头

淘宝 - 北京研发中心 -UED- 前端

Page 31: Http协议介绍

31

重要的 HTTP 头…

Accept-Charset

Content-Type

Accept-Encoding Content-Encoding

Cache-Control

User-Agent

Accept

Expires

Last-Modified

Location

Age

ETag

DateHost

Referer

Server

淘宝 - 北京研发中心 -UED- 前端

Page 32: Http协议介绍

32

请求的 Header举例• Accept: 请求希望服务器能响应何种表现格式。• Accept-Encoding:告诉服务器可以接收何种压缩格式传输,以减少带宽。

• Range: 请求获得一个资源的部分表示,常与 If-Unmodified-Since一起用。

• If-Modified-Since: 通过前一次响应 Last-Modified 的时间值,当条件不成立,请求成功返回。

• If-Match: 通过前次响应 ETag值,当条件不成立,请求成功返回。• If-Range: 通过前次响应的 ETag 或 Last-Modified值,若请求部分变化,服务器需返回新的范围。

• Authorization:按特定认证方案编码的用户名和密码证书,服务器接收验证通过执行请求。

淘宝 - 北京研发中心 -UED- 前端

Page 33: Http协议介绍

33

响应的 Header举例• Accept-Ranges: 表明支持部分 Get 请求,客户端通过 Head 请求获取该值,然后发送 Range报头请求,获取资源部分表示。

• Content-Encoding: 对应 Accept-Encoding 请求报头。• Content-Language: 实体主体采用的自然语言,对应 Accept-

Language 请求报头,可能多个值。• Content-Length:给出实体主体大小,客户端可据此做读取准备,

也可通过 Head 请求来获知。• Content-Location:把请求资源的规范 URI告知客户端,但并不要

求其使用新 URI 。• Content-MD5: 实体主体 MD5, 可检测错误损坏。

淘宝 - 北京研发中心 -UED- 前端

Page 34: Http协议介绍

34

媒体类型

请求 Accept-Charset

Accept

Content-Type 响应

淘宝 - 北京研发中心 -UED- 前端

Page 35: Http协议介绍

35

内容编码

请求 Accept-Encoding

Content-Encoding

响应

gzip

compress

x-gzip

x-compress

deflate

identity

淘宝 - 北京研发中心 -UED- 前端

Page 36: Http协议介绍

36

传输编码

Transfer-Encoding 响应

chunked

淘宝 - 北京研发中心 -UED- 前端

Page 37: Http协议介绍

37

传输范围

请求

Range

Content-Range

响应

206 200

Accept-Ranges

淘宝 - 北京研发中心 -UED- 前端

Page 38: Http协议介绍

38

缓存

减少完成的请求: Validation

性能

减少请求: Expiration

淘宝 - 北京研发中心 -UED- 前端

Page 39: Http协议介绍

39

缓存失效

减少请求:Expiration

Expires, Date, Age

年龄计算

更新周期计算

是否失效:年龄 -更新周期

淘宝 - 北京研发中心 -UED- 前端

Page 40: Http协议介绍

40

缓存证实

减少完成的请求: Validation

弱证实: Last-Modified

强证实: Etag ( 1.0 不支持)

If-Modified-Since, If-Unmodified-Since

If-Match, If-None-Match

淘宝 - 北京研发中心 -UED- 前端

Page 41: Http协议介绍

41

可缓存性

可缓存性:Cacheability

状态码是: 200, 203, 206, 300, 301, 410 ,除非明确的禁止

其他状态码都禁止,除非明确允许

支持 Range, Content-Range => 206

理论上:除了明确指出不可缓存的以外都可以被缓存实际上:需要服务器指定失效和证实才能被缓存

淘宝 - 北京研发中心 -UED- 前端

Page 42: Http协议介绍

42

缓存控制Cache-Control

淘宝 - 北京研发中心 -UED- 前端

Page 43: Http协议介绍

43

缓存控制

缓存控制: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

淘宝 - 北京研发中心 -UED- 前端

Page 44: Http协议介绍

44

缓存的其他话题• 从缓存构造响应• 缓存协商响应• 共享和非共享缓存• 历史和缓存的区别

淘宝 - 北京研发中心 -UED- 前端

Page 45: Http协议介绍

45

Q&A

淘宝 - 北京研发中心 -UED- 前端