HTTP协议(一)

HTTP:无状态协议。即不保存状态,不对请求和响应之间的通信状态进行保存。

优点:更快处理大量事务,确保协议的可伸缩性。

一、HTTP方法

1.1 GET(查询)

获取资源。请求访问已被URI识别的资源,指定资源经服务器端解析后返回响应内容,即请求资源是文本,原样返回;类似CGI(通用网关接口)的程序,返回执行后的输出结果。

1.2 POST(新增)

传输实体主体。

1.3 PUT(更新)

传输文件。即类似FTP协议,在请求报文主体中包含文件内容,然后保存到请求URI指定位置。

1.4 DELETE(删除)

删除文件。按请求URI删除指定资源。

1.5 HEAD

获取报文首部。和GET方法一样,只是不返回报文主体部分;用于确认URI的有效性及资源更新日期时间等。

1.6 OPTIONS

询问支持方法。即寻求服务器支持哪些请求方法(如支持GET、PUT等)

1.7 TRACE

追踪路径。让Web服务器端将之前的请求通信环回给客户端。

原理:发送请求,在Max-Forwards首部字段中填入数值,每经过一个服务器该数值-1,当数值为0时,停止传输,最后接受到请求的服务器端返回状态码200.

应用:通过该方法可查询发送出去的请求是怎样被加工修改/篡改的。

注:不常用,易引起XST(Cross-Site Tracing,跨站追踪)攻击。

1.8 CONNECT

要求用隧道协议连接代理。与代理服务器通信时建立隧道,实现隧道协议进行TCP通信;主用SSL(安全套接层)和TLS(传输层安全)协议将通信内容加密后经网络隧道传输。

{自己理解,类似在客户端与服务器端建立一个通信隧道,当发该请求时,中间有一个类似代理服务器将其加密然后走该通信隧道。}

二、Cookie技术

为保留HTTP无状态特征,且解决需要登录认证的Web页面进行状态管理而引入。

原理:通过在请求和响应报文中写入Cookie信息来控制客户端状态。

          1. 即Cookie会根据从服务器发送的响应报文内的一个Set-Cookie的首部字段信息,通知客户端保存Cookie。

          2. 下次客户端给服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送。

         3. 服务器端发现客户端发送的Cookie后,检测那个客户端发送的请求链接,并对比服务器上记录,后得到之前状态信息。

三、HTTP报文

概念:用于HTTP协议交互的信息被称为HTTP报文。通信中最小单位,8位组字节流组成。

构成:由多行(用CR+LF作换行符)数据构成的字符串文本。分报文首部和报文主体两块;由最初出现空行(CR+LF)划分,并不一定有报文主体。

          请求端(客户端):请求报文

          响应端(服务器端)响应报文

报文结构
详细报文结构

四、HTTP的传输

4.1 实体

实体:请求或响应的有效载荷数据(补充页)被传输,其内容由实体首部和实体主体组成。

HTTP主体用于传输请求或响应实体主体。常报文主体=实体主体,传输中编码操作(传输中通过编码提升传输速率,编码由计算机完成,消耗CPU资源),实体主体内容发生变化,才使其存在差异。

4.2 传输中的编码类型

  4.2.1 压缩传输内容编码

  内容编码:应用在实体内容上的编码格式,并保持实体信息原样压缩;内容编码后的实体由客户端接收并负责解码。(类似压缩包,将信息压缩)

  种类:gzip(GNU zip)、compress(UNIX系统的标准压缩)、deflate(zlib)、identity(不进行编码)

  4.2.2 分割发送的分块传输编码

  传输大容量数据时,把数据分割成多块,每块用十六进制来标记大小,实体主体最后一块使用“0(CR+LF)”标记;

  应用:通信过程中,请求的编码实体资源尚未全部传输完成之前,浏览器无法显示请求页面,分块传输可让浏览器逐步显示页面。

  4.2.3 发送多种数据的多部分对象集合

  该方法可发送一份报文主体内含多类型实体。使用时需在首部字段里加Content-type。

  应用:图片或文本文件等上传。

  所包含对象

        1. multipart/form-data:Web表单文件上传时使用

        2.multipart/byteranges:状态码206响应报文包含了多个范围的内容。

  4.2.4 获取部分内容的范围请求

  指定范围发送的请求。首部字段Range指定资源byte范围。

  响应:返回状态码为206的响应报文;多重范围的范围请求,响应会在首部字段Content-Type标明multipart/byteranges后返回响应报文;如无法响应范围请求则返回状态码200 ok和完整实体内容。

  应用:为解决下载中断,实现一个恢复机制,即从之前中断处恢复下载。

  4.2.5 内容协商返回最合适的内容

  内容响应机制:客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。

  应用:同一个网站可能存在多份相同内容的页面,访问相同的URI的Web页面时,根据浏览器默认语言返回内容。

  技术:

        1.服务器驱动协商

                  由服务器端进行内容协商。请求首部字段为参考,服务器端自动处理。

       2.客户端驱动协商

                 由客户端进行内容协商的方式。用户从浏览器显示的可选列表中手动选择;Javascript脚本在页面上自动进行上述选择。

                 应用:按照os类型或浏览器类型,自行切换PC版页面或手机版页面。

       3.透明协商

               服务器驱动和客户端驱动结合体,由服务器端和客户端各自进行内容协商的一种方法。

五、状态码

客户端向服务器端发送请求时,描述返回的请求结果。
构成:3位数字+原因短语

状态码类型

5.1 2XX 成功

请求被正常处理。

  5.1.1 200 OK

  请求被服务器正常处理。

  5.1.2 204 No Content

  服务器接收到的请求已成功处理,但返回响应报文中不含实体的主体部分。如返回204则浏览器显示页面不发生更新。

  应用:只需客户端给服务器发送信息,客户端不需要发送新信息内容

  5.1.3 206 Partial Content

  客户端进行范围请求,服务器成功执行该请求。

5.2 3XX重定向

浏览器需要执行某些特殊的处理以正确处理请求。

  5.2.1 301 Moved Permanently

  永久性重定向。即请求资源已被分配新的URI,以后使用资源现在所指URI。

  5.2.2 302 Found

  临时重定向,即请求的资源已被分配新的URI,希望本次访问使用新的URI。

  5.2.3 303 See Other

  表示请求对应的资源存在另一个URI,应使用GET方法定向获取请求资源。

  区别:和302有相同的功能,但303明确表示客户端采用GET方法获取资源。

  5.2.4 304 Not Modified

  客户端发送附带请求时,服务器允许请求访问资源,但不满足条件。返回时不包含任何响应主体部分。 附带条件:GET方法的请求报文中含If-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since任一首部。

  5.2.5 307 Temporary Redirect

  临时重定向。

  区别:302有相同功能,307遵照浏览器标准,不会从POST变成GET,处理响应行为,每种浏览器不同。

5.3 4XX客户端错误

客户端是发送错误的原因所在。

  5.3.1 400 Bad Request

  请求报文中存在语法错误。浏览器会像200一样对待状态码。

  5.3.2 401 Unauthorized

  发送请求需通过HTTP认证(BASIC、DIGEST认证)的认证信息,如请求过1次,则表示用户认证失败。

  5.3.3 403 Forbidden

  请求资源被服务器拒绝,服务器没有必要给出拒绝的详细理由。如果想作说明,可以在实体的主体部分对原因进行描述。

  5.3.4 404 Not Found

  服务器上无法找到请求资源,可用与服务器端拒绝请求且不想说明理由。

5.4 5XX服务器错误

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

  5.4.1 500 Internal Server Error

  服务器端在执行请求时发生错误,可能Web应用存在bug或某些临时故障。

  5.4.2 503 Service Unavailable

  服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

六、通信数据转发应用程序

将请求转发给通信线路上的下一战服务器,且可接收从那台服务器发送的响应在转发给客户端。

源服务器:持有资源实体的服务器。

6.1 代理

一种有转发功能的应用程序,中间人角色,接收由客户端发送的请求转发给服务器,接收服务器返回响应转发给客户端。不改变请求URI,会直接发送给前方持有资源的目标服务器。每通过代理服务器转发请求或响应,会追加写入Via首部信息,以标记经过的主机信息。

优点:利用缓存技术减少网络带宽的流量;组织内部针对特定网站的访问控制;获取访问日志为主要目的。

方法:使用缓存、是否会修改报文

  6.1.1 缓存

  代理服务器或客户端本地磁盘内保存的资源副本。
  作用:减少对源服务器的访问,节省通信流量和时间。

  6.1.3 缓存代理

  转发响应时,会预先将资源缓存保存在代理服务器上。当代理再次接收到对相同资源的请求时,就将缓存的资源作为响应返回。
  优点:避免多次从源服务器转发资源,客户端可就近从缓存服务器上获取资源,源服务器不用多次处理相同请求。
  有效期:并不是每次请求均获取的是缓存数据,因为缓存存在有效期,有效期结束,存储缓存将失效,重新像源服务器发出相同请求获取数据。
  客户端缓存(临时网络文件):存在与客户端浏览器中的缓存信息。同样存在有效期,有效期结束需要重新获取。

  6.1.3 透明代理

  转发请求或响应时,不对报文做任何加工的代理类型。

  非透明代理:对内容进行加工。

6.2 网关

转发其它服务器通信数据的服务器,接收从客户端发送来的请求,就像自己用于资源的源服务器一样对请求进行处理。有时客户端可能都无法察觉,自己通信目标是一个网关。

网关可将HTTP请求转化为其它协议通信,提高通信的安全性,可在客户端与网关之间通信线路上加密以确保连接安全。

实例:网关可连接数据库,可和信用卡结算系统联动。

6.3 隧道

在相隔甚远的客户端和服务器两者之间进行中转,保持双方通信连接的应用程序。

可按要求建立与其它服务器的通信线路,使用SSL等加密手段进行通信。隧道保持原样中转信息,双方通信端开连接时结束,其本身透明,客户端不用在意其存在。

目的:确保客户端能与服务器进行安全的通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值