HTTP协议解析-HTTP总揽

Web之http协议(二) 一、http协议的简介 1.在一条通信线路上,使用http协议进行通信。必定会有一方是客户端,另一方是服务器端,它们之间可以互换。 2.http协议规定,通信的双方,必定是客户端发起请求,服务器端响应该请求并且做出返回。 3.http协议是一种无状态的协议,它不会保留任何状态。因此不会做持久化处理。为了使得日益强大的web得到满足,人们引入了cookies,这样子使得http请求有了状态管理 4.http协议利用URI去定位资源。这个URI(资源定位符)可以是URL也可以是URN。但是必须通过这一个URI找到相应的资源。 5.http协议规定了客户端请求服务器端必须说明清楚请求方法(GET,POST,PUT,HEAD,DELETE,OPTIONS,TRACE,CONNECT),并且使用方法对服务器端下达命令。 6.http一开始的版本中,没进行一次http请求就要一次tcp连接。随着http的广泛应用,这样会导致效率低下。从http1.1开始,就使用了持久连接(HTTP keep-alive),持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。持久连接旨在建立 1 次 TCP 连接后进行多次请求和响应的交互。 7.持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求二、http报文内的http信息 1.http协议用报文进行信息的交互,客户端发出的报文叫请求报文,服务器端发出的报文叫响应报文。报文由报文首部与报文主体构成,通常http协议可以没有报文主体。 输入图片说明 2.请求报文与响应报文都是由请求行,状态行,首部字段,其他(RFC未定义的首部字段)组成的 输入图片说明 三、http报文的传输 1.编码传输:HTTP 在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量的访问请求。但是,编码的操作需要计算机来完成,因此会消耗更多的 CPU 等资源。内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。常见的编码方式有:gzip,compree,deflate,identity(不编码进行传输) 2.分割发送的分块传输编码:在 HTTP 通信过程中,请求的编码实体资源尚未全部传输完成之前,浏览器无法显示请求页面。在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。分块传输编码会将实体主体分成多个部分(块)。每一块都会用十六进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标记。使用分块传输编码的实体主体会由接收的客户端负责解码,恢复到编码前的实体主体。 3.发送多种数据的多部分对象集合:HTTP 协议中也采纳了多部分对象集合,发送的一份报文主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。

四、http内容的返回机制 1.获取部分内容的范围请求:网速不好的时候,下载一个较大的图片或文件时候会很吃力。这时候http协议可以指定范围请求。对于一个1000字节的文件,我们可以只请求1-500字节,也可以请求500-1000字节的内容。这时候服务器就按照我们的要求返回内容。 2.内容协商返回最合适的内容:内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。比如一个网页有英文版和中文版,内容虽然一致但是语言不一致。这时候如果浏览器默认是中文编码的,那么服务器返回的也是中文。协商机制有服务器驱动协商,客户端驱动协商,透明协商(是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法)。

五、返回结果的 HTTP 状态码

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。 状态码的类型: 输入图片说明 一些常见的状态码: 2XX表示请求被成功处理 (1)200 OK 表示请求被服务器正常处理 (2)204 NO CONTENT 表示请求被正常处理但是没内容返回 (3)206Partial Content 表示请求被正常处理,但只返回一部分内容

3XX 表示请求重定向 (1)301 Moved Permanently 永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。 (2)302 Found 临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。 (3)303 See Other 该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。 (4)304 Not Modified 该状态码表示客户端发送附带条件的请求 时,服务器端允许请求访问资源,但未满足条件的情况。 (5)307 Temporary Redirect 该状态码与 302 Found 有着相同的含义。

4XX 客户端错误 (1)400 Bad Request 该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。 (2)401 Unauthorized 该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。另外若之前已进行过 1 次请求,则表示用 户认证失败。 (3)403 Forbidden 该状态码表明对请求资源的访问被服务器拒绝了。 (4)404 Not Found 该状态码表明服务器上无法找到请求的资源。

5XX 服务器错误 (1)500 Internal Server Error 该状态码表明服务器端在执行请求时发生了错误。也有可能是 Web 应用存在的 bug 或某些临时的故障。 (2)503 Service Unavailable 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。 六、web服务器与HTTP协议的协作 1.单台虚拟主机搭建多个站点:HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站点。 2.通信数据转发程序 :代理、网关、隧道:HTTP 通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如代理、网关和隧道。它们可以配合服务器工作。 (1)代理:代理在客户端与服务器中中扮演中间人角色,他可以把客户端的请求转发给服务器,也可以把服务器的响应转发给客户端。使用代理服务器的理由有:利用缓存技术(稍后讲解)减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的,等等。代理有多种使用方法,按两种基准分类。一种是是否使用缓存,另一种是是否会修改报文。 (2)网关:网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。网关的工作机制和代理十分相似。而网关能使通信线路上的服务器提供非 HTTP 协议服务。利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。 (3)隧道:隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。隧道可按要求建立起一条与其他服务器的通信线路,届时使用 SSL 等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。隧道本身不会去解析 HTTP 请求。也就是说,请求保持原样中转给之后的服务器。隧道会在通信双方断开连接时结束。

延伸部分:缓存 1.缓存是指代理服务器或客户端本地磁盘保留的一份数据。那么客户端下次请求时不用请求原服务器,因此节省流量与时间。 2.缓存的有效期限,缓存具有有效期限。如果不及时更新就会变成了旧缓存,影响用户使用。所以使用缓存要慎重。

由睿江云人员提供,想了解更多,请登陆www.eflycloud.com

转载于:https://my.oschina.net/u/3363053/blog/1527531

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值