计算机网络之图解HTTP2

计算机网络之图解HTTP2

四、返回结果的HTTP状态码

4.1状态码告知从服务器端返回的请求结果

状态码的职责是,在响应报文首部描述返回请求的结果。

状态码如200 OK,以3位数字和原因短语组成。数字的第一位指定了相应类别。响应类别分为5种:

1XX:Informational信息性状态码,接收的请求正在处理

2XX:Success成功状态码,请求正常处理完毕

3XX:Redirection重定向状态码,需要进行附加操作以完成请求

4XX:Client Error客户端错误状态码,服务器无法处理请求

5XX:Server Error服务器错误状态码,服务器处理请求出错

介绍一下具有代表性的14个状态码

4.2 成功2XX

2XX响应结果表明请求被正常处理了

200 OK: 表明从客户端发来的请求在服务器端被正常处理了。

204 No Content: 表明服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外也不允许返回任何实体的主体。一般在只需要从客户端往服务器发送信息,而客户端不需要发送新信息内容的情况下使用。

206 Partial Content: 表明客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容。

4.3 重定向3XX

3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。

301 Moved Permanently: 属于永久性重定向。该状态码表明请求的资源已被分配了新的URI,以后使用资源现在所指的URI。

302 Found: 属于临时性重定向。该状态码表明请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。302表示资源可能是临时性发生了移动,之后资源对应的URI可能会再次发生改变。

303 See Other: 该状态码表示请求对应的资源存在另一个URI,应该使用GET方法定向获取请求的资源。(重点:应该使用GET方法重定向获取资源)

由于303响应状态码返回时,希望客户端使用GET来重定向获取另一个URI的资源,所以在实际使用时,并且服务器返回301、302、303响应状态码,则几乎所有的浏览器会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。

304 Not Modified: 该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件。304状态码返回时,不包含任何响应的主体部分。304与重定向没啥关系,但是还是放在这一类里了。

307 Temporary Redirect 临时重定向。307和302的含义相同,但在实际使用中,会遵照浏览器标准,不会从POST改成GET

4.4客户端错误4XX

4XX的响应结果表明客户端是发生错误的原因所在

400 Bad Request: 表明请求报文中存在语法错误。当错误发生时,需要修改请求的内容后再次发送请求。

401 Unauthorized: 表明发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。若之前已经进行过1次请求,则表明用户认证失败。返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询用户信息。当浏览器初次接收到401响应,会弹出认证用的对话窗口。(所以其实这个HTTP认证约等于需要登录,请i去一次,返回401,弹出用户登录界面,再发送一次请求)

403 Forbidden: 表明对请求资源的访问被服务器拒绝了。服务器可在实体的主体部分描述拒绝理由,也可不描述。

404 Not Found: 表明服务器上无法找到请求的资源。也可以在服务器端拒绝请求但不想说明理由的时候使用

4.5服务器错误5XX

5XX的响应结果表明服务器本身发生错误。

500 Internal Server Error: 表明服务器端在执行请求时发生了错误。是服务器端内部的错误

503 Service Unavailable: 表明服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求。如果可以,最好写入Retry-After(一定时间之后重试)首部字段再返回给客户端。

五、与HTTP协作的Web服务器

5.1用单台虚拟主机实现多个域名

HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点,即使物理层面只有一台服务器,但可以假想有多态服务器,这种功能叫做虚拟主机(又叫虚拟服务器)。

客户端使用HTTP协议访问服务器时,会经常采用主机名和域名来进行访问工作。但在请求传播的过程中,域名会经过DNS服务映射到IP地址之后再访问目标网站,即当请求发送到服务器时,已经以IP地址形式访问了。如果不止一个Web站点设置在一台HTTP服务器上,那么这些站点的域名不同,但ip地址是相同的。所以HTTP服务器收到请求的时候,要弄清楚这个请求访问的到底是哪个Web站点。所以,在发送HTTP请时,必须在Host首部内完整指定主机名或域名的URI。

5.2通信数据转发程序:代理、网关、隧道

HTTP通信时,可以使用代理、网关、隧道来配合服务器工作。这些应用程序和服务器可以将请求转发给通信线路的下一站服务器,并且能从这台服务器接收响应再转发给客户端。(起到一个请求、响应转发的作用)

代理: 代理服务器的基本行为就是接收客户端发送的请求后,转发给其他服务器。从源服务器返回的响应经过代理服务器后再传给客户端。

源服务器:持有资源实体的服务器叫做源服务器

在HTTP通信过程中,可级联多台代理服务器。转发时,需要附加Via首部字段以标记出经过的主机信息。

使用代理服务器的理由:利用缓存技术减少网络带宽的流量、组织内部针对特定网站的访问控制,以获取访问日志为主要目的等

使用代理的多种方法,按照两个基准分类:是否使用缓存、是否会修改报文

缓存代理:转发响应时,缓存代理会预先将资源的副本保存在代理服务器上。当代理再次接收到对相同资源的请求时,就可以将之前缓存过的资源作为响应返回。

透明代理:转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理。反之,对报文内容进行加工的代理被称为非透明代理。

网关: 网关能使通信线路上的服务器提供非HTTP协议服务。(相比之下,代理只能是通信线路上的服务器提供HTTP服务)。通过在客户端和网关之间的通信线路上加密,网关能够提高通信的安全性。

隧道: 隧道可按要求建立起一条与其他服务器的通信线路,在此之上可以使用SSL等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。隧道不会对HTTP请求/响应做出任何解析和改变。隧道会在通信双方断开连接时结束。

5.3保存资源的缓存

缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可减少对源服务器的访问。缓存服务器是代理服务器的一种,并归类在缓存代理类型中。

缓存的有效期限: 缓存工作会涉及到被缓存资源的有效性问题。如果服务器上的资源更新、或者客户端要求等,缓存资源会存在失效的情况。若判断缓存失效,缓存服务器将会再次从源服务器上获取”新“资源。

客户端的缓存: 缓存除了可以缓存在缓存服务器内,还可以缓存在客户端浏览器中,被称为临时网络文件。浏览器缓存如果有效,就可以直接从本地磁盘读取。另外当判定缓存过期后,会向源服务器确认资源的有效性。若缓存失效,浏览器会再次请求新资源。

文章中所有知识点均来自《图解HTTP》 😃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值