《图解HTTP》学习笔记

1.TCP/IP 分层

分层管理好处:规定好接口协议,那么层次内部设计可以灵活改动。处于应用层之上的应用可以只考虑自己的任务,而不必担心底层传输。

应用层 : 包含FTP,DNS,HTTP

传输层 :包含TCP,UDP协议

网络层 : IP协议(处理数据包,是网络传输的最小单位。

链路层 :硬件部分

每层处理时会进行封装,增加首部信息。

2.状态码:

2XX:成功

请求被正常处理

200 OK

204 No Content (服务器接收请求成功处理,但是没有资源可以返回,所以响应报文中不含实体主体,一般用于客户端往服务端发送信息,而客户端不需要回复新内容)

206 Partial Content (对资源一部分的请求,响应报文中包含Content-Range)

3XX :重定向

表明浏览器需要执行某些特殊处理来正确处理请求

301 Moved Permanently (永久性重定向)

302 Found (临时性重定向)

303 See Other (和302功能相同,但是明确表示客户端应该使用GET方法获取资源)

当遇到301,302,303响应码时,几乎所有浏览器都会把POST 改成GET,并且删除请求报文内的主题,再次自动发送请求。

304 Not Modified (资源已找到,但不符合条件请求。 客户端发送附带条件的请求,服务器允许请求访问资源,但不满足请求的条件,所以返回304,不包含响应主体。 虽然被分在3XX类别里,但和重定向没啥关系。

307 Temporary Redirect (临时重定向)

4XX: 客户端错误

400 Bad Request (请求报文中存在语法错误,需要修改请求内容。

401 Unauthorized (需要认证,未认证或者是认证失败

403 Forbidden (请求被拒绝

404 Not Found (无法找到请求资源

5XX: 服务器错误

500 Internel Server Error (服务器执行请求时发生错误

503 Service Unavailble (服务器繁忙或者停机维护,无法处理请求

3.报文构成:

请求报文构成:

响应报文构成:

通用首部:

1.Cache-Control: 操作缓存的工作机制,

2.Connection : 两个作用, 1. 控制不再转发的首部字段 2.管理持久化连接

3.Date:表明创建HTTP报文的日期和时间

4.Trailer:说明在报文主体后还记录了哪些首部字段。

5.Transfer-Encoding: 规定传输报文主体时采用的编码方式

6.Upgrade: 用于检测HTTP协议及其他协议是否可以使用更高的版本进行通信,它的参数值可以指定一个完全不同的通信协议。

7.Via: 可以追踪客户端与服务器之间的请求和响应报文的传输路径。 报文经过代理或者网关,会在Via中附加该服务器的信息再进行转发。 Via字段可以用来追踪报文转发,还可以避免请求回环。

请求首部

1.Accept: 通知服务器,能够处理的媒体类型及相对优先级,一次可以指定多种。可以使用q来指定权重,0~1,默认为1。

2.Accept-Charset: 通知服务器用户能支持的字符集和相对顺序,一次可以指定多种。q可以指定权重

3.Accept- Encoding: 通知服务器用户代理支持的内容编码及相对优先级,一次可以指定多种。 gzip,compress,deflate,identity,*(通配符)

4.Accept-Language:通知服务器用户能处理的自然语言集及相对优先级。

5.Authorization: 告知服务器用户的认证信息。

6.Expect:客户端用Expect来告知服务器,期望出现的某种特定行为。当服务器无法理解客户端的期望作出回应而发生错误时,会返回417Expectation Failed。

7.From:告知服务器用户的电子邮件地址。

8.Host:告知服务器请求的资源所处的互联网主机名和端口号。 (HTTP1.1规范中唯一一个规定必须包含在请求内的首部字段)

9.If-xxx:条件请求,服务器收到带附加条件的请求,只有符合判断条件时,才会执行请求。

10.Proxy-Authorization: 接收到从代理服务器发来的认证质询时,客户端会发送包含Proxy-Authorization 的请求来告知服务器认证所需要的信息。类似于客户端与服务器之间的HTTP访问认证,不过是发生于客户端和代理之间。

11.Range:对于只需要获取部分资源的范围请求,可以用Range指定资源范围。成功返回指定部分资源是206 Partial Content,如果无法处理范围请求,会返回200 OK和全部资源

12.Referer: 告知服务器请求的原始资源路径。

13.User-Agent:告知服务器创建请求的浏览器和客户端等信息。

响应首部:

1.Accept-Ranges: 告知客户端是否能处理范围请求,来指定获取服务器端某个部分的资源。 可处理范围请求时值为bytes,不能处理时值是none

2.Age:告知客户端 源服务器在多久前创建了响应,单位是秒。(因为可能是缓存。 代理创建响应时必须带Age字段。

3.ETag:告知客户端实体标识,可将资源以字符串形式做唯一性标识的方式,当资源更新时,ETag也会更新。每份资源都有自己的ETag。

ETag 分为 强ETag(不论实体发生多细微的变化都会改变值)和 弱ETag(只用于区分资源是否相同,只有资源根本改变才会改变弱ETag值)

4.Location:可以将响应接收方引导到某个与请求URL位置不同的资源上去。会配合重定向使用。

5.Proxy-Authenticate: 把由代理服务器要求的认证信息发送给客户端。

6.Retry-After:告知客户端应在多久后再次发生请求。配合503 Service Unavailable 使用,或者3XX Redirect使用。

7.Server: 告知客户端当前服务器上的HTTP服务器应用程序的信息。

实体首部:

1.Allow:通知客户端能支持的所有HTTP方法,

2.Content-Encoding:实体主体部分选用的内容编码方式。 gzip,compress,deflate,identity

3.Content-Language: 实体主体使用的自然语言

4.Content-Length:实体主体部分的大小,如果对实体主体进行内容编码传输后,就不用Content-Length了。

5.Content-Location:表示报文主题返回资源对应的地址。

6.Content-MD5: 一串由MD5算法生成的值,目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。 客户端会对接收的报文主体进行相同的MD5算法然后与首部字段比较。

7.Content-Range:针对范围请求,返回此字段告诉客户端实体中那个部分符合范围请求。

8.Content-Type:实体主体内对象的媒体类型。

9.Expires:资源失效时间。

10.Last-Modified:资源最后一次被修改的时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值